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

我有一个虚拟接口上有2个IP地址的VPS。 这是configuration:

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 PtP: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 PtP: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 PtP:1.2.3.2 Bcast:1.2.3.2 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 

现在我有一个使用(WHM / Cpanel)1.2.3.2地址的网站设置。 问题是每当我从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 

你可能想看看这个问题从上周。 我想这正是你要找的。

长话短说,Linux不能在同一个子网上处理多个IP。 但ipconfig2中的工具帮助了一大堆。 因此,使用它们而不是更常见的ifconfig / route命令是您需要的。

– 克里斯托弗·卡雷尔

尝试:

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

…其中xxx.xxx.xxx.xxx是来自route -n的正常默认网关。 在控制台上执行此操作将会丢失networking路由,并准备将其恢复,如果它不适用于任何路由 – 通常会说。