我正在配置内部网络使用 Virtual Box 和 4 台虚拟机。我已经配置了所有接口,并稍微弄乱了IP 转发和IP伪装在 Host 上,这将是路由器。
路由器有两个以太网接口:一个连接HostC,另一个连接HostA和HostB。
我做错了什么如果主机C能够 ping 通主机 A 和 B但主机 A 和 B无法 ping 通主机C。应该是路由器配置。
答案1
为了诊断此处的问题,您确实应该在帖子中添加更多信息,我将其作为答案添加以澄清问题,因为有一些命令可以尝试诊断此问题,但在评论中阅读起来会很困难。请在路由器上运行这些命令并报告输出,这将有助于了解您的网络设置和配置并识别问题:
列出接口:
ip link show
列出接口转发状态:
sysctl -a | grep forwarding
列出接口地址:
ip addr show
ip -6 addr show
列出防火墙规则:
iptables -L
ip6tables -L
列出 NAT 规则:
iptables -t nat -L
ip6tables -t nat -L
另外,请检查路由器本身是否可以访问所有主机:
ping -c4 HostA
ping -c4 HostB
ping -c4 HostC
当然,要用主机的 IP 地址替换 HostA/B/C,这是一个重要的步骤,因为如果这里存在问题,那么在尝试担心子网之间的路由之前,需要先解决这个问题。
答案2
ip link show
结果:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:90:2d:e5 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:d4:ac:c1 brd ff:ff:ff:ff:ff:ff
一切看上去都很好。
sysctl -a |grep forwarding
结果:
net.ipv4.conf.all.forwarding = 1 net.ipv4.conf.all.mc_forwarding = 0 net.ipv4.conf.default.forwarding = 1 net.ipv4.conf.default.mc_forwarding = 0 net.ipv4.conf.eth0.forwarding = 1 net.ipv4.conf.eth0.mc_forwarding = 0 net.ipv4.conf.eth1.forwarding = 1 net.ipv4.conf.eth1.mc_forwarding = 0 net.ipv4.conf.eth2.forwarding = 1 net.ipv4.conf.eth2.mc_forwarding = 0 net.ipv4.conf.lo.forwarding = 1 net.ipv4.conf.lo.mc_forwarding = 0 net.ipv6.conf.all.forwarding = 0 net.ipv6.conf.all.mc_forwarding = 0 sysctl: reading key "net.ipv6.conf.all.stable_secret" net.ipv6.conf.default.forwarding = 0 net.ipv6.conf.default.mc_forwarding = 0 sysctl: reading key "net.ipv6.conf.default.stable_secret" net.ipv6.conf.eth0.forwarding = 0 net.ipv6.conf.eth0.mc_forwarding = 0 sysctl: reading key "net.ipv6.conf.eth0.stable_secret" net.ipv6.conf.eth1.forwarding = 0 net.ipv6.conf.eth1.mc_forwarding = 0 sysctl: reading key "net.ipv6.conf.eth1.stable_secret" net.ipv6.conf.eth2.forwarding = 0 net.ipv6.conf.eth2.mc_forwarding = 0 sysctl: reading key "net.ipv6.conf.eth2.stable_secret" net.ipv6.conf.lo.forwarding = 0 net.ipv6.conf.lo.mc_forwarding = 0 sysctl: reading key "net.ipv6.conf.lo.stable_secret"
已启用转发。
ip addr show
IP 地址正确。已在 Cisco Packet Tracer 中检查。
ip -6 addr show
ipv6 未配置。
iptables -L
结果:
`链输入(策略接受)目标保护选择源目标
链转发(策略接受)目标保护选择源目标
链输出(策略接受)目标保护选择源目标`
iptables -S
结果:
-P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT
現在默認。
Pinging
HostR(路由器,10.0.0.1,172.16.0.1)可以 ping 通 HostA、HostB,但无法 ping 通 HostC
HostA/HostB (10.0.0.5/.6) 可以 ping 通 HostA/B、HostR,但无法 ping 通 HostC
HostC(172.16.0.2)向所有人执行 ping 操作。
谢谢你的回答。请告诉我你对这些结果的看法。我现在正在努力解决这个问题。如果有任何突破,我会报告的。