我有一个 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 通常显示的任何状态。