개발공부/네트워크
NAT-1
tae_98
2025. 1. 5. 21:21
, gpt
NAT?
- 라우터에서 ip를 변환하는 기술
- ip 헤더를 수정하여 동작
- static nat = 내부 네트워크 사설 ip를 고정
- dynamic nat = 동적으로 매핑
STUN
- 프로토콜임
- nat 를 통해 p2p 통신을 하기 위함
- stun 서버 <--> stun 클라이언트 사이 통신에서
- 내가 사설망에 있는지 (nat 사용 하는지)
- nat 동작이 어떻게 되는지
- nat에 의해 변경되는 ip, 포트는 어떻게 되는지
- 를 기술함
NAT 동작
(1) (2)
1.1.1.1:10 ====> NAT(5.5.5.5):50 ====> 2.2.2.2:20
라 가정하면
- (1) 에서
- src ip = 1.1.1.1 (=internal ip)
- src port = 10 (internal port)
- dst ip = 2.2.2.2
- dst port = 20
- (2) 에서
- src ip = 5.5.5.5 (=external ip)
- src port = 50 (external port)
- dst ip = 2.2.2.2
- dst port = 20
Address, port mapping
Endpoint independent mapping
- 송신하는 패킷의 src ip, port 가 동일하다면
- external ip, 포트가 동일
- Endpoint 에 영향 안받음
Address Dependent Mapping
- 송신하는 패킷의 src ip, port 가 동일, dst ip 가 동일하다면
- external ip, 포트가 동일
- endpoint 의 ip 주소가 다르면 다른 포트 사용
Address and Port dependent mapping
- src ip 와 포트, dst ip 와 포트 모두 동일해야
- external ip, 포트가 동일
IP Address Pooling
Arbitrary
- 하나의 internal endpoint가 보내는 패킷이지만 session 이 다르면 다른 external ip로
Paired
- 하나의 internal endpoint 가 session이 달라도 같은 external ip 로
- rfc 4787에서 paired사용을 권고
Port Assignment
Port Preservation
- internal endpoint가 보낸 source port값이 external 에서도 같음
Port Preservation
- nat 장비가 임의의 포트로 변경
Port Overloading
- 포트 충돌(할당 범위 초과 등) 이 나오면 entry를 새것으로 덮어씌워버림
- ex) ~5까지 인데 192.168.1.6 이 들어오면 external 에서 그냥 ~.5로 새 entry
- 이전 통신(.5배정) 통신 불가능
- ex) ~5까지 인데 192.168.1.6 이 들어오면 external 에서 그냥 ~.5로 새 entry
No Port Overloading
- 충돌시 internal 포트 와 다른 포트를 할당
- ex) ~5까지 인데 192.168.1.6 이 들어오면 external port를 다른포트로 변환
Mapping Timer
- mapping timer 시간 후 엔트리 삭제
- 짧을 경우 nat session을 유지하기 위해 keep alive 을 자주보내야함
- 2분내로 expire 시키진 않도록..