티스토리 뷰

Network/System&Tools

iptables for NAT loopback

Jacob_baek 2020. 9. 9. 13:34

NAT Loopback (or Hairpin)

NAT 환경에서 NAT 뒷단에 두개의 서버 (Server A, Server B)가 있는 상황

  • Server B는 public ip로 서비스를 하고 있는 상황이며
  • Server A에서는 public ip로 Server B에 접속해야 하는 상황

이와 같은 경우 연결이 이루어지지 않는다. 이를 NAT loopback 혹은 hairpin 이라고 이야기 한다.

iptables를 통한 연결방법

다음과 같은 rule을추가한다.

# router: 
# - eth0 : 82.120.11.22(public IP), 
# - eth1 : 192.168.1.1(internal IP)
# Server a (src) : 192.168.1.100
# Server a (dst) : 192.168.1.200(with public ip)

# 기본 nat 설정은 되어있다는 가정하에 nat loopback에 대한 해결을 할수 있는 rule만 작성하였다.

iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24 -d 82.120.11.22/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.200
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -d 192.168.1.200/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.1.1

간단하게 설명하자면 192.168.1.0/24 네트워크에서 출발한 packet이 82.120.11.22로 접근하려 할때 목적지를 192.168.1.200으로 설정하게 하고
이때 hairpin을 막기위해 192.168.1.1은 다시 192.168.1.1(gateway)로 향해서 gateway를 통해 목적지(192.168.1.200)로 접근할수 있도록 한다는 의미이다.

아래 문서를 참고하였다.

systemctl restart iptables 

이후 다시 접속 수행시 정상적으로 연결됨을 확인할 수 있다.

'Network > System&Tools' 카테고리의 다른 글

sockperf  (0) 2022.01.05
How to use a proxy server as a client  (0) 2019.06.12
iperf  (0) 2018.11.07
Cisco IOS SSH Enabling  (0) 2017.09.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함