듀얼 NIC 구성시 공유기 포트포워딩 문제

labiz의 이미지

직업은 시스템 엔지니어는 아니지만, 집에서는 엔지니어로서 질문 드려봅니다.

위와 같이 구성했는데요. 집에 인터넷 라인이 4개이 들어옵니다.

eth1 를 활성화 하지 않은경우에
- 공유기의 공인 IP 포트 22240 으로 마이크로서버의 22 포트 포워딩을 통해 ssh 접근이 가능합니다. (e4200v2 에서 포트포워딩 걸어줌)

근데, eth1 를 기본게이트웨이로 설정하고 활성화(ifup) 을 하게되면 공유기의 공인IP:22240 으로 ssh 접근이 안됩니다.

이왕이면 둘다 되게 했으면 좋겠는데요. 어떻게 해야할지 모르겠네요.

굳이 이렇게 해야 하는 이유를 꼽자면, 그림에는 없지만 마이크로 서버 말고 다른 서버가 또 있는데 둘중 하나가 불능일 경우에 내부 ip 를 통해서 서버 상태를 알고 싶기 때문입니다.

File attachments: 
첨부파일 크기
Image icon bzhome_network.png43.42 KB
dgkim의 이미지

혹시 아래 링크가 유용할지 모르겠네요.

http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html

--
http://www.dgkim.net/

labiz의 이미지

ip route list table local

리눅스에서 이렇게 치면 내용이 나오는것에 놀랐습니다. 설마했는데... --;;
한번 쫙 보고 해볼께요. 좋은 자료 감사합니다.

안뇽하세요^^)/

런맨의 이미지

eth0 을 디폴트 게이트 웨이로 말고 그냥 게이트 웨이로 지정하시면
내부 아이피의 이동은 eth0으로 이동하게끔 하면 될듯 싶습니다.
테스트 무. 예전 기억이네요^^

사용 예제
단일 호스트에 대해서 라우팅을 추가 할 때
# route add -host 192.168.123.36 netmask 255.255.255.255 dev eth0

네트워크에 대해서 라우팅을 추가 할 때
# route add -net 192.168.123.0 netmask 255.255.255.0 dev eth0

게이트웨이 추가, 제거
# route add default gw 192.168.123.254 dev eth0
# route del default gw 192.168.123.254 dev eth0

61.247.208.6으로 나가는 트래픽을 192.168.123.254 게이트웨이를 통하도록 할 때
# route add -host 61.247.208.6 netmask 255.2555.255.255 gw 192.168.123.254 dev eth0

192.168.123.0 네트워크로 나가는 트래픽을 1.1.1.1. 게이트웨이를 통하도록 할 때
route add -net 192.168.123.0 netmask 255.255.255.0 gw 1.1.1.1 dev eth0

라우팅 정보가 잘못되어 라우팅을 삭제 할 때
# route del -host 192.168.123.36 dev eth0
# route del -net 192.168.123.0 dev eth0

인생은 도박이다.

labiz의 이미지

현재 상황은 아래와 같이 되어있구요.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         118.xxx.xxx.1   0.0.0.0         UG    0      0        0 eth1
default         192.168.77.1    0.0.0.0         UG    10     0        0 eth0
118.xxx.xxx.0   *               255.255.255.0   U     0      0        0 eth1
192.168.77.0    *               255.255.255.0   U     0      0        0 eth0

아래와 같이 해봤습니다.

# eth0 의 default gw 삭제
route del default gw 192.168.77.0 dev eth0
 
# 192.168.77.0/24 에 대한 라우팅 지정
route add -net 192.168.77.0 netmask 255.255.255.0 gw 192.168.77.1 dev eth0

위에 내용이 맞는지는 몰라도 안되네요 ㅠ.ㅠ

안뇽하세요^^)/

dgkim의 이미지

route 명령은 기본적으로 destination에 대한 기능만 가집니다.

그림상에서 문제가 되는 부분은 아래와 같은 통신 플로우 때문입니다.

Inbound Packet
외부허브 도착 패킷 : R_PC:nnnnn -> RG:22240 - 공유기에 패킷이 전달됩니다.
공유기 도착 패킷 : R_PC:nnnnn -> RG:22240 - 인터넷 포트(WAN PORT)로 동일한 패킷 도착 상태
공유기 처리 : R_PC:nnnnn -> SVR_PRV:22 - 서버의 내부 아이피와 포트로 패킷을 변환합니다.
공유기 출발 패킷 : R_PC:nnnnn -> SVR_PRV:22 - 내부 포트(LAN PORT)로 패킷을 발송합니다.
서버 도착 패킷 : R_PC:nnnnn -> SVR_PRV:22 - 사설 IP 주소(eth0)로 패킷이 도착합니다.

Outbound Packet
서버 출발 패킷 : SVR_PRV:22 -> R_PC:nnnnn - 도착지가 R_PC이므로, route 경로를 탑니다. inbound와는 상관없이 route를 탑니다. eth1로 갑니다.
외부허브 도착 패킷 : SVR_PRV:22 -> R_PC:nnnnn - 외부 허브의 구성에 따라 사설IP를 출발지로 허용하느냐 여부(ISP에서 차단할 수 있음)에 따라 다음 도착지가 다릅니다.
운이 좋아서 R_PC에 도착한 패킷 : SVR_PRV:22 -> R_PC:nnnnn

출발할 때는 eth0으로 들어왔지만, 나갈 때 R_PC에 해당하는 0.0.0.0 라우트를 통해 eth1에 해당하는 게이트웨이로 발송됩니다.

R_PC까지 도착할 수도 있지만, R_PC 입장에서는 출발지가 서버의 사설 IP에서 출발한 접속이 없으므로 접속이 유효하지 않습니다.

그래서 제공한 자료로는 route는 destination만 기준으로 정하는데, ip route 명령을 통해 source주소를 통한 라우트를 재정의하는 것에 대한 자료입니다.

--
http://www.dgkim.net/

labiz의 이미지

맨첨에 주신 문서만 봤을때는 어려워서 접근하기가 쉽지 않았는데, 댓글을 보니 통신플로우를 이해하게 되었습니다.
그리고 다시 주신 문서를 통해서 아래와 같이 해결했네요. 'ip rule ls' 를 쳤을때 감이 왔습니다. (정확하게 이해한게 맞는지는 모르겠네요~)

- 사용자룰을 추가하고 라우팅테이블에 적절한 source 의 룰을 적용하도록 추가.

echo 200 labiz >> /etc/iproute2/rt_tables
ip rule add from 192.168.77.0/24 table labiz
 
ip rule ls
 
# 결과
0:	from all lookup local
32765:	from 192.168.77.0/24 lookup labiz
32766:	from all lookup main
32767:	from all lookup default

- 사용자룰의 내용 추가 (eth0 를 기본으로...)

ip route add default via 192.168.77.1 dev eth0 table labiz

친절한 설명에 다시 한번 감사드립니다.

안뇽하세요^^)/