在具有多个 IP 的 Ubuntu 服务器上设置默认传出 IP

在具有多个 IP 的 Ubuntu 服务器上设置默认传出 IP

我有一台服务器(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 中的一个错误。

问候

相关内容