wsl2默认是nat模式, 其实和vm 的nat模式一样

有时候怀疑自己, 为什搞好了网络下次又会遇到问题

我自一致陷入了一个错误的思维模式: 尽量让我的宿主机和虚拟机位于统一网段, 其实这个思想如果我们使用的桥接模式, 这个自然没有任何问题, 但是我们往往使用nat模式, nat默认本来就是用来连接两个网络, 如果我们让我们的虚拟机和宿主机位同一个网段, 那意味着什么?

举个例子
vm ip : 192.168.1.100
host ip : 192.168.1.200

那么我们的网关就一般是这样的
vm gw: 192.168.1.1
host gw : 192.168.1.1

这样看似没有问题, 但是由于网关host优先级高些, 就会出现hsot可以ping 虚拟机, 但是虚拟机配置的网关实际失效了, vm无法ping hsot

所以思路要纠正过来, nat就是用来连接两个网段的, 我们尽量不要和宿主机处于同一个网段下

其次配置时候要注意, vmnet8就是nat使用的虚拟网卡

假设我们 ip地址如下
vm ip: 192.168.2.3
host ip: 192.168.1.3

并且我们的hsot的网关: 192.168.1.1

那么我们的vmnet8应该配置: 192.168.2.1
在这里插入图片描述
注意vmware下还有配置, 网段应该配置192.168.2.0/24
网关应该配置192.168.2.2(因为192.168.2.1被虚拟网卡占用了, 这个也是vmware推荐配置, 千万不要改成了192.168.2.1, 我之前不懂事, 总喜欢改成1, 只要不和虚拟网卡以及虚拟机ip地址冲突都可以配置, 总之虚拟网卡和虚拟主机的网关可以任意设置值, 只要不冲突即可)

在这里插入图片描述

其实我们发现, 我们让处于统一个网段的不是vm和宿主机
而是虚拟网卡和我们vm处于同一个网段下面. 我们vm和虚拟网卡通讯, 虚拟网卡通过本地注册的路由表找到宿主机来和宿主机通讯

注意: 如果你尝试测试各种配置, 记得要重启网络, 不知道什么原因, 有时候自动生效, 有时候不生效, 开始测试很多情况错误导致我判断错误
ubuntu重启命令可以用

service networking restart
如果没有这个命令
可以使用
ifconfig ens33 down
ifconfig ens33 up
还有其他方式, 可以上网查下

centos

service network restart
systemctl restart network

总结一句话就是: 不同网段, 通过虚拟网卡和宿主机通讯

GitHub 加速计划 / ws / WSL
17.09 K
797
下载
Issues found on WSL
最近提交(Master分支:1 个月前 )
86fa5afa 2 个月前
e899d0b7 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