请教一个如何配置局域网固定机器与虚拟机互访的问题

2020-12-21 11:05:26 +08:00
 flamhaze5946

我有两台物理机 AB, A 用作便携式虚拟机集群, B 用作互联网提供端.

A 是 Win10 系统, 通过 Hyper-V 虚拟若干台在同一内部交换机 192.168.20.0/24 的虚拟机, A 作为其网关, 地址为 192.168.20.1

A 有一张物理网卡, 它是网口网卡, 用于连接 B 实现互访, 地址为 192.168.15.2/24, 网关设置为 192.168.15.1/24.

B 是 Windows 或 Mac 系统, 有两张物理网卡, 一张是无线网卡用于连接互联网, 一张是网口网卡用于连接 A, 地址是 192.168.15.1/24, 系统配置无线网卡将网络共享给网口网卡.

B 设置了 route 192.168.20.0 mask 255.255.255.0 192.168.15.2 A 设置了 route 192.168.10.0 mask 255.255.255.0 192.168.15.1

以上设置后 A 中虚拟机能够 ping 通 B, 但是 B 并不能 ping 通 A 中的虚拟机. 在 A 中 ping -S 192.168.15.2 192.168.20.1 也不能 ping 通.

请问下这种场景有什么好的解决方案吗???谢谢啦!

2234 次点击
所在节点    宽带症候群
24 条回复
Tianao
2020-12-21 11:17:31 +08:00
能 ping 通证明双向路由都没问题,建议检查防火墙配置是否响应 ICMP Echo request 或者先行以 192.168.20.1 作为源地址 ping 同段虚机测试。
flamhaze5946
2020-12-21 11:23:29 +08:00
@Tianao
我把防火墙中的 ICMP 拦截都关闭了.
A 和 B 在 192.168.15.0/24 能互相 ping 通的, 同时宿主机 A 也能 ping 通虚拟机.
但是 B 不能 ping 通 A 的 192.168.20.1 地址, 也不能 ping 通 A 中的虚拟机.
Tianao
2020-12-21 11:28:51 +08:00
B 上路由跟踪一下 192.168.20.1 看看?
flamhaze5946
2020-12-21 11:57:59 +08:00
@Tianao B 上使用 tracert 显示的是 * * * 超时
Tianao
2020-12-21 12:36:13 +08:00
第一跳是 192.168.15.2 并且显示 *?是不是 Hyper-V 给虚机网络做了源 NAT ?
ungrown
2020-12-21 13:08:23 +08:00
初步感觉是 NAT +1
flamhaze5946
2020-12-21 13:58:46 +08:00
@Tianao
第一跳没有显示 192.168.15.2, 而是直接显示的 * * * 超时
这张网卡是 Hyper-V 创建出来的虚拟网卡, 要怎么看是不是源 NAT 呢?
flamhaze5946
2020-12-21 13:59:43 +08:00
@ungrown
可以详细说说吗, 我一个周末都还没弄好 = =
谢谢
zerohzd
2020-12-21 17:02:06 +08:00
别找别人的图。。自己手绘个拓扑,标好网卡和 IP

如果 192.168.15.0/24 网段的 IP 可以自己管理的话,全部的虚拟机网卡改桥接,IP 都配在 192.168.15.0/24,默认网关用 192.168.15.1
sujin190
2020-12-21 18:01:14 +08:00
Hyper-V 安装的虚拟机默认使用的内部网络是 nat 模式吧,外部 ping 肯定 ping 不通啊,你应该改为外部网络使用 A 的物理网卡,然后内部主机就能获取到 192.168.15.0/24 的地址了吧,和 B 在同一个网络肯定就可以 ping 通了
sujin190
2020-12-21 18:02:18 +08:00
nat 模式下想访问内部主机需要端口转发的吧,但是 windows 的端口转发似乎不是很好设置
cpstar
2020-12-21 18:59:32 +08:00
目测是 IP 转发的问题,设置了路由表,也只能解决 PC1 往两个网段的互通问题。
至于 PC1——如果是 Windows 系统的话——设置 IP 转发好像比较复杂,可能需要开启路由功能,相当于 Windows 作为路由器存在于两个网段中间,而 Linux 则简单的多,echo 1 > /proc/sys/net/ipv4/ip_forward,或者 sysctl -p net.ipv4.ip_forward=1 即可
或者就在 PC1 上做 NAT,把内网的服务映射到网卡 B 上

