在不同的子网上正确configuration两个eth接口

任何一个Linux和networking背景都很重的人能帮助我吗? 我已经在互联网上寻找清楚的答案,我甚至比较了我可以使用相同的设置,我不能让我的箱子工作。

基本情况是这样的:

===========================

RHEL 6 Linux有两个以太网接口:

eth0 = 10.10.5.10/24 eth1 = 10.10.6.10/24 [root@box ~]# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.10.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.10.6.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 0.0.0.0 10.10.5.254 0.0.0.0 UG 0 0 0 eth0 

IP转发已启用并处于活动状态。

问题:

与eth1或10.10.6.xnetworking位于同一子网上的客户端可以在此框上ping和telnet到在eth1上运行的资源。

但是,任何其他子网上的客户端都不能。 所以从我的工作站上,我可以ping通telnet到盒子的eth0上的资源,但eth1上没有任何东西。

将此设置与我的环境中相似性质的另一个框相比较,没有显示出明显的差异。

这里有一些文件:

 # cat ifcfg-eth0 DEVICE="eth0" BOOTPROTO="none" HWADDR="Omitted" IPADDR="10.10.5.10" NETMASK="255.255.255.0" NETWORK="10.10.5.0" ONBOOT="yes" TYPE="Ethernet" USERCTL="no" # cat ifcfg-eth1 DEVICE="eth1" BOOTPROTO="none" HWADDR="omitted" IPADDR="10.10.6.10" NETMASK="255.255.255.0" NETWORK="10.10.6.0" ONBOOT="yes" TYPE="Ethernet" USERCTL="no" # cat route-eth0 default via 10.10.5.254 dev eth0 # cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=box GATEWAY=10.10.5.254 NOZEROCONF=yes 

任何援助,您可以提供将不胜感激!

谢谢。

添加更多的信息,但简要包括:

 # ip addr 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 inet 10.10.5.10/24 brd 10.10.5.255 scope global eth0 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 inet 10.10.6.10/24 brd 10.10.6.255 scope global eth1 

与您目前显示的设置一样:

  • 你有两面:

    • eth1端(10.10.6.0/24局域网上的10.10.6.10接口)
    • eth0端(10.10.5.10接口,10.10.5.0/24局域网)
    • 您在eth0端定义了该机器的默认网关(默认gw ip:10.10.5.254)
  • 因此

    • 在eth1方面:
      • 10.10.6.0/24中的任何机器应该能够与10.10.6.10(以及相互之间)通信(我不承担任何防火墙问题)
      • 另外:10.10.6.0/24中的任何一台机器,它们已经定义了他们的默认网关为“10.10.6.10”,将能够发送数据包到其他机器,通过你的机器(10.10.6.10/24-> eth1 [机器] eth0->其他lans)。 实际上你不需要把它作为默认的网关,但是对于eth0端的任何一个局域网,他们需要把这个局域网和10.10.6.10网关关联起来。
    • 在eth0方面:
      • [必备] 10.10.5.0/24上的任何机器应该见10.10.5.10(eth0),并且可以与之通信(以及相互之间)。
      • [必备]另一个局域网上的任何一台机器应该能够和eth0通信,通过(也许是额外的跳数)具有10.10.5.254 ip的机器(例如:如果该机器在同一侧有两个子网10.10.5.254/24作为eth0,在另一个接口上为10.xyz / 24,则10.xy0 / 24中的机器可以通过路由10.10.5.0/24(网关10.xyz)将数据包发送到10.10.5.10。
      • 如果是这样,那么他们只需要有一个额外的路线,通过网关10.xyz达到10.10.6.0/24:10.10.6.0/24

它可以变得复杂的言辞…

有什么帮助:告诉我们networking列表()和每个networking的getways。

现在我猜你尝试有:

  [everything other machines (even internet, via the exterior internet gateway)] | |(links via switch(s) for 10.xy0/24 network, for example. | If you have such an additionnal LAN. | Maybe it's even "the Internet", and therefore not in 10.x anything, | but this is just an example.) | | (10.xyz?) | [---------------] (or Internet?)ethZ[some router/box]ethW(10.10.5.254) [---------------] | | |(links via switch(s) for 10.10.5.0/24 network) | [-------] | (10.10.6.10)eth1[yourbox]eth0(10.10.5.10) | [-------] | |(links via switch(s) for 10.10.5.0/24 network) | | [---------------------------] ethx[any machine in 10.10.6.0/24] [---------------------------] 

一般的方法来debugging您的设置:

  • 想象你是IP数据包:你有一个源IP,一个目的IP。
  • 现在,在你所在的接口上,看看那台机器的路由告诉你哪一个下一跳是。 并去那里(但首先确保机器的设置,例如在eth0 / eth1机器上,它需要从一个接口到另一个ipforward)。 然后继续,一次跳向你的目标(并返回到你的源代码:有时目标机器的route / defaultgw被破坏,因此回复数据包不能通过正确的path发送)
    • ex1(很简单):10.10.6.10试图发送到10.10.5.10:step1,你在eth1(10.10.6.10)。 那台机器有一条路由说“10.10.5.0/24就在这里,在eth0上”。 Ipforwarding允许您从eth1跳转到eth0。 继续到eth0。 步骤2:在eth0上你现在是(相同的IP数据包)。 事实certificate,这是你的目的地:好的。 步骤2b:回复数据包:反向来源/目的地:你现在是一个数据包(10.10.5.10 – > 10.10.6.10 =):感谢上帝,本地路由告诉你下一跳在eth1上。 第四步:没有eth1:你在目的地。 好。
    • ex2(比较长一点:)你是来自“any_machine”,10.10.6.12(eth1端)的数据包。 你尝试达到谷歌(如8.8.8.8)destinatino。 所以你是“10.10.6.12 – > 8.8.8.8”,起初你坐在10.10.6.12界面(比如eth3)。 “any_machine”上的本地路由告诉你(因为它是前面的必要条件):“default gw = 10.10.6.10”,所以你跳到“yourbox”,然后到达eth1端。 第二步:你现在在“yourbox / eth1”:现在,本地路由告诉你“你需要通过eth0转到默认的gw:10.10.5.254”(并且你的“ipbox”允许你从eth1跳转到eth0)。 现在你到达eth0,并按照默认的gw路由,在ethW(10.10.5.254)上稍后到达“somerouter”。 等等…(并且不要忘记检查回程路线)

您的默认网关是10.10.5.254,但eth1接口configuration为10.10.6.10/24。 这实际上意味着10.10.6.x接口不能访问默认网关,因为它们位于不同的子网上。

需要更多的一般networking信息来正确评估你的select,但是到目前为止发布的两个选项是:

  • 确认这两个networking实际上是/ 24个子网,如果是的话,在该接口的configuration文件中为eth1设置正确的网关
  • 如果接口是更大的超网的一部分,则将两个接口configuration为存在于/ 16子网上以使用相同的网关。

你是否启用了IP转发?

 sysctl net.ipv4.ip_forward 

如果它说0你没有和你的盒子不路由数据包。

通过启用它

 sysctl -w net.ipv4.ip_forward=1 

并通过将以下内容添加到/etc/sysctl.conf使其成为永久性的:

 net.ipv4.ip_forward = 1