보조 IP(eth0:0)는 주 서버 IP처럼 작동합니다.

보조 IP(eth0:0)는 주 서버 IP처럼 작동합니다.

4개의 연속 IP로 구성된 CentOS 서버가 있습니다:
eth0 5.xx251
eth0:0 5.xx252
eth0:1 5.xx253
eth0:2 5.xx254

문제는 모든 트래픽이 eth0 대신 eth0:0(5.xx252)을 소스 IP로 사용하여 인터넷으로 나간다는 것입니다.
# curl ifconfig.me
5.x.x.252

모든 트래픽이 eth0, 즉 내 기본 IP를 통해 나가도록 하려면 이 문제를 어떻게 해결해야 합니까?

추신: 내 서버는 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로 다시 추가하면 모든 것이 예상대로 작동한다는 것입니다. 또는 파일 에 명령을
추가하는 방법이 있습니까 ? Debian에서 이 작업을 수행할 수 있다는 것을 알 수 있습니다 (route delifcfg-eth0route-eth0pre-up ip addr del ...더 많은 정보), CentOS는 어떻습니까?

답변1

에서이 문서적어도 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 파생 상자가 없습니다.

답변2

별칭 IP 주소가 로컬이 아닌 대상에 대한 소스 주소로 사용되지 않는 경우 기본 경로의 대상과 동일한 서브넷에 있어서는 안 됩니다. 따라서 넷마스크를 255.255.255.255브로드캐스트 주소로 변경하고 제거하십시오.

답변3

먼저 0.0.0.0 기본 게이트웨이를 지우십시오.

route del -net default

그런 다음 기본 eth0을 기본 게이트웨이 장치로 선언합니다.

route add -net default gw 5.x.y.82 dev eth0

작동해야합니다. 확인

ip ro li

이를 규칙으로 저장하려면 다음과 같은 지저분한 작업을 시도해 보세요.

을 열고 /etc/sysconfig/network-scripts/network-functions함수를 찾은 add_default_route ()다음 해당 함수에서 호출 후 find_gateway_dev로 줄을 추가합니다 GATEWAYDEV="eth0".

무슨 일이 일어나는지는 network-functions스크립트가 어떤 장치가 기본 게이트웨이가 될지 결정한다는 것입니다. sed를 사용하여 게이트웨이 IP에 대한 경로를 검사하고 ip get route to GATEWAY장치와 일치시킵니다. eth0:0이 매번 하나가 되는 것 같으므로 하드코딩을 통해 GATEWAYDEV="eth0"eth0이 항상 게이트웨이 장치로 선택되도록 해야 합니다.

이전 버전의 RH에서는 편집 /etc/sysconfig/static-routes하고 추가 할 수 있었습니다.default via 5.x.y.82 dev eth0

최후의 수단으로 /etc/rc.local항상 당신의 친구입니다!

답변4

모두 동일한 서브넷에 있으므로 커널은 사용할 하나를 선택합니다. 다음을 실행하여 이를 확인할 수 있습니다.

 ip addr list dev eth0

올바르게 작동하려면 iptables 마법을 수행해야 합니다. 다음을 참조하세요

IP 별칭 지정 시 OS는 아웃바운드 TCP/IP 연결의 소스로 사용될 IP 주소를 어떻게 결정합니까?

관련 정보