我的一台服务器(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的networking掩码是与托pipe公司的文档和DHCP响应一致。 多次调用/etc/init.d/networking将最终以outbount连接的正确ip地址结束。 但这显然不是一个稳定的解决scheme。 /编辑
编辑2 :为了确保主机路由与我的问题没有关系,我build立了一个本地testingnetworking:
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
更新默认值:
ip route change default via 81.169.180.1 src 81.169.180.51
检查configuration:
ip route list
bindbn的答案是好的,但我发现一些并发症。
1)你应该检查“IP路由列表”bindbn说。 列表中的其他一些规则可能优先于默认路由。 您可能需要删除该规则,或创build一个稍有不同的规则。
2)通过ip命令完成的所有更改只能在下次重新启动之前运行。 这个答案永久添加源策略路由规则解释如何使其持久化。
总之,您可以将需要作为“up”或“post-up”行运行的ip route命令添加到/ etc / network / interfaces。 您可以添加一个相应的“下线”删除路线。
尝试改变
allow-hotplug eth0
至
auto eth0
这会迫使你的物理界面首先出现。 您可能也可能不需要更改eth0:0的allow-hotplug条目。
出于好奇,为什么你的IP地址的networking掩码是255.255.255.255? 这是不可行的,因为这意味着整个地址就是networking。 没有空间的主机。 您的广播地址与您的主机IP相同的事实也令人担忧,但可能是由于networking掩码问题。 它看起来像你的networking掩码应该是255.255.255.0。
这样做是为了给你两个主机在同一个子网? 简单地进行更改可能会更好,以便每个接口位于不同的子网上。 255.255.255.128会把eth0和你的网关(81.169.180.1)放在同一个子网上,eth0:0在一个单独的子网上。 但是,这意味着eth0只能与81.169.180.1-81.169.180.127联系。 eth0:0从129-254。 但是,这是说,我不明白为什么你目前的设置工作。
现在,这会导致你在上面看到的问题吗? 我看不到直接的联系,但这是可能的。
这当然是我调整的东西。 如果这没有帮助,也许你可以解释为什么你有这样的事情设置。
编辑:这工作正常在这个主机上,还是它是一个不同的机器/操作系统? 任何想法可能已经改变? 我问的原因是因为Linux真的不想在同一子网上有两个接口。 这让我很生气,试图在我自己的networking上运行。 这听起来很有可能,你得到这个正确的IP工作,直到你重新启动/重新启动networking服务。 然后它使用了错误的界面。 参考: http : //anders.com/cms/258
你也可以尝试在eth0:0的ifdown ,然后添加路由,然后ifup回来。 这可能保证使用正确的IP。
手动添加dev eth0 可能会有所帮助,但看起来好像路由是正确的。
进一步编辑:您可以尝试在Debian中使用最新的IPpipe理工具iproute 2 。 ( 次要链接 )它看起来像沿线的东西
使用接口: ip link set eth0 up
ip addr add 192.168.0.2/24 dev ethe0
ip addr add 192.168.0.3/24 dev eth0
然后用。设置路由表
ip route add 10.0.0.0/16 via 192.168.0.2
– 克里斯托弗·卡雷尔
您当前的设置不应该实际上工作。 由于两个接口的networking掩码是255.255.255.255,所以网关没有空间。 但是,为了提供任何有意义的stream量,您的服务器需要一个网关。 提供两个公有IP地址的ISP也应为您提供两个IP地址的networking掩码和网关设置。
例子(这是我的私人服务器和IP地址是真实的):
内核IP路由表 目标网关Genmask标志度量参考使用Iface 217.10.144.208 0.0.0.0 255.255.255.248 U 0 0 0 eth0 0.0.0.0 217.10.144.209 0.0.0.0 UG 0 0 0 eth0
服务器本身位于217.10.144.210,位于与网关相同的子网(必须,否则无法路由stream量)。 据推测,ISP也为其他一些客户提供了相同的子网。
如果您在该服务器上,并且对网关执行ping操作,则应该收到“无路由到主机”消息。
与ISP交谈并获得正确的设置,然后更新您的接口configuration,重新启动联网并再次检查。