iptable을 이용한 포트 포워딩
글쓴이: rokmn3309 / 작성시간: 토, 2006/09/09 - 2:41오전
안녕하세요.. iptable을 이용해서 방화벽안에 있는 pc에서, 막아논 포트를 사용하는 프로그램을
사용가능하게 할려고 하고 있습니다.
기존의 구성은 다음과 같습니다.
|dns:10.201.1.2~10.201.1.3| ---{internet}--------|firewall:10.102.1.1] |----------------[pc:10.102.x.x]
방화벽은 dhcp서버이며, b클래스를 사용하고 있습니다. 그리고 pc에서 웹을 사용할때에는 각 pc에
프록시 서버를 지정해서 인터넷을 사용하고 있고, 프록시 서버의 ip는 10.201.1.3 입니다.
여기에 프록시와 pc사이에 iptable를 셋팅한 pc를 넣어서 막아논 포트를 포트 포워딩후에 외부에서
이 포트로 들어온 데이터는 다시 복원하게 할려고 생각했는데요..
61.113.x.x |dns:10.201.1.2~10.201.1.3| 10.102.x.x 192.168.100.1 ---{internet}---|firewall:10.102.1.1] |-----------[iptable pc]--------------[pc:192.168.100.x] 220.218.x.x ---{internet}------[port restored]-------{internet}---
예를 들어서 21포트가 열려 있다면은 [iptable pc]에서는 다음과 같이 접속할 목적지와 포트를 변환하고,
dhcp 클라이언트로부터의 데이터를 자기에서 보낸것처럼 SNAT해줍니다. 원래 목적지는 203.104.x.x에
5000를 사용합니다.
iptables -A PREROUTING -t nat -p tcp -d 203.104.x.x --dport 5000 -j DNAT --to 220.218.x.x:21 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
다시 [port restored]에서는 다음과 같이 지정된 pc(61.113.x.x)로부터,지정한 포트(21)를 사용할경우에
미리 정한 목적지(203.104.x.x)와 포트(5000)로 다시 환원시켜줍니다.
iptables -A PREROUTING -t nat -p tcp -s 61.113.x.x -d 220.218.x.x --dport 21 -j DNAT --to 203.104.x.x:5000 iptables -t nat -A POSTROUTING -s 61.113.x.x -d 203.104.x.x -o eth0 -j SNAT --to 220.218.x.x
대충 사무실에서는 방화벽이 없는 상태에서 다른 네트웍단의 pc끼리 포트및 목적지를 바꿔서 테스트해본결과
문제 없이 되었습니다. 그런데 실제 환경에 pc를 가져다 놓고 해보면은 전혀 나가지를 않습니다.
브라우저의 프록시 서버 설정을 사용해서 인터넷을 했다면은 가운데서 투명 프록시를 한대 더 넣어서 포트 포워딩을 해주고
외부에서 다시 환원을 해주면은 정상적으로 되어야 하지 않는가요? 이것과는 다른것인가요?
Forums:
관심있는 내용이긴
관심있는 내용이긴 한데 상황이 잘 이해가 안됩니다.
언급하신 21번 포트의 문제점은 FTP 프로토콜 특성상
데이터 포트에 대한 처리가 빠져 있다는 겁니다.
서버나 클라이이언트쪽에 방화벽이 있다면 passive 모드를 사용해야 할텐데,
고려할 포트 범위가 많아지겠지요.
음...
21포트는 단순히 예로 21번 포트가 열려 있다면은 그 포트를 이용해서 다른 프로그램을 사용할려고 하는건데요.. FTP프로토콜 이야기가 왜 나오는지 이해가 잘 안됩니다만은.. 프록시(알아본봐로는) Raptor FW라는 방화벽이라고 하는데요.. 방화벽에서 21포트로 나갈 경우에는 ftp 프로토콜인지 검사를 한다는것인지..요.
댓글 달기