공인 IP & 사설 IP
-
공인 IP
ICANN(Inernet Corporation for Assigned Names and Numbers)
공인기관에서 인정하는 IP주소이며 인터넷을 통한 외부망에서 식별되고 통신 가능한 IP
-
사설 IP
내부망에서 사용 및 식별 가능한 IP, IPv4 개수의 한계
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
-
IP 정보 확인
자신의 PC가 외부 인터넷으로 통신 시 사용하는 공인 IP정보 확인
NAT
Network Address Translation
네트워크 주소 변환
사설 IP 네트워크를 인터넷으로 연결 -> 라우팅 가능한 공인 IP로 변환
- 보안: 내부 IP주소를 외부에 공개하지 않음
- 유연성: 공인 IP 대역은 영향을 주지 않고 내부 네트워크 구성 변경이 가능
기존 사용하던 외부에 공개된 공인 IP주소는 변경되지 않으나 내부 IP만 변경
- 비용: 공인 IP할당 비용 감소
L3 이상의 장비 또는 방화벽에서 NAT 가능
NAT 종류
Static NAT
- 1:1 NAT, 정적 NAT
- 사설 IP 1개를 공인 IP 1개로 맵핑하며 주로 외부 공개형 서버에 구성
- 외부에서 211.203.1.100으로 접속 시도
- 외부 -> 211.203.1.100, 패킷이 eth0에 도달
- 211.203.1.100 to 192.168.1.100로 1:1 NAT됨을 확인
- 192.168.1.x 대역인 eth1로 전달
- 외부 -> 192.168.1.100, 패킷은 Server에 도착
Dynamic NAT
- 내부 IP주소와 외부 IP주소가 범위 내에서 맵핑
- 내부 PC들은 외부로 통신 시 공인 IP 대역 Pool에서 할당 받는다
- 내부 192.168.1.0/24 대역의 내부 PC 20대는 웹사이트 접속 시도
- eth1에 패킷 도달, NAT 테이블의 공인 IP 대역 Pool을 확인하고 맵핑
- eth0에서 팹핑된 공인 IP주소 211.203.1.x로 변환되어 외부로 통신 시도
- 나머지 PC들도 NAT Pool을 확인하고 동일한 방식으로 맵핑
PAT(Port Address Translation)
- 1:N NAT, 여러개의 내부 사설 IP들이 1개의 공인 IP로 변환
- 공개형 서버가 아닌 내부 -> 외부로 접속이 필요한 PC들이 사용
- IP가 중복되기 때문에 Port로 세션 구분
- 내부 192.168.1.0/24 대역의 내부 PC 20대는 웹사이트 접속 시도
- eth1에 패킷 도달, NAT 테이블의 PAT 대표 공인 IP:Port를 확인하고 맵핑
- eth0에서 맵핑된 공인 IP주소 211.203.1.x로 변환되어 외부로 통신 시도
- 나머지 PC들도 동일한 방식으로 맵핑 - 공인 IP는 동일, Port 번호는 다름
Port Forwarding
공인 IP 1개로 여러대의 사설 IP를 Port로 구분하여 연결
공인 IP 1개로 여러대의 공개형 서비스를 구축할 때 사용
1. 외부에서 211.203.1.100으로 웹 접속 시도
2. 외부 -> 211.203.1.100, 패킷이 eth0에 도달
3. 211.203.1.100:80 to 192.168.1.100:80로 포트 포워딩됨을 확인
4. 192.168.1.x 대역인 eth1로 전달 되고 패킷은 웹 서버에 도착
|
5. 외부에서 211.203.1.100으로 이메일 접속 시도
6. 외부 -> 211.203.1.100, 패킷이 eth0에 도달
7. 211.203.1.100:25 to 192.168.1.100:25로 포트 포워딩됨을 확인
8. 192.168.1.x 대역인 eth1로 전달 되고 패킷은 이메일 서버에 도착
Hairpin NAT
NAT 이슈
동일 사설 네트워크 내 공인 IP로 목적지 서버에 접속하는 경우
- PC는 211.203.1.200으로 웹 접속 시도
- NAT 테이블에서 211.203.1.200은 192.168.1.200으로 맵핑됨을 확인
- 192.168.1.x 대역인 eth1로 전달 되고 패킷은 웹 서버에 도착
- 웹 서버는 응답 패킷을 전달 시도, 192.168.1.200 -> 192.168.1.100
- 목적지는 PC는 동일 대역대 IP로 확인되고 PC에게 바로 응답 패킷 전달
PC입장에서 기존 커넥션이 아닌 신규 패킷으로 판단되서 통신 불가
해결책
Hairpin Nat해결책
NAT 장비에서 출발지 IP를 NAT장비 IP로 변경
- PC는 211.203.1.200으로 웹 접속 시도
- NAT테이블에서 211.203.1.200은 192.168.1.200으로 맵핑됨을 확인
- 192.168.1.x 대역인 eth1로 전달 되고 패킷은 웹 서버에 도착
- 웹 서버는 응답 패킷을 전달 시도, 192.168.1.200 -> 192.168.1.1
- 192.168.1.00 : 192.169.1.11 맵핑 정보를 확인하고 PC에게 응답 패킷 전달
소켓 프로그래밍 작성시 사설 IP & 공인 IP의 Flow를 확인 못하여 빈번한 장애 발생