我有一台 Linux 服务器,它有两个网络接口:(eth0
使用公网 IP 地址连接到互联网A.B.C.208
)和eth1
(不连接任何东西,绑定到私有 IP 地址10.U.V.159
)。私有网络部分是必需的,因为我配置了一个 VPN(OpenSwan),其配置需要它。
我的 OpenSwan VPN 将我的10.U.V.*
专用网络连接到远程10.X.Y.*
专用网络。VPN 链接已建立并且运行正常。
但是当我 ping 远程网络上的服务器时10.X.Y.*
,我需要强制源接口使其eth1
工作:
$ ping -I eth1 10.X.Y.31
PING 10.X.Y.31 (10.X.Y.31) from 10.U.V.159 eth1: 56(84) bytes of data.
64 bytes from 10.X.Y.31: icmp_seq=1 ttl=60 time=29.0 ms
...
否则 OpenSwan/VPN 将不会重新路由 ping。
如何配置我的服务器以便eth1/10.U.V.159
在访问任何10.X.Y.*
地址时自动设置源地址?我应该添加路由吗?我不想干扰VPN自己的路由机制...
我的路由表:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default A.B.C.254 0.0.0.0 UG 0 0 0 eth0
10.U.V.0 * 255.255.255.0 U 0 0 0 eth1
A.B.C.0 * 255.255.255.0 U 0 0 0 eth0
答案1
10.XY31 不存在于您的路由表中。因此使用默认路由,数据包由 eth0 发送。如果您想通过 eth1 发送,则需要有下一个网关,您可以使用该route add -net 10.X.Y.0 netmask 255.255.255.0 gw 10.U.V.159
命令
这可能是掩码的问题,10.0.0.0 网络通常在 /8 中。