我有一台机器 C,它有两块网卡,分别是eth0
和eth1
,上面安装了 CentOS 4.9。另外我有一台机器 A 通过 连接到 C eth0
,还有一台机器 B 通过 连接到 C。eth1
现在我希望机器 A 在一个子网中(例如 192.168.3.0/24),而机器 B 在另一个子网中(例如 192.168.4.0/24),并且它们可以相互通信。
eth0 eth1
Machine A <---------> Machine C <---------> Machine B
...3.0/24 ...4.0/24
根据我的回答之前关于此问题的问题,我配置了我的eth0和eth1:
/etc/sysconfig/网络脚本/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.3.1
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
/etc/sysconfig/网络脚本/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.4.1
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
并将计算机 A(Windows XP)配置为 192.168.3.10、192.168.3.1(gw),将计算机 B(Windows 7)配置为 192.168.4.10、192.168.4.1(gw)。我已在计算机 C 上启用 IP 转发。现在,我还没有添加任何路由或 iptables 规则。我可以从计算机 B ping 192.168.3.10,但反之则不行。我是否遗漏了一些路由规则?如果是,如何添加这些规则?
任何建议、教程或操作方法都将受到赞赏。
答案1
快速测试:
控制面板 -> Windows 防火墙(如果您要执行此类操作,则位于系统和安全下)。在左侧窗格中,单击“打开/关闭 Windows 防火墙”,然后在右侧窗格中关闭防火墙。
如果你能 ping 通它,那就太好了……你可以重新打开它,并按照以下说明允许 ping 通http://www.sysprobs.com/enable-ping-reply-windows-7。
如果这不起作用,另一个快速测试是关闭 iptables,当然只是为了排除故障。即使你不记得弄乱过它,也值得测试一下……
sudo /etc/init.d/iptables stop
答案2
一台机器可以成功 ping 通另一台机器,这一事实表明路由器机器(C)的配置至少是合理正确的 - IP 转发有效,并且 iptables 配置中没有默认的“拒绝”策略。
我倾向于怀疑计算机 B 上的防火墙设置使其默认不响应 ping。不过,我不是 Microsoft 专家,所以我不知道这是否是 Windows 7 的默认设置,或者如何检查和修复它,但大概其中有某个配置管理器,您可以点击一下。
如果这似乎没有效果,只需对您的iptables
配置进行合理性检查,方法是运行iptables -L -n
并确保链中没有规则FORWARD
(某些系统配置可能添加了它们),并且该链的策略实际上是ACCEPT
(这不是好的安全做法,但我们还没有“使其安全”,只是“使其工作”)。如果您不确定如何解释输出,请将输出粘贴到您的问题中,有人会给您点赞。