在两台局域网下的两台设备,判断局域网的方法是看是否处于同一物理连接。如果不在同一局域网下要实现nat模式下的虚拟机通信,
进行两次端口转发:
-
虚拟机到宿主机的端口转发:首先,你需要在每台计算机上设置端口转发,以便将虚拟机的网络流量转发到宿主机。这通常是通过虚拟机软件(如VMware或VirtualBox)的设置来完成的。
-
宿主机到外部网络的端口转发:其次,你需要在每台计算机所连接的路由器上设置端口转发,以便将宿主机的网络流量转发到外部网络。这通常是通过访问路由器的管理界面并在NAT或端口转发部分进行设置来完成的。
这样,当一个虚拟机想要与另一个虚拟机通讯时,流量首先会从虚拟机转发到宿主机,然后从宿主机转发到外部网络,最后到达另一台计算机的宿主机,再从那里转发到目标虚拟机。
但是我手里的两台设备都用的学校的wifi,所以处于同一台局域网下,只需要一次端口转发,一次宿主机到虚拟机的端口转发。
端口转发原理:因为在nat模式下,许多设备公用一个ip,所以当这些设备要跑服务器代码的时候,外部ip没办法通过这个ip来找到他,只能通过端口转发,比如使用端口50001,当外部ip访问公用ip的50001端口的时候,就自动的到我设置的ip、端口号下。
实现步骤,第一步需要socket服务器程序和客户端程序。
2.关闭防火墙。这是一刀切的方法,干脆全关了。这样节约时间,但是不建议使用。
3.开启网络连接:
使用你搜连接的网络,点击属性:
在共享界面下,把两个勾都打上,同时在家庭网络连接下,选择我们虚拟机上的nat网络vmnet8
然后在网络适配器页面选择vmnet8点击属性,点击internet协议版本4的属性。就可以看到ip地址,把该ip地址记住,复制到:
看到下面有一个子网ip和一个子网掩码,子网掩码是一样的,子网ip前三位是一样的,最后一位一般为0.然后点击nat设置进行端口转发:
网关ip前三位也是一样的,最后一位一般为2,然后点击添加,就可以进行端口转发了。
然后在设置了的电脑上运行服务器程序,服务器端口号选择8989,客户端的ip地址要给宿主机的ip地址,已经端口号50001,当客户端找到ip地址的50001端口时,他就会自动转到虚拟机的192.168.137.128的8989端口号上,两台就能够通信了。
宿主机的ip地址为win+r下输入cmd进入命令行输出ipconfig,可以先在两台电脑上相互测试,ping+ip地址能否通信,在能够通信的情况下在进行虚拟机的通信,如果两台宿主机都不能正常通信,那虚拟机更不能了,这一步应该在最开始的时候测试。如果不能通信,有可能是开了vpn、防火墙限制、不在同一局域网等等原因。
当然,用桥接模式不用这么麻烦,但是nat模式也是一个很好的方法。他安全。