[NET-006][기초] 라우터와 NAT로 공인·사설 IP 구분하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[NET-006][기초] 라우터와 NAT로 공인·사설 IP 구분하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 167회 작성일 26-09-01 23:33

본문

[이번 수업]

라우터가 다른 네트워크로 패킷을 보내고, NAT가 사설 주소와 외부 주소·포트를 바꾸는 흐름을 배웁니다.

[선수지식]

NET-002의 IP·서브넷·기본 게이트웨이와 NET-004의 TCP·UDP 포트를 알면 됩니다. Python 3만 사용합니다.

[학습목표]

1. 공인·사설·통신사 공유 주소를 구분한다.
2. 라우터와 NAT 변환표의 역할을 설명한다.
3. 주소가 예약 범위에 속하는지 로컬에서 판정한다.

[핵심개념]

라우터(router)는 서로 다른 네트워크를 잇는 장치입니다. 컴퓨터는 목적지가 같은 서브넷이 아니면 패킷을 기본 게이트웨이로 보내고, 라우터는 목적지와 라우팅 표를 보고 다음 경로를 고릅니다.

RFC 1918 사설 IPv4 범위는 `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`입니다. 여러 집과 조직이 같은 주소를 다시 쓸 수 있지만 공용 인터넷에서 직접 라우팅하지 않습니다. 공인 IP는 인터넷 등록 체계에서 전역적으로 구분되는 주소입니다. 다만 사설 범위가 아니라고 모두 공인인 것은 아닙니다. 루프백·링크 로컬·문서용·멀티캐스트 같은 특수 목적 주소도 있습니다.

NAT(Network Address Translation)는 경계를 지나는 패킷의 주소를 바꾸고 되돌릴 정보를 표에 기록합니다. 가정용 IPv4에서는 보통 NAPT가 사설 출발지 `IP:포트` 여러 개를 한 외부 `IP:포트` 묶음으로 바꿉니다. 응답은 변환표를 따라 원래 기기로 돌아갑니다. NAT는 암호화·인증·방화벽 자체가 아닙니다.

`100.64.0.0/10`은 RFC 6598 통신사 공유 주소입니다. 집 안 RFC 1918 주소도 아니고 일반 공인 주소도 아닙니다. 라우터의 외부 쪽 주소가 이 범위라면 통신사 NAT를 한 번 더 지나는 구조일 수 있어 외부에서 시작한 연결이 제한될 수 있습니다.

[따라하기]

다음을 `address_lab.py`로 저장합니다. 외부 서버나 공유기에 접속하지 않습니다.

```python
from ipaddress import ip_address, ip_network

PRIVATE = [
    ip_network("10.0.0.0/8"),
    ip_network("172.16.0.0/12"),
    ip_network("192.168.0.0/16"),
]
SHARED = ip_network("100.64.0.0/10")
samples = [
    "10.1.2.3",
    "172.16.0.1",
    "172.32.0.1",
    "192.168.0.5",
    "100.64.0.1",
    "203.0.113.7",
]

for text in samples:
    address = ip_address(text)
    if any(address in block for block in PRIVATE):
        label = "RFC1918 사설"
    elif address in SHARED:
        label = "통신사 공유"
    else:
        label = "RFC1918/공유 아님"
    print(f"{text:15} {label}")
```

macOS/Linux는 `python3 address_lab.py`, Windows PowerShell은 `python address_lab.py`로 실행합니다. 10·172.16·192.168은 사설, 100.64는 통신사 공유, 172.32와 203.0.113은 `RFC1918/공유 아님`으로 나옵니다. `203.0.113.0/24`는 문서 예시용이므로 실제 공인 주소로 사용하지 않습니다.

[흔한 실수]

- `172.*` 전체가 사설이라고 생각합니다.
- `100.64.0.0/10`을 RFC 1918 사설 주소로 분류합니다.
- 사설이 아닌 모든 주소를 공인 주소라고 부릅니다.
- NAT가 방화벽과 암호화를 대신한다고 믿습니다.
- 이중 NAT에서 외부 연결이 자동으로 들어온다고 생각합니다.

[보안 주의]

본인 소유 로컬 네트워크에서만 확인하고 공인 IP, 공유기 관리 화면, 장치 목록을 공개하지 마세요. 공유기 관리 비밀번호는 기본값을 바꾸고 지원되는 펌웨어를 유지합니다. 포트포워딩은 인터넷 노출을 늘리므로 이 수업에서는 설정하지 않습니다. 꼭 필요한 서비스만 방화벽 허용, 강한 인증, TLS, 업데이트, 로그 점검과 함께 공개하세요. NAT 유무와 관계없이 서버 측 접근 제어가 필요합니다.

[직접 해볼 과제]

1. `172.15.255.255`, `172.31.255.255`, `172.32.0.0`을 samples에 넣어 경계를 확인하세요.
2. 종이에 `192.168.1.20:51514 → 문서용 외부주소:40001` 변환표 한 줄을 그리고 응답의 역방향을 표시하세요.

[확인문제]

1. RFC 1918의 세 사설 IPv4 범위는 무엇인가요?
2. NAPT가 여러 내부 연결을 한 외부 IP로 구분하는 값은 무엇인가요?
3. NAT가 있어도 방화벽과 인증이 필요한 이유는 무엇인가요?

[다음 학습]

NET-007에서는 Wi-Fi와 유선 네트워크의 연결 방식·간섭·안정성을 비교합니다.

[공식 참고 자료]

- RFC 1918 사설 주소: https://www.rfc-editor.org/rfc/rfc1918.html
- RFC 3022 전통적 NAT: https://www.rfc-editor.org/rfc/rfc3022.html
- RFC 6598 통신사 공유 주소: https://www.rfc-editor.org/rfc/rfc6598.html
- IANA IPv4 특수 목적 주소: https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
- Python ipaddress 문서: https://docs.python.org/3/library/ipaddress.html

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
1,200
어제
5,103
최대
16,772
전체
772,254
Copyright © 소유하신 도메인. All rights reserved.