
멀티홈 Ubuntu 12.04 서버가 있습니다. 두 개의 서로 다른 IP 범위에 연결된 두 개의 네트워크 인터페이스가 있습니다.
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 190.113.X.X/29 brd 190.113.98.183 scope global eth1
(...)
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 10.100.100.21/24 brd 10.100.100.255 scope global eth0
(...)
네트워크와 관련되지 않은 다른 서브넷에서 eth0 링크의 서버에 액세스하려고 할 때마다 10.100.100.X
응답이 없습니다. 서버에서 실행 중이지만 iptables
(eth1에 공용 IP가 있는 경우) eth0 링크에서 개인 네트워크의 모든 트래픽을 허용합니다.
tcpdump
서버의 인터페이스에서 다음을 수행하면 다음과 같은 결과가 나타납니다(내 PC는 10.100.102.22
).
18:30:23.813889 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.100.102.22 tell 10.100.100.21, length 28
18:30:24.810691 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.100.102.22 tell 10.100.100.21, length 28
18:30:25.810718 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.100.102.22 tell 10.100.100.21, length 28
서버에서 내 PC로 ping을 보낼 수 있습니다.
PING 10.100.102.22 (10.100.102.22) 56(84) bytes of data.
64 bytes from 10.100.102.22: icmp_req=1 ttl=63 time=0.273 ms
64 bytes from 10.100.102.22: icmp_req=2 ttl=63 time=0.324 ms
라우팅 테이블은 다음과 같습니다. 표 1:
default via 10.100.100.1 dev eth0
10.0.0.0/8 dev eth0 scope link src 10.100.100.21
표 2:
default via 190.113.X.X dev eth1
190.113.X.X/29 dev eth1 scope link src 190.113.X.X
기본:
default via 10.100.100.1 dev eth0 metric 100
10.100.100.0/24 dev eth0 proto kernel scope link src 10.100.100.21
190.113.X.X/29 dev eth1 proto kernel scope link src 190.113.X.X
답변1
클라이언트는 10.100.100.0/24 네트워크에 대한 경로도 알아야 합니다.
따라서 클라이언트에 경로를 추가해야 합니다.
ip r a 10.100.100.0/24 via 10.100.100.1 dev eth0
또는 클라이언트가 사용 중인 기본 게이트웨이에 경로를 추가해야 합니다.
다음과 같이 생각할 수 있습니다. 클라이언트는 10.100.100.21에 도달하는 방법을 알아야 합니다. 그렇지 않은 경우 기본 게이트웨이를 시도하고, 게이트웨이가 이를 알지 못하면 운이 없는 것입니다.