輔助 IP (eth0:0) 就像主伺服器 IP
我有一個 CentOS 伺服器,配置了 4 個連續 IP:
eth0 5.xx251
eth0:0 5.xx252
eth0:1 5.xx253
eth0:2 5.xx254
問題是所有流量都以 eth0:0 (5.xx252) 作為源 IP 而不是 eth0 傳到 Internet。
`# curl ifconfig.me
5.x.x.252`
我該如何解決這個問題,以便所有流量都通過 eth0(即我的主 IP)發出?
PS:我的伺服器是在 Xen dom0 上執行的 VPS,後者配置為路由模式網路。
提前致謝!
伺服器配置
# ifconfig eth0 Link encap:Ethernet HWaddr 00:x:x:x:x:AE inet addr:5.x.x.251 Bcast:5.x.x.255 Mask:255.255.255.255 inet6 addr: fe80::x:x:x:x/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14675569 errors:0 dropped:0 overruns:0 frame:0 TX packets:9463227 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4122016502 (3.8 GiB) TX bytes:25959110751 (24.1 GiB) Interrupt:23 eth0:0 Link encap:Ethernet HWaddr 00:x:x:x:x:AE inet addr:5.x.x.252 Bcast:5.x.x.255 Mask:255.255.255.224 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:23 eth0:1 Link encap:Ethernet HWaddr 00:x:x:x:x:AE inet addr:5.x.x.253 Bcast:5.x.x.255 Mask:255.255.255.224 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:23 eth0:2 Link encap:Ethernet HWaddr 00:x:x:x:x:AE inet addr:5.x.x.254 Bcast:5.x.x.255 Mask:255.255.255.224 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:23
# cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 5.x.x.251 [fqdn] [hostname]
# cat ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=5.x.x.251 NETMASK=255.255.255.224 SCOPE="peer 5.x.y.82"
# cat ifcfg-eth0:0 DEVICE=eth0:0 BOOTPROTO=static ONBOOT=yes IPADDR=5.x.x.252 NETMASK=255.255.255.224
# cat route-eth0 ADDRESS0=0.0.0.0 NETMASK0=0.0.0.0 GATEWAY0=5.x.y.82
# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 5.x.y.82 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 5.x.x.224 0.0.0.0 255.255.255.224 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 5.x.y.82 0.0.0.0 UG 0 0 0 eth0
2012 年 8 月 29 日更新
當我執行時
/etc/init.d/network restart
出現RTNETLINK answers: File exists
錯誤,這讓我相信有另一條路由使用預設網關到另一個網路,如此處所示。# /etc/init.d/network restart Shutting down interface eth0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: RTNETLINK answers: File exists [ OK ]
可以肯定的是,當我第一次刪除
ip route del default via 5.x.y.82 dev eth0
然後使用 .251 IP 再次添加它時,一切都按預期工作。有沒有辦法向文件或文件添加
route del
命令?我可以看到這可以在 Debian 上完成(更多資訊),但是 CentOS 呢?ifcfg-eth0``route-eth0``pre-up ip addr del ...
從這個文件看來,至少在 CentOS 5 上,我懷疑你可以通過簡單地給出正確的 iproute2 命令參數來指定你的路由。(見上一節
IP Command Arguments Format
)所以不要寫這樣的東西:
# route-eth0 ADDRESS0=0.0.0.0 NETMASK0=0.0.0.0 GATEWAY0=5.x.y.82
你可以有一個像這樣的文件:
default via 5.x.y.82 dev eth0 src 5.x.x.251
不過,我沒有方便測試的 Redhat/Redhat 派生框。
如果別名 IP 地址不用作非本地目標的源地址,則它們不應與預設路由的目標位於同一子網中。所以將他們的網路遮罩更改為
255.255.255.255
並刪除他們的廣播地址。