Post

NAT와 포트 포워딩





NAT

  • Network Address Translation
  • l4의 TCP/UDP 포트 번호와 l3의 ip 주소를 재기록하여
    • 라우터를 통해 네트워크 트래픽을 주고받는 기술이다.
    • 이때, 패킷에 변화가 생기기 때문에 헤더의 checksum도 다시 계산하여 기록해야 한다.
    • 그리고 재기록 했다고 NAT Table에 기록을 해둔다.
  • 앞의 l3 포스팅만 보면 NAT가 사설 ip < - > 공인 ip에서만 쓰이는 것 같은데
    • 실제로는 특정 ip 주소의 특정 포트 번호로 가는 패킷을
    • 다른 ip 주소의 다른 포트 번호로 가게끔 바꾸는 역할을 한다.


img-description NAT의 한계


  • 위의 그림을 보면 a는 B한테는 통신을 할 수 있다.
    • 물론 실제로는 A가 B한테 통신을 한다.
    • 반대로 b 역시 A한테는 통신을 할 수 있다.
    • 실제로 보이는 부분은 A와 B뿐이다.
  • 그러나 보이지 않은 곳으로의 요청은 할 수 없다.
    • a와 b가 서로 통신할 수가 없다.
    • 공인 ip로만 요청을 보낼 수 있기 때문인데
    • 공인 ip는 A와 B만 갖고있을 뿐이다.
  • 이러한 통신 방식을 해결하는 것이 Port Forwarding이다.





Port Forwarding

  • 특정 ip 주소와 포트 번호에 대한 요청을 특정된 다른 ip 주소와 포트 번호로 넘겨주는 NAT의 응용이다.
    • 쉽게 말하면 192.168.100.10의 3000번 포트에 대한 요청을
      • 192.168.200.20으로 또는
      • 192.168.100.10의 4000번 포트로 바꿔서 보내는 것이다.
  • 이 방법은 사설 네트워크 대역의 호스트가
    • 사설 네트워크 대역의 바깥쪽에 서비스를 제공할 수 있도록
    • 사설 네트워크 대역을 이루고 있는 장비(공유기, 라우터 등)에서 제공한다.


img-description Port forwarding


  • B 라우터에 포트 포워딩을 설정해둔다.
    • B 라우터의 공인 ip인 2.2.2.2의 400번 포트로 요청이 들어오면,
    • 사설 네트워크 대역의 사설 ip인 4.4.4.4의 8080번 포트로 요청을 바꿔서 보내라
  • 덕분에 b는 서비스를 바깥 네트워크 대역에도 제공할 수 있게 된다.
    • A 대역의 a가 B 대역의 b로 통신을 먼저 보낼 수 있게 되었다.





This post is licensed under CC BY 4.0 by the author.