在 debian squeeze 服务器上,我在 eth0 上获得了 2 个 IP(eth0 和 eth0:1)。打开 TCP 连接时,服务器默认使用 eth0:1 IP。但是我希望它使用主 IP(eth0),因为我希望另一个 IP 仅用于(监听)守护进程。
#/etc/network/interfaces
auto eth0
iface eth0 inet static
address 92.xxx.xxx.92
netmask 255.255.255.192
network 92.xxx.xxx.64
broadcast 93.xxx.xxx.127
gateway 92.xxx.xxx.65
auto eth0:1
iface eth0:1 inet static
address 108.xxx.xxx.146
netmask 255.255.255.192
gateway 108.xxx.xxx.129
#ip route show
108.xxx.xxx.128/26 dev eth0 proto kernel scope link src 108.xxx.xxx.146
92.xxx.xxx.64/26 dev eth0 proto kernel scope link src 92.xxx.xxx.92
default via 108.xxx.xxx.129 dev eth0 src 108.xxx.xxx.146
default via 92.xxx.xxx.65 dev eth0
我该怎么做才能让 Debian 使用 92. IP 进行传出连接?当然,另一个应该仍然可以工作。
答案1
你几乎肯定应该只一 gateway
参数在您的网络配置中(基本上,如果您不知道为什么需要两个,那就不需要)。该gateway
参数指定您的机器的默认网关——没有更具体路由的流量应发送到该路由器。在大多数网络上,只有一个路由器符合该标准,即使您可能有其他几个(更具体的)其他网络路由。
答案2
如果由于某些原因您确实需要 2 个不同的 IP 网络同时工作,则应该ip rule
在 Linux 上使用。
假设两个 IP 网络“A”和“B”位于同一个 NIC 上。“A”是主网络,即,当从盒子 ping 某些主机时,您希望使用“A”IP 参数,因此您只将“A”的默认网关放入(主)路由表中。如果您需要来自“B”的回复以使用“B”的默认网关,那么您可以使用以下方式进行管理:
ip rule add from B_Network/Mask lookup table B_table pref 20000
ip route add default via B_gw table B_table
应该首先定义 B_table /etc/iproute2/rt_tables
。请参阅拉拉训练中心了解详情。