Network/네트워크 핵심이론 - 기초

인터넷 공유기 작동원리

Tony Lim 2023. 6. 21. 11:49

공유기 작동원리 및 개요

  • 일반적인 인터넷 공유기는 NAT(Network Address Translation) 기술이 적용된 장치이다.
  • 보통 주소와 포트번호를 모두 제어한다.
  • 인터넷 IP 주소 부족 문제를 해결해준다.
  • 패킷 필터링 방화벽과 비슷한 보안성을 제공한다.

 

공유기 구조에 따른 분류

Cone NAT

  • Host 단위로 외부포트 지정
  • Full Cone
  • Restricted Con
    • IP Address restricted
    • Port restricted

Symmetric NAT

  • TCP 세션마다 외부 포트 지정

192.168.x.x , 172.16.x.x , 10.x.x.x 인 경우 private ip이다. public internet에서 이 대역의 ip를 쓰는 host가 없다는 것이다.


Symmetric NAT 방식

 

ip, tcp header의 src, dst 가 어떻게 변하는지 잘 따라가야함

client의 첫 packet의 dst ip는  web server ip가 적혀있다. src ip는 자신이 적혀있다.

NAT는 기본적으로 inline 장비로 내부에서 외부로 내보낼때 변조를 하게 된다.

 

192.168~ private으로 internet에서 쓸 수 없는 주소다. outbound traffic 이 될때 packet을 변조하게 된다.

src ip를 공유기의 외부용 NIC  ip 로 바꾸고 port도 바꾸게 된다.

webserver까지 client의 packet이 잘 도착하게 된다. webserver는 3.3.3.3이 접속을 했다고 인식을 하게 된다.

 

공유기의 메모리가 들고 있는 NAT table 을 기준으로 변조가 일어나게 된다.

port 3000 -> 23000으로 변조했다는 기록한다.

packet이 outbound 될때 record가 추가되고 inbound 될때는 table에 변화가 일어나지 않는다.

 

webserver의 response packet이 inbound 될때 dst ip, dst port를 변경해서 client에게 제대로 전달을 하게 된다.

 

client 1,2 가 각각 1번씩 접속했지만 NAT 때문에 web server A는 3.3.3.3 인 host 1명이 2번 접속했다고 인식을 하게 된다.

발생량 기반규칙에서 문제가 될 여지가 있다.


Full Cone 방식과 내부 네트워크 접속 문제

NAT table의 경우 outbound만 추가되어서 나중에 server에서 response를 보내도 제대로 변환해서 orginal client로 보내준다.

하지만 외부의 PC가 3.3.3.3으로 바로 packet을 보내면 NAT table list에 없으니 변환을 해줄 수 가 없게 된다.
그래서 그냥 drop되버린다.

 

Full Cone NAT

webserver가 private network랑 통신을 하고 싶으면 GW 에 8080 포트로 그냥 쏘면 된다. 그러면 모든 inbound traffic을 local ip , local port로 보내게 된다.

게임서버에서는 peer to peer 통신을 하게 된다. 

랑데뷰 서버가 존재하여 private A가 랑데뷰에게 연결을 맺으면 랑데뷰가 B에게 3.3.3.3 8080 으로 연결하면 A가 ptop 통신이 가능하다고 알려주고
위 설정 때문에 원할하게 연결을 맺을 수 있음


Restricted Cone 방식

Full -> Restricted로 특정 ip , port만 inbound traffic을 허용을 하게 된다. 

내부에서 192.168.0.10 3000 을 8080 port 로 맵핑을 NAT table에 미리 추가해놓는다. 그중에 Remote ip가 15.15.15.15에서 inbound 될 때 8080으로 들어오면 192.168.0.10으로 전달해준다.

ip 말고 port까지 규격을 제한할 수 있다.

localhost 3001 에서 web server A의 7777 에 연결을 시도하면
external port를 8080으로 또 사용하는것이 Cone의 방식이다.

Symmetric의 경우는 external port를 매번 다르게 한다. 아끼지 않고 계속 바꿔가면서 쓰게 된다.


포트 포워딩

NAT table을 직접 수정하는것을 의미한다.

외부에서 80 port로 요청이 오면 무조건 192.168.0.12 :80 에게 전달을 해주게된다. 만일 webserver가 설치되어 있으면 의도한대로 동작을 하게 된 것이다.

 

UPnP와 NAT

PnP (plug and play) = usb interface가 한 예시이다.  이게 나오고나서 window 설치 과정이 확 줄었다. 알아서 인터넷으로 driver들을 다운로드 해서 설치하니까

Univeral PNP = 

private network에 있는 것을 Web server A 에서 제어하고 싶은것이다.

NAT에서 포트포워딩이 자동으로 된다.

SSDP (simple service discovery protocol) 이라 부른다.

Torrent 를 client가 사용하고 공유기가 UPNP 를 지원하면 포트포워딩 설정을 자동화 해줘서 p2p 통신을 하게 해준다.