我的一台服务器(Debian 5.0.6)在同一个接口上有两个公共 IP 地址。几个月来,它一直运行良好,但突然间它使用“错误的”IP 地址进行传出连接。这是一个问题,因为反向查找不匹配,因此电子邮件会得到垃圾邮件点。
eth0 Link encap:Ethernet Hardware Adresse 00:1b:21:14:8e:9c
inet Adresse:81.169.180.51 Bcast:81.169.180.51 Maske:255.255.255.255
inet6-Adresse: fe80::21b:21ff:fe14:8e9c/64 Gültigkeitsbereich:Verbindung
eth0:0 Link encap:Ethernet Hardware Adresse 00:1b:21:14:8e:9c
inet Adresse:85.214.157.120 Bcast:85.214.157.120 Maske:255.255.255.255
Kernel-IP-Routentabelle
Destination Router Genmask Flags Metric Ref Use Iface
81.169.180.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
0.0.0.0 81.169.180.1 0.0.0.0 UG 0 0 0 eth0
目前它使用 85.214.157.120 进行出站连接。我该如何让它使用 81.169.180.51?
编辑:255.255.255.255 的网络掩码与文档和托管公司的 DHCP 响应一致。多次调用 /etc/init.d/networking restart 最终会得到正确的出站连接 IP 地址。但这显然不是一个稳定的解决方案。/编辑
编辑2:为了确保主机路由与我的问题无关,我设置了一个本地测试网络:
eth0 inet Adresse:192.168.0.2 Bcast:192.168.0.255 Maske:255.255.255.0
eth0:0 inet Adresse:192.168.0.3 Bcast:192.168.0.255 Maske:255.255.255.0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
如果有人知道如何确保在出站 TCP 连接上使用源 IP 地址 192.168.0.2,我将不胜感激。 /编辑 2
答案1
更新默认值:
ip route change default via 81.169.180.1 src 81.169.180.51
检查配置:
ip route list
答案2
bindbn 的回答很好,但我发现了一些复杂情况。
1) 您应该检查 bindbn 所说的“ip 路由列表”。列表中的某些其他规则可能优先于默认路由。您可能需要删除该规则,或者创建略有不同的规则。
2) 通过 ip 命令所做的所有更改仅在下次重启前有效。此答案永久添加源策略路由规则解释如何使其持久。
总之,您可以将需要运行的 ip route 命令作为“up”或“post-up”行添加到 /etc/network/interfaces。您可以添加相应的“down”行来删除该路由。
答案3
尝试改变
allow-hotplug eth0
到
auto eth0
这应该会强制首先启动您的物理接口。您可能需要或不需要更改 eth0:0 的 allow-hotplug 条目。
答案4
10年过去了,iproute2已经出现,然而相关的答案
https://unix.stackexchange.com/a/611945/214557