iptables
iptable에서 -t nat 옵션을 사용하면 nat 테이블을 선택하고 -A 체인명으로 만들고자 하는 체인을 추가한다.
ex) iptables -t nat -A PostRouting -o eth1 --to 192.168.2.2 -j SNAT=> eth1을 통해 외부로 나가는 패킷에 192.168.2.2를 부여한다.
하나씩 보면 다음과 같다.
iptables -t :nat를 설정해줄거야(nat 설정)
-A PostRouting : 출발지를 바꾸는 정책을 추가해 줄 거야(체인 내부 옵션)
-o eth1: 출력 인터페이스는 eth1을 설정할거야.(match 규칙)
--to 192.168.2.2 192.168.2.2로 설정해줄거야
-j SNAT : SNAT 정책을 시행해 줄 거야(출발지를 바꾸는 NAT정책)
iptable의 match 규칙
iptables -s or iptables --source
출발지, IP, 도메인을 설정
iptables -d or iptables --destination
도착지, IP, 도메인을 설정
iptables !
뒤에 따라오는 규칙은 제외
iptables -p or iptables --protocol
tcp, udp, icmp 등 프로토콜을 설정
iptables -i or iptables --in-interface
입력 네트워크 인터페이스를 선택
iptables -o or iptables --out-interface
출력 네트워크 인터페이스를 선택
iptables --sport
소스 포트를 설정하고 :을 사용하여 범위 지정 가능
iptables --dport
타깃 포트를 설정하고 :을 사용하여 포트의 범위 설정
iptables --tcp-flags
SYN, ACK, FIN, RST, URG, PSH, ALL, NONE 같은 TCP flag를 지정
iptables --syn
TCP flag로 SYN만 가진 것을 지정
iptables --icmp-type
ICMP 타입을 지정
iptables -m or --match
특정모듈, 규칙과 매치
iptable --state
연결 상태와 매치
iptables --string
응용 계층의 데이터 바이트 순서와 매치
NAT테이블의 chain
PREROUTING
패킷의 도착지 주소 변경
POSTROUTING
패킷의 출발지 주소 변경
OUTPUT
호스트에서 밖으로 흐르는 패킷의 도착지 주소를 변경
INPUT
호스트 밖에서 안으로 흐르는 패킷의 주소를 변경
체인 내부 옵션
iptables -A
새로운 정책을 가장 마지막에 추가/등록
iptables -I [체인] [라인번호]
지정한 라인번호에 추가
iptable -D [체인] [라인번호]
정책 제거
iptable -R [체인] [라인번호]
정책 수정