在具有多个虚拟接口的 Linux 服务器上设置 NIC 优先级

在具有多个虚拟接口的 Linux 服务器上设置 NIC 优先级

我有一个 VPS,它在虚拟接口上有 2 个 IP 地址。配置如下:

root@vps [~]# ifconfig -a
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:571976 errors:0 dropped:0 overruns:0 frame:0
          TX packets:571976 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:172900062 (164.8 MiB)  TX bytes:172900062 (164.8 MiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:407339 errors:0 dropped:0 overruns:0 frame:0
          TX packets:404999 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:170561404 (162.6 MiB)  TX bytes:96416084 (91.9 MiB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:1.2.3.1  P-t-P:1.2.3.1  Bcast:1.2.3.1       Mask:255.255.255.255
      UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

venet0:1  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
      inet addr:1.2.3.2  P-t-P:1.2.3.2  Bcast:1.2.3.2  Mask:255.255.255.255
      UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

目前,我在 1.2.3.2 地址上使用 (WHM/Cpanel) 设置了一个网站。问题是,每当我从 Web 服务器(例如 PHP curl 脚本)发起连接时,它总是来自 1.2.3.1 地址。我已致电并与 VPS 的支持人员进行了交谈,他们说这是不可能的,我需要将网站移至其他地址。出于这里不重要的原因,我想避免这样做。有没有办法让 venet0:1 接口成为传出连接的默认接口?

编辑:

以下是路由表:

root@vps [~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
191.255.255.0   0.0.0.0         255.255.255.0   U     0      0        0 venet0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 venet0
0.0.0.0         191.255.255.1   0.0.0.0         UG    0      0        0 venet0

答案1

你可能想看看这个问题从上周开始。我认为这正是你要找的东西。

长话短说,Linux 不能很好地处理同一子网上的多个 IP。但 ipconfig2 中的工具可以帮上大忙。因此,使用它们代替更常见的 ifconfig/route 命令正是您所需要的。——


Christopher Karel

答案2

尝试:

route del -net 0.0.0.0
route add default gw xxx.xxx.xxx.xxx dev vmnet0:1

...其中 xxx.xxx.xxx.xxx 是来自路由 -n 的正常默认网关。请在控制台上执行此操作,因为您将丢失网络路由,并且如果它无法正常工作,请准备好将其恢复到路由 -n 通常显示的任何状态。

相关内容