基本情况是这样的:
===========================
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 forwarding已启用且处于活动状态.
问题:
与eth1或10.10.6.x网络位于同一子网的客户端可以ping并telnet到此框上eth1上运行的资源.
但是,任何其他子网上的客户端都不能.所以从我的工作站我可以整天ping和盒子的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,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.10接口,10.10.6.0/24 lan)
> eth0方面(10.10.5.10接口,10.10.5.0/24 lan)
>您在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-\u0026gt; eth1 [machine] eth0->其他lans).实际上,您不需要将其作为默认网关,但对于eth0侧的任何LAN,他们需要将该LAN与10.10.6.10网关相关联.
>在eth0方面:
> [必备] 10.10.5.0/24上的任何机器应该看到10.10.5.10(eth0)并且可以与它(以及彼此)通信.
> [必备]另一个局域网上的任何一台机器都应该能够与eth0通信,通过(可能是额外的跳跃)具有10.10.5.254 ip的机器(例如:如果该机器有2个子网,10.10.5.254 / 24在同一台机器上)如果是eth0,而另一个接口是10.xyz/24,则10.xy0 / 24中的机器可以通过路由:10.10.5.0/24和网关10.xyz将数据包发送到10.10.5.10.
>如果是这样,那么他们只需要有一条额外的路线通过网关10.x.y.z达到10.10.6.0/24:10.10.6.0/24
用文字说话会变得复杂……
什么会有所帮助:告诉我们网络列表()和每个网络的通道.
现在我猜我试着:
[everything other machines (even internet,via the exterior internet gateway)] | |(links via switch(s) for 10.x.y.0/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.x.y.z?) | [---------------] (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] [---------------------------]
调试设置的一般方法:
>假设您是IP数据包:您有源IP,目标IP.
>现在,在您坐在源的接口上,查看该机器的路由告诉您下一跳是哪个.然后去那里(但首先确保机器的设置允许你,例如在eth0 / eth1机器上,它需要ipforward从一个接口到另一个接口).继续,一次一跳,朝向你的目标(并回到你的源:有时目标机器的路由/ defaultgw被破坏,因此回复数据包不通过正确的路径发送)
> 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. step2:你现在是(相同的IP包)在eth0上.事实证明这是你的目的地:好.步骤2b:回复包:反向源/目的地:你现在是一个数据包(10.10.5.10 – > 10.10.6.10 =):感谢上帝,本地路由告诉你下一跳是在eth1上. step4:没有eth1:你在目的地.好.> ex2(有点长ex :)你是来自“any_machine”,10.10.6.12(在eth1方面)的数据包.你试图达到destinatino谷歌(例如8.8.8.8).所以你是“10.10.6.12 – > 8.8.8.8”,首先你坐在10.10.6.12界面(比方说,eth3). “any_machine”上的本地路由告诉您(因为它是上面的先决条件):“default gw = 10.10.6.10”,所以你跳到“yourBox”,然后到达eth1一侧. step2:你现在正在使用“yourBox / eth1”:现在本地路由告诉你“你需要去默认gw:10.10.5.254,通过eth0”(而“yourBox”上的ipforward允许你从eth1跳到eth0).现在你到达eth0,并按照默认的gw路线,稍后到达ethW的“somerouter”(10.10.5.254).等……(不要忘记检查回路)