# iptables

#### 基本指令

列出現有規則

```
iptables -L -n -v
iptables -L -n -v --line-numbers
iptables -L INPUT -n -v --line-numbers
```

重啟/清除所有規則

```
service iptables stop
service iptables start

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT 
```

- -F : Deleting (flushing) all the rules.
- -X : Delete chain.
- -t table\_name : Select table (called nat or mangle) and delete/flush rules.
- -P : Set the default policy (such as DROP, REJECT, or ACCEPT).

移除指定的規則

```bash
# 顯示所有規則的編號
iptables -L INPUT -n --line-numbers
iptables -L OUTPUT -n --line-numbers
iptables -L OUTPUT -n --line-numbers | less
iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1

# 移除指定編號的規則
iptables -D INPUT 4

# 移除指定來源 IP 的規則
iptables -D INPUT -s 202.54.1.1 -j DROP

# 移除指定 Chain 包含的所有規則
iptables -F <chain-name>

# 移除指定 Chain
iptables -X <chain-name>
```

新增規則

```
# 顯示所有規則的編號
iptables -L INPUT -n --line-numbers

# 在編號 1-2 之間新增規則
iptables -I INPUT 2 -s 202.54.1.2 -j DROP
```

儲存所有規則

```
# For RedHat/CentOS/Fedora Linux
service iptables save

# For other Linux distro.
iptables-save > /root/my.active.firewall.rules
cat /root/my.active.firewall.rules
```

回復/還原規則

```
# For other Linux distro.
iptables-restore < /root/my.active.firewall.rules

# For RedHat/CentOS/Fedora Linux
service iptables restart
```

#### Learning

- \[Github\] [API for local iptables management](https://github.com/palner/iptables-api)