记录:win10物理机ping不通虚拟机上的docker子网(已解决)

该博客围绕使Win10物理机与虚拟机上的Docker容器相互ping通展开。介绍了实验环境,分析出Win10 ping不通Docker是因无对应网段路由。经一系列操作,最后开启Linux防火墙后实现互访,关闭防火墙仍可互访,但博主不知底层原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【说明】

windows10:已关闭防火墙

linux发行版本:centos7.9(已禁用SElinux、已关闭防火墙)

虚拟机软件:VMware Workstation 17

虚拟机网络模式:NAT模式

docker版本:20.4.5

docker网络模式:桥接模式

相关IP地址:

win10(VMnet8网卡)192.168.5.1/24
centos7.9(ens33网卡)192.168.5.136/24
docker0172.17.0.1/16
容器(busybox)172.17.0.2/16

关系图:

 【目的】

使win10物理机与虚拟机上的docker容器(busybox)能够相互ping通访问。

【分析】

此时win10与linux与docker之间,除了win10ping不通docker,其余两两均可ping通,原因是win10上没有到达172.17.0.0/16网段的路由,需要手动添加。

【操作】

在win10上以管理员身份运行cmd,输入命令:

route add 172.17.0.0 mask 255.255.0.0 192.168.5.136

输入命令 route print 查看路由表:

此时ping 172.17.0.2却还是不通,理论上此时是可通的

尝试ping 172.17.0.1(linux上的docker0网卡),可通

在尝试过网上的各种办法后都没有解决这个问题,最后尝试在linux上开启防火墙,发现可以ping通:

 我又尝试再次关闭防火墙之后再ping:

发现还是可通的。

【结论】

到这里虽然表面上达到了实验目的,但对于这一现象博主目前还是不知道其底层原因。

希望大佬能够指点一二。

### 配置 CentOS 7 虚拟机访问 Windows 10 宿主机上的 ollama 服务 为了使 CentOS 7 虚拟机能够成功访问运行于 Windows 10 上的服务,特别是像 ollama 这样的特定应用服务,通常需要考虑几个方面: #### 网络模式的选择 对于虚拟化环境而言,在 VMware 中采用 NAT 模式的网络配置方式类似于 Docker 的默认桥接网络设置。在这种情况下,容器或者虚拟机会被赋予一个独立的 network namespace,并且通过连接至 docker0 或者类似的虚拟网卡来实现与外部世界的通讯[^1]。 当选择 VMWare 的 NAT 模式时,这意味着虚拟机能自动获取由 VMware 提供的一个私有 IP 地址范围内的地址,默认情况下该子网下的设备可以通过宿主机作为网关来进行互联网访问。然而,要让虚拟机直接访问宿主机上监听本地回环接口(`localhost`/`127.0.0.1`)的应用程序,则需进一步调整防火墙规则或更改应用程序绑定地址使其不仅限于 localhost。 #### 修改 Ollama 服务绑定地址 如果 ollama 是仅绑定了 `127.0.0.1` (即只接受来自本机内部请求),那么就需要修改其配置文件使得它能够在所有可用网络接口上监听(通常是将绑定地址改为 `0.0.0.0`),这样才能接收到来自其他机器发出的数据包。 #### 设置端口转发 为了让位于不同物理位置甚至跨越多个逻辑隔离层之间的两台计算机之间建立有效的 TCP/IP 流量交换路径,可以利用 VMware Workstation Player 自带的功能——NAT 端口映射功能。具体操作如下: - 打开 VMware Network Editor (`vmnetcfg.exe`) - 编辑 vmnet8(NAT)适配器属性 - 添加新的端口转发条目,指定目标协议(TCP/UDP), 外部端口号, 内部 IP(这里应填写 Win10 主机的真实局域网 IP),以及对应的内部端口号 另外一种方法是在 Windows Firewall with Advanced Security 控制面板里创建入站规则允许特定端口流量进入并指向相应进程;同时确保没有软件层面的安全防护措施阻止这些数据传输过程。 ```bash firewall-cmd --zone=public --add-port=<port>/tcp --permanent firewall-cmd --reload ``` 上述命令适用于 CentOS 7 来开放必要的端口以便通信正常进行。 #### 验证连通性 完成以上步骤之后,可以在 CentOS 终端执行 ping 命令测试能否到达宿主机的实际 LAN IP 地址,接着尝试 telnet 到预期的服务端口验证是否可建立连接。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俗人不俗鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值