본문 바로가기
개발 및 운영/AWS GCP Cloud

AWS NAT Instance 포트포워딩시 Source IP 유지하기

by Joseph.Lee 2019. 10. 26.

https://gist.github.com/jc-lab/b80aa4183c0f8c3971260ac2ee49443d

 

AWS NAT Instance configure-pat.sh for Keep source ip

AWS NAT Instance configure-pat.sh for Keep source ip - configure-pat.sh

gist.github.com

기존에는 configure-pat.sh에

 

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

으로 되어있는데 이러면 내/외부 모든 패킷에 MASQUERADE가 적용되어 DNAT를 이용한 Port Forwarding시 Source IP가 NAT Instance의 IP으로 변하게 됩니다.

따라서 MySQL의 User에 IP Rule이 적용되어있으면 로그인 할 수 없게 되죠..

이를 해결하기 위해서는 외부망으로 다시 나가는 패킷에만 MASQUERADE를 해야 하는데

iptables -t nat -A POSTROUTING -o eth0 ! -d 내부망 MASQUERADE 으로 바꿔야 합니다.

Cloud 환경은 친절하게도 metadata url을 지원해서 내부망 IP를 자동으로 가져올 수 있습니다.

자동으로 위 처리를 해주는 스크립트로 변경하였습니다.

 

AWS에서 이렇게 진즉에 적용해주었음 참 고마웠을텐데요...

 

(그나저나 여담으로.. 뉴스는 안나왔지만 어제 밤 8시쯤 넘어서 언젠가.. 잠깐 AWS Console에 장애가 있었네요..

로그인도 안되고 창도 엄청 늦게 뜨거나 안나오고.. EC2/Lambda등 서비스에서는 문제없고 AWS Console에만 문제가 있었습니다. Console만져야 하는데 긴장좀 탔네요..ㅠㅠ)

반응형

댓글