请帮助在 centos 5.6 上设置静态路由

请帮助在 centos 5.6 上设置静态路由

我目前有一台连接到 LAN 和互联网的机器,运行良好。我现在有一个到远程办公室的专用连接,必须从我的机器创建一条到新办公室的某台机器的路由,但必须通过专用线路(而不是通过互联网)。我的机器有CentOS release 5.6

以下是我当前的设置(我暂时还不能在这里发布图片)

基本上,从“MyServer”使用 eth0 到互联网就可以工作。eth0 具有以下配置。

root@MyServer:/etc/sysconfig/network-scripts $ more ifcfg-eth0
# Intel Corporation 82578DC Gigabit Network Connection
DEVICE=eth0
BOOTPROTO=none
HWADDR=71:72:bd:ae:1f:49
ONBOOT=yes
DHCP_HOSTNAME=MyServer.local
IPADDR=192.168.3.11
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
TYPE=Ethernet
root@MyServer:/etc/sysconfig/network-scripts $

现在我必须在 eth0 上创建一个别名并将其路由到“目标服务器”。因此我所做的是创建一个名为 eth0:0 的文件,其中包含以下内容:

root@MyServer:/etc/sysconfig/network-scripts $ more ifcfg-eth0:0
# Intel Corporation 82578DC Gigabit Network Connection
DEVICE=eth0:0
BOOTPROTO=none
HWADDR=71:72:bd:ae:1f:49
ONBOOT=yes
DHCP_HOSTNAME=MyServer.local
IPADDR=172.23.10.37
NETMASK=255.255.255.252
TYPE=Ethernet

root@MyServer:/etc/sysconfig/network-scripts $

仅凭这一点,我现在就可以 ping 172.23.10.38

root@MyServer:/etc/sysconfig/network-scripts $ ping 172.23.10.38
PING 172.23.10.38 (172.23.10.38) 56(84) bytes of data.
64 bytes from 172.23.10.38: icmp_seq=1 ttl=255 time=6.30 ms
64 bytes from 172.23.10.38: icmp_seq=2 ttl=255 time=2.07 ms
64 bytes from 172.23.10.38: icmp_seq=3 ttl=255 time=3.13 ms

--- 172.23.10.38 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 2.071/3.839/6.309/1.801 ms
root@MyServer:/etc/sysconfig/network-scripts $

但我的目标是到达 192.168.1.96,并使用源 IP 地址 172.23.10.37 到达那里

所以我添加了以下路线

root@MyServer:/etc/sysconfig/network-scripts $ route add -host 192.168.1.96 eth0:0
root@MyServer:/etc/sysconfig/network-scripts $ ip route list
192.168.1.96 dev eth0  scope link  src 172.23.10.37
172.23.10.36/30 dev eth0  proto kernel  scope link  src 172.23.10.37
192.168.3.0/24 dev eth0  proto kernel  scope link  src 192.168.3.11
169.254.0.0/16 dev eth0  scope link
default via 192.168.3.1 dev eth0
root@MyServer:/etc/sysconfig/network-scripts $

netstat -rn


root@MyServer:/etc/sysconfig/network-scripts $ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.96    0.0.0.0         255.255.255.255 UH        0 0          0 eth0
172.23.10.36    0.0.0.0         255.255.255.252 U         0 0          0 eth0
192.168.3.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.3.1     0.0.0.0         UG        0 0          0 eth0
root@MyServer:/etc/sysconfig/network-scripts $

从路由列表来看,它似乎已设置。 192.168.1.96 dev eth0 scope link src 172.23.10.37 并且traceroute 192.168.1.96向我展示了它确实试图通过 eth0:0 出去

root@MyServer:/etc/sysconfig/network-scripts $ traceroute 192.168.1.96
traceroute to 192.168.1.96 (192.168.1.96), 30 hops max, 40 byte packets
 1  172.23.10.37 (172.23.10.37)  3001.699 ms !H  3001.698 ms !H  3001.693 ms !H
root@MyServer:/etc/sysconfig/network-scripts $

但如您所见,主机无法访问。管理远程服务器的人向我保证他们的机器确实响应 ping,而我这边暂时停止了 iptables,以确保没有外部变量。此外,我们之间的路由器/防火墙上的防火墙服务暂时停止。

所以基本上我有两个问题。1) 我做错了什么?2) 一旦我让它工作,我该如何将临时命令更改route add -host 192.168.1.96 eth0:0为持久路由?我读到最干净的方法是添加一个名为的文件,/etc/sysconfig/network-scripts/route-eth0:0其中包含以下行

192.168.1.96 via 172.23.10.37 dev eth0:0 它是否正确?

希望我提供了足够的信息来调试这个问题。谢谢,-gk

答案1

该路由应使用 172.23.10.38(路由器 IP)作为网关。要测试,请使用:

路由添加-主机 192.168.1.96 gw 1​​72.23.10.38

route-eth0:0 文件条目将是:

192.168.1.96/32 通过 172.23.10.38

答案2

最简洁的方法是在 a 中添加正确的条目route-eth0:0/etc.sysconfig/network-scripts然后运行service network restart。这将使用指定的 eth0:0 接口进行该路由。

答案3

我建议你尝试跟踪到服务器的路由,然后从服务器跟踪到你的机器。这可能会忽略路由器分隔两个网络并且允许机器之间通信的事实。

相关内容