리눅스 라우터 설정문제

다음처럼 간략한 리눅스 라우터를 설정하고자 합니다.

(test11 - host: 서버용)

eth0: 100.0.10.23/24
eth1: 111.1.1.11/24 – 라우터와 연결할 인터페이스

(testR - linux router: 라우터)

eth0: 100.0.10.26/24
eth1: 111.1.1.12/24 – test11과 연결할 인터페이스
eth2: 111.3.3.14/24 – test33과 연결할 인터페이스

(test33 - host: 클라이언트)

eth0: 100.0.10.25/24
eth1: 111.3.3.15/24 – 라우터와 연결할 인터페이스

(상태정보:)

모든 머신은 ubuntu 14.04 vm입니다.
eth0는 관리용 ip로 이 연결을 위해서 사용하지 않습니다.
목적은, test33(클라이언트)에서 test11(서버)로 라우터를 경유하여 연결하고자 합니다.
서버에서 라우터간, 라우터에서 클라이언트간 ping은 됩니다만,
클라이언트-라우터-서버 연결이 되지 않고 있습니다.
아래 설정은 https://help.ubuntu.com/community/Router 를 바탕으로 하였습니다.

하지만, 어떤 이유에서인지 연결되지 않습니다.
여러분의 지혜를 빌려주세요. 감사합니다.

(test11 routing table:)
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 100.0.10.1 0.0.0.0 UG 0 0 0 eth0
100.0.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
111.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
111.3.3.0 111.1.1.12 255.255.255.0 UG 0 0 0 eth1

(test33 routing table:)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 100.0.10.1 0.0.0.0 UG 0 0 0 eth0
100.0.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
111.1.1.0 111.3.3.14 255.255.255.0 UG 0 0 0 eth1
111.3.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

(testR routing table:)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 100.0.10.1 0.0.0.0 UG 0 0 0 eth0
100.0.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
111.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
111.3.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2

(testR iptables-save:)
Generated by iptables-save v1.4.21 on Tue Jun 13 06:55:19 2017
*nat

:PREROUTING ACCEPT [96:7992]

:INPUT ACCEPT [4:264]
:OUTPUT ACCEPT [52:3744]

:POSTROUTING ACCEPT [52:3744]

-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
Completed on Tue Jun 13 06:55:19 2017
Generated by iptables-save v1.4.21 on Tue Jun 13 06:55:19 2017
*filter
:INPUT ACCEPT [3587:239788]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3378:375728]
-A FORWARD -i eth1 -o eth2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth2 -o eth1 -j ACCEPT
COMMIT
Completed on Tue Jun 13 06:55:19 2017

root@testR:~# sysctl -p
net.ipv4.ip_forward = 1

(In testR, tcpdumps:)

클라이언트에서 서버로 ping을 보내면서 라우터내에 각 구간에서 tcpdump해보면 request/reply가 잘 흘러가는 것을 알 수 있습니다.

root@testR:~# tcpdump -i eth2 -P in -p icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
06:57:08.358945 IP 111.3.3.15 > 111.1.1.11: ICMP echo request, id 2116, seq 21, length 64

root@testR:~# tcpdump -i eth1 -P out -p icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
06:57:21.462999 IP 111.1.1.12 > 111.1.1.11: ICMP echo request, id 2116, seq 34, length 64

root@testR:~# tcpdump -i eth1 -P in -p icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
06:57:34.567038 IP 111.1.1.11 > 111.1.1.12: ICMP echo reply, id 2116, seq 47, length 64

root@testR:~# tcpdump -i eth2 -P out -p icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
06:57:44.647228 IP 111.1.1.11 > 111.3.3.15: ICMP echo reply, id 2116, seq 57, length 64

(test11, tcpdumps)

서버에서 tcpdump를 해보아도 클라이언트에서 오는 request가 잘 들어오고, 잘 응답하는 것도 알 수 있습니다.

root@test11:~# tcpdump -i eth1 -p icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
06:58:01.765672 IP 111.1.1.12 > 111.1.1.11: ICMP echo request, id 2116, seq 73, length 64
06:58:01.765681 IP 111.1.1.11 > 111.1.1.12: ICMP echo reply, id 2116, seq 73, length 64

(test33 ping to test11:)

[b:33y5wm5y]하지만 클라이언트에서는 수신이 되지 않고 모든 request가 버려진것으로 표시됩니다. [/b:33y5wm5y]

ubuntu@testcolor-3:~$ ping -I eth1 test11
PING test11 (111.1.1.11) from 111.3.3.15 eth1: 56(84) bytes of data.
^C
— test11 ping statistics —
247 packets transmitted, 0 received, 100% packet loss, time 247966ms
but… no problems ping between adjacent interfaces

구간별로 다시 ping 했을때, 서버에서 라우터로 ping이 잘 갑니다.

root@test11:~# ping 111.1.1.12 -c1
PING 111.1.1.12 (111.1.1.12) 56(84) bytes of data.
64 bytes from 111.1.1.12: icmp_seq=1 ttl=64 time=0.321 ms

라우터에서 클라이언트로도 ping은 갑니다.

root@testR:~# ping -c1 111.3.3.15
PING 111.3.3.15 (111.3.3.15) 56(84) bytes of data.
64 bytes from 111.3.3.15: icmp_seq=1 ttl=64 time=0.356 ms

라우터에서 서버로 ping도 문제없습니다.

root@testR:~# ping 111.1.1.11 -c1
PING 111.1.1.11 (111.1.1.11) 56(84) bytes of data.
64 bytes from 111.1.1.11: icmp_seq=1 ttl=64 time=0.492 ms

클라이언트에서 라우터로 ping도 문제가 없습니다.

ubuntu@test33:~$ ping -c1 111.3.3.14
PING 111.3.3.14 (111.3.3.14) 56(84) bytes of data.
64 bytes from 111.3.3.14: icmp_seq=1 ttl=64 time=0.541 ms