您的位置  > 互联网

虚拟机跟宿主机之间能双向通信,双网卡教程

如果你想学习Linux,你必须需要网络,所以host-only也被淘汰了。

看起来只剩下nat了,但是nat有问题。 主机无法访问虚拟机。

这是什么意思? 它不能再使用了。 你必须忍受丑陋的Linux界面。 它无法被复制。 输入中文很困难。 这些不能再使用了。

哦,还有,比如同步开发的SSH连接是不能使用的。

从这一点来看,似乎不仅需要允许虚拟机访问互联网,还需要允许虚拟机和宿主机之间的双向通信。 所以,这个时候,线上的解决方案就是双网卡。

比如下面的教程:

这个想法也很简单。 将第一个网卡设置为host-only,以便主机可以访问虚拟机,将第二个网卡设置为NAT以访问。

不过,这个方法似乎有点困难。 至于我的方法,前面的图其实都是剧透。

首先是我的虚拟机的地址,

10.0.2.15,无法ping通该地址。

这时候我正在桥接互联网,我的网络是开放的。

此时,在主界面选择虚拟机,然后点击【设置】-【网络】,打开上述界面。

然后选择【端口转发】

此时,您不需要查看底部两项。 我只是做了一个临时端口映射来运行其他服务。 看第一条规则,我将127.0.0.1(主机)的端口2222映射到10.0.2.15(虚拟机)的端口22。 端口 22 是默认的 ssh 端口。 这时我的主机就可以通过 22 端口访问虚拟机了。

输入ssh 2222访问本机2222端口,会自动映射到虚拟机上。 同理,mysql的3306等端口也可以映射出来。

输入账号密码后,即可成功登录,并实现NAT 模式下的双向通信。

不过值得注意的是,我在调试flask框架的时候遇到了一个问题。 我监控的IP地址只设置为127.0.0.1,即主机。 此时服务器只会监听10.0.2.15头中的源IP地址。 从主机发送的数据包的标头为10.0.2.2(我不知道为什么,这是默认值),因此它们将被丢弃。 将ip改为0.0.0.0,自动监听所有ip发送的数据包,问题解决。

这些也是我自己的学习笔记。 如果有什么不对的地方,欢迎大家在评论区指出。