- openwrt nat table
- 프로그래머스 c언어
- nat table 확인하기
- hostapd
- 나트랑 여행 경비
- programmers level2 C
- openwrt nat
- 자이언트얀
- 비즈팔찌
- 취미생활
- 나트랑 일정
- Linux
- nat 적용
- nf_conntrack
- openwrt
- openwrt nat 테이블 확인하기
- 리눅스
- openwrt netfilter
- C
- WiFi6
- 동대문부자재시장
- openwrt nf_conntrack
- ubuntu
- WiFi
- Wireless
- 네트워크
- nat 정의
- C언어
- menuconfig
- 제주도
- Today
- Total
Mandoo’s WLAN story
[network] NAT의 실제 활용 (nf_conntrack) 본문
모바일라우터에서의 Nat의 역할과 실제 데이터를 확인해보자.
Nat의 깊은 정의와 구조는 다른 블로그에서도 검색이 가능하니, 여기서는 간단한 이론과 실무에 대한것만 다뤄보겠다!
해당 내용은 openwrt를 기반으로한 모바일라우터에서의 내용임을 명심하자!
1. Nat의 역할
NAT (Network Address Translation, 네트워크 주소 변환)
- n개의 사설IP들을 하나의 공인IP로 변환
- 사용자(내부)와 인터넷(외부) 사이에서 네트워크 트래픽을 전달
- L3에서 동작하는 라우터에서 담당
아래 자료를 보면 실제로 외부와 통신하는 rmnet_data0의 IP(공인)는 175로 시작하지만,
라우터의 내부(사설) IP는 192.168.10.100으로 확인된다.
라우터에 연결된 PC들 또한 192.168.10.100 대역으로 IP를 할당 받음을 확인 할 수 있을 것이다.
2. 장점 및 당점
장점
- ISP에서 제공하는 공인 IP를 절약
- 외부 침입 및 해킹 방지 (내부 호스트들을 보호)
단점
- 경로추적이 불가능, 여러 개의 네트워크를 우회한 피싱 사기
- 패킷 확인 및 저장, 내용 변경 시 통신 지연 발생
3. NAT Table 확인
실제로 NAT가 사용되는 라우터들은 NAT에 대한 정보가 어디에 저장되어있을까?
openwrt 기준으로 NAT 데이터는 nf_conntrack이라는 table에 저장되어있다.
- netfilter 커널이 모든 네트워크 대한 내용을 기록하고 추적하기 위해 사용하는 모듈
- NAT 테이블 관련 명령어를 한번이라도 수행하면 활성화된다 ( ex. iptables -t nat –L )
- 모든 연결 정보를 해시테이블 형태로 기록되며, 텍스트 형식으로 조회 할 수 있다.
- 연결 과정에 따라 상태가 변화되고, 연결이 끊어진다면 테이블에서 제거된다.
- PC로 부터 받은 정보와 외부서버로부터 받은 정보가 하나의 데이터로 기록된다.
데이터 형식 :
ipv4 2 tcp 6 7424 ESTABLISHED src=192.168.1.229 dst=223.130.192.248 sport=58136 dport=443 packets=18 bytes=5157 src=223.130.192.248 dst=192.0.0.2 sport=443 dport=58136 packets=36 bytes=37556 [ASSURED] mark=0 zone=0 use=2
4. NAT의 실제 활용
데이터 통신을 시도해서 패킷을 생성하기 전,
아래 스크립트를 생성 및 실행해서 nat table의 내용을 저장해놓자.
#!/bin/bash
# 저장 디렉토리와 파일 설정
# 원하는 디렉토리로 변경 가능
OUTPUT_DIR="/tmp/nf_conntrack_logs"
OUTPUT_FILE="$OUTPUT_DIR/nf_conntrack_$(date +%Y%m%d%H%M%S).log"
# 디렉토리 생성 (없으면 생성)
mkdir -p "$OUTPUT_DIR"
# 실시간 저장 (1초마다 데이터 저장)
while true; do
# 타임스탬프 추가
echo "===== $(date '+%Y-%m-%d %H:%M:%S') =====" >> "$OUTPUT_FILE"
# /proc/net/nf_conntrack 데이터 저장
cat /proc/net/nf_conntrack >> "$OUTPUT_FILE"
# 1초 대기
sleep 1
done
아래 패킷은 라우터에 연결된 하위PC에서 네이버에 접속을 시도했을 때 발생한 패킷이다.
네이버에 전달된 패킷의 IP가 모두 내부IP로 할당받은 IP임을 확인 할 수 있다.
그렇다면, 라우터에서는 패킷을 어떻게 처리할까?
아래 사진을 보면 라우터의 공인IP를 통해 네이버와 통신하는 것을 확인 할 수 있다.
위 패킷의 내용은 라우터의 nf_contrack에 저장되어있음을 확인한다.
해당 테이블에 작성된 데이터를 기반으로 패킷을 주고받는다.
연결 데이터는 연결이 해제 될 시 제거된다.
'Mandoo's IT Story > Network' 카테고리의 다른 글
[Network] IPv4와 IPv6의 차이점 및 구조 (0) | 2025.01.16 |
---|---|
[Network] Serial 통신이란? (0) | 2023.03.16 |
[Networt] 공인IP, 사설IP 차이점 (0) | 2022.09.13 |