2014.10.09. 00:50
iptables 으로 DNAT (Port Forwarding)을 구현하던 중 클라이언트에서 서버에 접속을 하면
서버에서 받는 패킷의 Source IP가 게이트웨이(e.g. 192.168.0.1)으로 변해버려서
클라이언트의 실제 IP을 알 수 없는 문제가 발생하였습니다.
공유기는 안그러는데 생각하고... 구글링을 좀 해봤는데 못찾겠더라구요.ㅠㅠ
구글에서 알려주는 거랑 똑같이 했는데 안되더군요...
그런데 저는 제 스스로 답을 찾는 곳을 알고있었는데 뻘군데를 보고 있었네요..
제가 제 스스로 '공유기는 안그러는데'생각을 했었는데... 왜 공유기의 Rule는 보지 않았는지..ㅋㅋ
결국 공유기의 iptables 을 보고 해결했습니다.
그런데 제가 잘못된 곳에 초점을 두고 있었습니다.
NAT부분 (POSTROUTING/PREROUTING)가 아닌 FORWARD을 봤어야 했었습니다...
wan와 lan 인터페이스가 eth0, eth1이라고 하면
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
이런식으로 하면 Source IP가 변해버립니다.
해결방법은!
iptables -A FORWARD -i eth0 -m conntrack --ctstate DNAT -j ACCEPT
iptables -A FORWARD -i eth1 -m conntrack --ctstate DNAT -j ACCEPT
이렇게 하니 잘 되네요~
반응형
'리눅스' 카테고리의 다른 글
CentOS에서 no_root_squash,no_all_squash 안먹힐때... (0) | 2015.07.31 |
---|---|
허니팟 honeyd 설치하기 (0) | 2015.07.31 |
mysql이 자꾸 죽을 때... OR 실행이 안될때... (0) | 2015.07.31 |
리눅스 브릿지 방화벽 (iptables FORWARD) 작동안할때 (0) | 2015.07.31 |
VMWare에서 OpenWRT 사용하기. (0) | 2015.07.31 |
댓글