我有一台服务器(10.04 LTS),有 1 个 NIC 和 2 个虚拟 IP。我的 /etc/interfaces 是:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 11.22.176.5
network 11.22.176.0
netmask 255.255.255.192
broadcast 11.22.176.63
gateway 11.22.176.1
auto eth0:0
iface eth0:0 inet static
address 11.22.178.30
network 11.22.178.0
netmask 255.255.255.128
broadcast 11.22.178.127
gateway 11.22.178.1
auto eth0:1
iface eth0:1 inet static
address 11.22.178.36
network 11.22.178.0
netmask 255.255.255.128
broadcast 11.22.178.127
gateway 11.22.178.1
我有一个 Web 脚本,用于报告所见的 IP。因此:
"curl --interface eth0:0 http://server/reportIP" correctly reports "11.22.178.30"
"curl --interface eth1:1 http://server/reportIP" correctly reports "11.22.178.36"
然而
“卷曲http://服务器/报告IP“报告一个随机 IP(来自总共 3 个 IP),而我希望始终看到主 IP(11.22.176.5)。
那么,除非我专门通过虚拟接口,否则我该如何强制使用默认 IP?
编辑:路线 -n 的结果
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
11.22.176.0 0.0.0.0 255.255.255.192 U 0 0 0 eth0
11.22.178.0 0.0.0.0 255.255.255.128 U 0 0 0 eth0
0.0.0.0 11.22.176.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 11.22.178.1 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 11.22.178.1 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 11.22.178.1 0.0.0.0 UG 100 0 0 eth0
答案1
我不确定它如何与多个子接口一起工作,但请尝试以下步骤:
在 /etc/networking/interfaces 中,添加并将 eth0:1 替换为所需的子接口:
up route add -net 0.0.0.0/0 gw 11.22.178.1 dev eth0:1
答案2
仅添加 DEFAULT 路由并不是我们想要的。要强制 curl 使用特定 IP,请使用
--interface 11.22.178.30
我知道手册上说的是接口、IP 或主机……但对我来说只有 IP 有效。可能是 CURL 中的一个错误。
问候