iptables 사용법
iptables
iptables은 패킷이 netfilter를 통과할 때 적용되는 규칙을 관리하는 툴입니다. 패킷은 체인을 따라 흐르며, 각 테이블에는 체인에 따른 규칙이 정의되어있습니다.

https://stuffphilwrites.com/2014/09/iptables-processing-flowchart/
| 테이블/체인 | PREROUTING | INPUT | FORWARD | OUTPUT | POSTROUTING |
|---|---|---|---|---|---|
| (routing decision) | v | ||||
| raw | v | v | |||
| (connection tracking) | v | v | |||
| mangle | v | v | v | v | v |
| nat (DNAT) | v | v | |||
| (routing decision) | v | ||||
| filter | v | v | v | ||
| security | v | v | v | ||
| nat (SNAT) | v | v |
- 테이블
- raw: connection tracking에서 처리할지 결정
- mangle: 패킷 헤더의 일부를 변경
- nat: 패킷의 source 또는 destination 주소를 변경
- filter: 패킷 허용/거부
- security:
규칙 추가
iptables [-t <table>] -A <chain> <rule>
iptables [-t <table>] -I <chain> [<ruleNum>] <rule>
-t <table>- 생략하면 filter 테이블을 사용합니다.
-A: 테이블 마지막에 규칙을 추가합니다.-I:<ruleNum>번째에 규칙을 추가합니다.<ruleNum>이 생략되면 첫번째(1)에 추가합니다.
<rule>-p <protocol>-i <inputInterface>-o <outputInterface>-s <source>-d <destination>-j <target><target>ACCEPT: 패킷을 허용합니다.DROP: 패킷을 삭제합니다.REJECT: 패킷을 삭제하고, 적절한 응답을 보냅니다.DNAT: 패킷의 destination 주소를--to-destination <addr>로 변경합니다.SNAT: 패킷의 source 주소를--to-source <addr>로 변경합니다.MASQUERADE: 패킷 source 주소를 인터페이스 주소로 변경합니다.SNAT+--to-source <interfaceAddr>
규칙 확인
iptables [-t <table>] -L [<chain>] <option>
-t <table>- 생략하면 filter 테이블을 사용합니다.
-n: 주소를 숫자로 표시합니다.-v