728x90
공유기 작동 원리
- 일반적인 인터넷 공유기는 NAT(Network Address Translation) 시술이 적용된 장치이다.
- NAT를 사용하면 하나의 Host로 여러 개의 IP를 제공할 수 있게 해 준다.
- 보통 주소와 포트번호를 모두 제어한다.
- 인터넷 IP주소 부족 문제를 해결해 준다.
- 패킷 필터링 방화벽과 비슷한 보안성을 제공한다.
공유기 구조에 따른 분류
- Con Nat
- Host 단위로 외부포트 지정
- Full Cone
- Restricted Con
- IP Address restricted
- Port restricted
- Symmetric Nat
- TCP 세션마다 외부 포트 지정
- 보안성이 뛰어나다.
공유기 네트워크 구성 예

- private IP는 인터넷에서 통용되는 IP가 아니다.
Symmetric NAT 방식

- Client(192.168.0.10)에서 처음 Web Server(15.15.15.15)로 요청을 보낼 때의 모습니다.
- 시작지 주소는 Client 주소가 되며, 목적지 주소는 Server가 된다
- 이때, Gateway(공유기)에서 변조가 일어난다.

- Outbound 시점에 IP/TCP 가 변경이 된다.
- Outbound 시점이 트리거가 되며, 변조하고 관련된 테이블이 생성이 된다(NatTable)
- 출발지 IP 주소가 192.168.0.10에서 3.3.3.3으로 변경
- 출발지 포트가 3000번에서 23000번으로 변경
- 웹 서버에서는 3.3.3.3에 연결이 되었다고 생각을 하는 것이다.

- 공유기가 메모리에 NAT table을 기록으로 남긴다.
- outbound 시점에 NAT table에 기록이 추가되고, inbound 시점에는 추가되는 것이 아니다.

- 3-way-handshake에서 syn+anc에서의 목적지 출발지 어떻게 될까?
- 출발지 :15.15.15.15
- 도착지: 192.168.0.10
- InBound 시점에 공유기가 도착지 주소를 NAT table을 참조하여 Local IP주소로 전달하도록 한다.

- 가정 1 : 192.168.0.10:3000 -> 23000 포트 접근
- 가정 2: 192.168.0.10:4000 -> 23001 포트 접근
- 웹 서버 입장에서는 3.3.3.3에서 2번의 접근이 일어난 것으로 인식을 한다.
symmetric 방식 장점 : 한번 통과(outbound)했던 패킷 같은 경우 라우터 테이블에 저장이 되어 있기 때문에 접근할 수 있지만, 처음 외부에서 들어오는 패킷 같은 경우에는 NAT table에 없기 때문에 알아서 라우터에서 걸러준다.
Full Cone

- 192.168.0.10 호스트를 3.3.3.3:8080번에 매핑하므로 3.3.3.3:8080으로 유입되는 모든 것을 192.168.0.10:3000으로 보낸다.
- 보안성은 떨어지고, Full Cone 방식을 잘못 쓴다면 패킷을 다른 호스트로 보낼 수 있는 이슈가 있다. -> 대신 속도가 빠르다.
- Host IP + Port -> Exeternal Port와 매핑
Restricted Cone

- 192.168.0.10:8080과 15.15.15.15간의 통신으로 말미암아 15.15.15.15의 패킷 유입만 허용되고 나머지는 차단한다.
- Webserver B 같은 경우에는 접근이 불허
- Webserver A는 Port 번호에 상관 없이 모두 허용
- Inbound 시점에 External Port와 IP도 같이 보자
Port Restricted Cone

- 192.168.0.10:8080과 15.15.15.15:5555간의 통신만 허용하고 나머지는 모두 차단된다.
- symmetric 방식과의 차이
- symmetric같은 경우 Exeternal Port를 매번 변경하면서 엔트리를 매번 추가한다(예측이 가능..)
- Port Restricted Cone 같은 경우 External Port를 유지하며, 엔트리를 매번 추가하지 않는다.
Port Fowarding
Nat Table을 직접 수정할 수 있게 하는 것

- Outbounding에 의해서 Nat Table을 설정하는 것이 아니라 사용자가 직접 수정하는 방식
- 이를 통해 PtoP 통신이 원활하게 된다.(특정 Port를 설정)

- 192.168.0.12 호스트가 80번 포트를 사용하는 웹 서버를 띄운 뒤, PC#3에 접속을 요청했다.(접근 불가)
- why?. NAT Gateway에 매핑 테이블에는 연결 가능한 호스트가 등록이 안되어 있기 때문
- 포트포워딩을 통해 80번 포트는 모두 192.168.0.12 호스트에 80번 포트로 접근하도록 Nat table 수동 수정
- PC#3에서 원활하게 접근가능
UPnP

- 공유기의 기본 설정을 보면 UPnp가 기본 설정이 되어 있다.
- UPnP에는 SSAP 프로토콜로 통신한다.
- UPnP 같은 경우 홈쇼핑을 생각하면 쉽다.
- 홈쇼핑에서 상품을 광고하는데 고객에서 특정 버튼을 누르면 해당 호스트에 작업을 진행해 준다고 생각해 보자
- 만약 해당 고객이 공유기를 사용하고 있다면, 홈쇼핑에서는 공유기에 포트포워딩 설정을 해달라고 요청하고 고객이 매번 설정해야 한다.
- UPnP를 공유기에서 지원한다면, 이를 자동화해서 특정 포트에서 PtoP 통신을 지원할 수 있게 해 준다(자동으로 Nat table에 등록)
- Torrent가 대표적인 UPnP 예시이다.
728x90