当虚拟接口上有多个 IP 时,如何设置默认源 (src) IP 地址

当虚拟接口上有多个 IP 时,如何设置默认源 (src) IP 地址

当虚拟接口上有多个 IP 时,我该如何告诉网络堆栈哪个 IP 作为通信的源 (src)?

auto eth0 
iface eth0 inet static
            address x.x.x.209
            netmask 255.255.255.0
            network x.x.x.0
            broadcast x.x.x.255
            gateway x.x.x.254

auto eth0:1
iface eth0:1 inet static
            address x.x.x.210
            netmask 255.255.255.0
            network x.x.x.0
            broadcast x.x.x.255
            gateway x.x.x.254

等等等等

它似乎选择了 /etc/networking/interfaces 中的最后一个

~# ip -s route get 173.194.67.113; 
173.194.67.113 via x.x.x.254 dev eth0  src x.x.x.210 
  cache  users 1 used 11 mtu 1500 advmss 1460 hoplimit 64

但这种行为是不可预测的,每个接口分配了大约 30 个 ip,有时 (scr) 源 ip 会发生变化。

我需要了解它如何选择。

我尝试设置度量来标准化 src,但它似乎不支持虚拟接口。 NETLINK: Packet too small or truncated!

编辑:Ubuntu 10.04 64位

编辑按照@TheCleaner 的链接,我的 /etc/network/interfaces 现在干净多了。很抱歉之前没有提供更多信息,这是一个复杂的环境,我真正想知道的是当您从命令行运行 apt-get update 时内核如何决定源地址。所有负载均衡、故障转移等都运行良好。

auto eth0
iface eth0 inet static
            address x.x.x.183
            netmask 255.255.255.0
            network x.x.x.0
            broadcast x.x.x.255
            gateway x.x.x.254
up ip addr add x.x.x.209 dev eth0 label eth0:1
up ip addr add x.x.x.210 dev eth0 label eth0:2
up ip addr add x.x.x.211 dev eth0 label eth0:3
up ip addr add x.x.x.212 dev eth0 label eth0:4
up ip addr add x.x.x.213 dev eth0 label eth0:5
up ip addr add x.x.x.214 dev eth0 label eth0:6
up ip addr add x.x.x.215 dev eth0 label eth0:7

我不知道它是否已修复。但到目前为止一切顺利。我打算在睡眠 5 时运行;执行 ip -s route 获取 173.194.67.113;完成
一段时间以查看我在连接出站时是否有稳定的 ip。

这真是太棒了!感谢所有参与的人。我仍然很好奇我的源 IP 到底为什么会改变,但我会将其归咎于编写不正确的接口文件,然后继续。

答案1

在别名节中,不要包含网关。您也根本不需要“网络”行。

auto eth0 
iface eth0 inet static
            address x.x.x.209
            netmask 255.255.255.0
            broadcast x.x.x.255
            gateway x.x.x.254

auto eth0:1
iface eth0:1 inet static
            address x.x.x.210
            netmask 255.255.255.0

相关内容