以上仅就图片内容论述,文字内容跟图片好像对不上,懒得仔细看了
flamhaze5946
2020-12-22 10:00:57 +08:00
@zerohzd
好的, 不过虚拟机不能用 192.168.15.0/24, 因为这个网卡一旦没有插线会丢失 IP, 不能做网关.
flamhaze5946
2020-12-22 10:02:19 +08:00
@sujin190
不能使用物理网卡, 因为虚拟机内部通信不能断, 需要一个可靠的网关, 物理网卡一旦没有连接外部设备就会失去做网关的资格...
flamhaze5946
2020-12-22 10:03:06 +08:00
@cpstar
正解, 昨天晚上我打开了宿主机的软路由功能, 然后就通了 = =
flamhaze5946
2020-12-22 15:45:08 +08:00
@cpstar
今天在公司机器上试了下, 公司机器 mac 作为 B, B 开启了路由转发.
B 中也运行有虚拟机, B 中的虚拟机可以 ping 通 A 中的虚拟机, 但是 A 中的虚拟机不能 ping 通 B 中的虚拟机, 有没有可能是安全策略导致的呢? 因为即使我有管理员权限, 但是仍然无法关闭防火墙中的禁 ping 规则...
B 通过 route add -net 192.168.30/24 -gateway 192.168.15.2 -link 192.168.15.1 语句添加路由后, 部分网络访问出现了问题, 同时路由表中新增项为 0.0.4&0x3040 192.168.15.2 UGSc en8, 而不是 192.168.30/24 192.168.15.2 UGSc en8, 请问下 0.0.4&0x3040 和 192.168.30/24 有什么关系呢, 网络访问问题是否是出在这个 0.0.4&0x3040 上呢, 如果要正确添加路由应该用什么命令...谢谢~
flamhaze5946
2020-12-22 16:28:06 +08:00
@cpstar
又试了下, 不加-link 就不会出现网络问题, 我也忘了是哪里看到的加一个-link 了, 是为了指定网卡...
cpstar
2020-12-22 16:32:13 +08:00
@flamhaze5946 16#
route add -net 192.168.30/24 -gateway 192.168.15.2 -link 192.168.15.1
第一个-net 写的是 192.168.30/24,应该是 192.168.30.0/24,少了一个.0 ?

另外
A 的虚机网是 192.168.20.0/24,本机网关 20.1,外网是 192.168.15.2
B 的虚机网是 192.168.30.0/24,本机网关 30.1,外网是 192.168.15.1
我的理解对么?
flamhaze5946
2020-12-22 21:50:15 +08:00
@cpstar
mac 上的语法可以不用写全, 会自动补 0, 我之前是加了-link 这个参数后才出现奇怪的路由条目的, 不加就没事了。

A 的虚拟机组是 192.168.30.0/24, 网关 192.168.30.1; 网口 IP 192.168.15.2
B 的虚拟机组是 192.168.20.0/24, 网关 192.168.20.1; 网口 IP 192.168.15.1

我觉得是 B 的路由转发设置因为公司策略无法生效, 要不然没道理从 A 出来的去往 192.168.20.0/24 的请求会超时, 但反过来不会。。。
cpstar
2020-12-23 09:30:17 +08:00
@flamhaze5946 19# trace 一下呢?我觉得你公司的网络应该不会限制这个东西,除非限制了 icmp 包,如果 15.2 与 15.1 直接连接,那公司网络根本不会产生影响。
这么判断一下,用 30.x 的去 ping 20.x 的,看数据包有没有达到 15.1,可以在 15.1 上 tcpdump 拦包,甚至尝试发起 tcp 连接(有可能交换机禁止了 icmp )
if 收到
> B 上没有实现路由转发
> 继续在 20.1 上做拦包以确认没有实现转发
else if 没收到
> A 上没有实现路由转发
> 在 15.2 上拦包以确认没有实现转发

反向 20.x->30.x 如果问题类似,则在 15.2 上拦包做类似工作

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX