当虚拟接口上有多个 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