有4个NIC的Linux路由器不能正常工作

我正在build立一个基于Linux的路由器,拥有4个网卡,尽pipe在各种网站上提出了以下步骤,但我似乎无法说服它工作。

每个接口位于一个单独的子网上,如下所示:

eth0 10.1.0.254 (255.255.255.0) eth1 10.1.1.254 (255.255.255.0) eth2 10.1.2.254 (255.255.255.0) eth3 10.1.3.254 (255.255.255.0) 

每个networking上的每台设备都configuration为使用10.1。 x .254作为本地networking上的网关。

我启用了IP转发function(也使其在/etc/sysctl.conf成为永久的)

 $ cat /proc/sys/net/ipv4/ip_forward 1 

路由表看起来是正确的

 $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface localnet * 255.255.255.0 U 0 0 0 eth0 10.1.1.0 * 255.255.255.0 U 0 0 0 eth1 10.1.2.0 * 255.255.255.0 U 0 0 0 eth2 10.1.3.0 * 255.255.255.0 U 0 0 0 eth3 

接口

 $ ifconfig eth0 Link encap:Ethernet HWaddr 00:50:8d:xx:xx:xx inet addr:10.1.0.254 Bcast:10.1.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:28919 errors:0 dropped:0 overruns:0 frame:0 TX packets:16132 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:35054376 (35.0 MB) TX bytes:1424175 (1.4 MB) Interrupt:22 eth1 Link encap:Ethernet HWaddr 00:1b:21:xx:xx:xx inet addr:10.1.1.254 Bcast:10.1.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:54 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:480 (480.0 B) TX bytes:3996 (3.9 KB) eth2 Link encap:Ethernet HWaddr 00:1b:21:xx:xx:xx inet addr:10.1.2.254 Bcast:10.1.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9 errors:0 dropped:0 overruns:0 frame:0 TX packets:57 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1024 (1.0 KB) TX bytes:4122 (4.1 KB) eth3 Link encap:Ethernet HWaddr 00:1b:21:xx:xx:xx inet addr:10.1.3.254 Bcast:10.1.3.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6419 errors:0 dropped:0 overruns:0 frame:0 TX packets:6702 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:701177 (701.1 KB) TX bytes:612622 (612.6 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1753 errors:0 dropped:0 overruns:0 frame:0 TX packets:1753 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:194373 (194.3 KB) TX bytes:194373 (194.3 KB) 

连接到10.1.1.0/24networking的PC(IP地址为10.1.1.1,网关configuration正确为10.1.1.254),可以ping通Linux路由器的本地接口,但其他3个路由器接口都不在网关。

在此networking设置中,我没有任何防火墙(硬件或软件)。

我错过了一些根本的东西?

编辑1

从PC 10.1.1.1开始,我可以ping除路由器上的所有接口,即10.1.0.254。 (我不知道我做了什么来解决这个问题!)

所涉及的所有子网由多个三层交换机作为VLAN托pipe。 Linux路由器上没有响应的接口是唯一在我们的核心交换机上具有路由接口的VLAN。

尽pipe10.1.1.1被configuration为使用10.1.1.254(Linux路由器上的eth1),但是尝试访问此接口时,eth1上的tcpdump没有显示ICMP回显的任何符号。

它可能是从交换机广播路由协议导致10.1.1.1上的PC不通过10.1.1.254路由?

编辑2

在处理其他事情的同时,我现在又回到了这个问题上(没有改变Linux路由器上的任何东西),它又停止了工作。

编辑3

iptablesconfiguration

 # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 

从你所描述的应该工作。 如果您可以在同一个networking上ping网关的接口,但不能ping任何其他接口,这是非常奇怪的。 即使通过接口B接收,TCP / IP协议栈也应该能够正确响应接口A.

由于您正在ping网关的本地地址(尽pipe在不同的networking上),因此不涉及数据包转发。 我看到三个可能的原因:

1)网关实际上没有收到数据包(客户端的路由/丢包问题)。

2)网关没有把答复发送到正确的地方。

3)网关select不回复(某种防火墙,我会仔细检查,只是为了确保不是这样)。

我会使用tcpdump或wireshark来确定线路上发生了什么。 你应该看到ping请求离开客户端。 然后在网关的界面,你应该看到他们到达。 然后,我会听所有的接口,看看是否有任何回复发送到任何地方。 如果你看到一个ping请求进来,那么在客户端的路由是OK的。 如果你没有看到任何接口的ping回复,那么它就是防火墙或者网关上的路由表。 最后,如果网关通过正确的接口发送回复,并且不在客户端上注册,则这是所有客户端的错误。

我会尝试一些其他networking(例如10.1.3.0/24)上的设备,最好直接连接到服务器的网卡,以确保没有任何干扰通信。 这可能只是一个错字,如果你知道你应该看到什么,那就很难看出来。 configuration其他设备(或者重新configuration用于第一次testing的PC)使得再犯一次错字的可能性较小。

还有最后一个问题 – 它是否有用,或者它是一个新的设置和插入networking的框?

编辑:

只要你没有在Linux机器上启用任何路由守护进程,它就会忽略来自交换机的路由器stream量。

你观察到的强烈表明一些外部影响(交换机,防火墙,外国人或实习生被锁在NOC;))。 尝试使用直接连接到Linux的两个客户端来testing设置,如下所示:

  +-------------+ client1 ---+ ethX ethY +--- client2 +-------------+ Linux box 

在这个设置testing路由在所有接口之间的Linux盒子。 否则,您将同时在多条战线上进行战斗,这将减less成功故障排除的可能性。 一旦你知道Linux的工作原理(或者不是),就可以寻找干扰原因了。

如果您的智能交换机连接到Linux机箱的所有接口,则可以在直接连接到Linux机箱的端口上定义一个IP地址,然后尝试在机箱和路由器之间进行ping操作。 我是一个可疑的偏执狂,我会把自己的笔记本电脑和一些已知好的跳线一起拿到箱子里,看看发生了什么事情。

可能是一个愚蠢的问题,但是…你说你在这个networking上没有任何防火墙,但你绝对相信这个吗?

Linux默认情况下启用了防火墙,所以即使启用了IP转发,如果您没有明确configurationIPTABLES(或完全禁用防火墙),它也不会让任何数据包通过。

当然,对于你的电脑也是如此:无论是Linux还是Windows,它们都会有一个内置的防火墙,除非你明确禁用它,否则默认情况下它是活动的。

iptables的规则允许转发?

iptables -L -n -v