同一局域网下的两台宿主机上的vmware虚拟机使用nat网络适配器,进行基于c/s下的socket,tcp通信。

本文介绍了局域网下设备通过NAT模式实现虚拟机通信的方法。不同局域网需两次端口转发,同一局域网只需一次。阐述了端口转发原理,给出实现步骤,包括编写socket程序、关闭防火墙、开启网络连接等,还提及宿主机通信测试及桥接模式对比。

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

在两台局域网下的两台设备,判断局域网的方法是看是否处于同一物理连接。如果不在同一局域网下要实现nat模式下的虚拟机通信,

进行两次端口转发:

  1. 虚拟机到宿主机的端口转发:首先,你需要在每台计算机上设置端口转发,以便将虚拟机的网络流量转发到宿主机。这通常是通过虚拟机软件(如VMware或VirtualBox)的设置来完成的。

  2. 宿主机到外部网络的端口转发:其次,你需要在每台计算机所连接的路由器上设置端口转发,以便将宿主机的网络流量转发到外部网络。这通常是通过访问路由器的管理界面并在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模式也是一个很好的方法。他安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

abgreat

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

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

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

打赏作者

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

抵扣说明:

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

余额充值