본문 바로가기
리눅스

[iptables] DNAT할때 Source IP가 변하는 문제...

by Joseph.Lee 2015. 7. 31.

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
이렇게 하니 잘 되네요~


반응형

댓글