체인 구조
CODE
패킷 수신
↓
PREROUTING (NAT)
↓
라우팅 판단
├── 로컬 프로세스 → INPUT → 프로세스 → OUTPUT → 송신
└── 포워딩 → FORWARD → POSTROUTING → 송신테이블 종류: filter (기본), nat, mangle, raw
기본 명령
Bash
# 현재 룰 조회
sudo iptables -L -n -v --line-numbers
# NAT 테이블 조회
sudo iptables -t nat -L -n -v
# 특정 체인만
sudo iptables -L INPUT -n -v기본 정책 설정
Bash
# 기본 DROP (화이트리스트 방식)
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 로컬루프백 허용
sudo iptables -A INPUT -i lo -j ACCEPT
# 기존 연결 유지
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH 허용 (잠기지 않도록 가장 먼저!)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# HTTP / HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# ICMP (ping)
sudo iptables -A INPUT -p icmp -j ACCEPT특정 IP 차단·허용
Bash
# IP 차단
sudo iptables -A INPUT -s 203.0.113.0/24 -j DROP
# IP 허용 (특정 포트)
sudo iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 5432 -j ACCEPT
# 차단 룰 삭제 (줄 번호 사용)
sudo iptables -L INPUT --line-numbers
sudo iptables -D INPUT 3 # 3번째 룰 삭제
# 특정 룰 삭제
sudo iptables -D INPUT -s 203.0.113.0/24 -j DROPNAT 마스커레이딩 (인터넷 공유)
Bash
# IP 포워딩 활성화
echo 1 > /proc/sys/net/ipv4/ip_forward
# 영구 적용: /etc/sysctl.conf에 net.ipv4.ip_forward = 1
# NAT 설정 (인터넷 공유, eth0이 외부 인터페이스)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT포트포워딩
Bash
# 80 → 내부 서버 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 8080 -j ACCEPT
# 로컬 포트 리다이렉션 (3000 → 80, 루트 없이)
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3000룰 영구 저장
Bash
# Ubuntu / Debian
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
# CentOS / RHEL
sudo service iptables save
# 저장 위치: /etc/sysconfig/iptables
# 수동 저장·복원
sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v4전체 룰 초기화
Bash
sudo iptables -F # 모든 룰 삭제
sudo iptables -X # 사용자 정의 체인 삭제
sudo iptables -t nat -F
sudo iptables -P INPUT ACCEPT # 정책을 ACCEPT로 복원편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서GNU/Linux man 페이지 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.