iptables 裡的 table , 例如 filter , nat , mangle

filter 這個 table 主要是管理 "本機封包的進出" , 它是預設的 table

裡的 chain 有 INPUT , OUTPUT , FORWARD

nat 這個 table 主要是管理 "其他內部電腦封包的進出"

裡的 chain 有 PREROUTING , POSTROUTING , OUTPUT

 

指令說明

1. iptables -t nat -S   // -t nat : 查看 nat 這個 table , -S 顯示 ( nat table 裡的 ) 所有 chain 的 rule

 

2. iptables -t nat -S PREROUTING   // 查看 nat table 裡 PREROUTING 這個 chain 的 rule

ip6tables -S FORWARD   // 查看 IPv6 filter table 的 FORWARD 這個 chain 的 rule

 

3. iptables -S   // 沒加 -t , 預設是 filter 這個 table , 查看 IPv4 filter table 所有 chain 的 rule

ip6tables -S   // 沒加 -t , 預設是 filter 這個 table , 查看 IPv6 filter table 所有 chain 的 rule

 

4. iptables -t nat -D  PREROUTING ! -d 192.168.0.0/24 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80

// -D : 從 PREROUTING 這個 chain 刪除 rule

// ! -d : 目的地位址 "不等於"

// -p : 指定 protocol , protocol 可以填 tcp , udp , icmpv6 等等 , 也可以填數值

// -m : 載入 extension module , tcp 這個 extension module 只能在 -p tcp 時使用

// --dport : 是 tcp 的 option , 用來指定 "目的地的 port" 或 "目的地的 port range"

 

5. iptables -t nat -A POSTROUTING -o nas0 -j MASQUERADE

// 加 rule 到 POSTROUTING 這個 chain

// -A : 加入 chain 的最後一筆

// -o : 封包出去的 interface

// -j : 若符合這個 rule 要做什麼

// MASQUERADE 代表用 nas0 ( -o ) 的 ip 當作出去封包的 source ip

// 若 nas0 沒有 ip , 那麼就不會 "偽裝"

 

6. ip6tables -I FORWARD -j ACCEPT

// 加入 ACCEPT rule 在 FORWARD 這個 chain 的第一筆

// -I : 把 rule 加入 chain 裡面

// -I FORWARD 代表加入第 1 筆位置 ( 預設是第 1 筆 )

// -I FORWARD 5 代表加入第 5 筆位置

ip6tables -I FORWARD -d 2001:b021:34:301::/56 -i br0 -o eth0 -j REJECT --reject-with icmp6-adm-prohibited

// 加入 FORWARD 這個 chain 的第一筆

// 目的地是 2001:b021:34:301::/56 , input interface 是 br0 , output interface 是 eth0

// 符合以上條件 , REJECT 此封包 , 並且回覆 ICMPv6 destination unreachable ( code = 1 ) 封包

 

7. iptables -P INPUT ACCEPT

// 將 INPUT 的 policy 設成 ACCEPT

// -P : 設定 chain 的 policy , 也就是這個 chain 的 "預設動作"

 

8. ip6tables -n -v --line-numbers -L FORWARD

// -n : 顯示數值 , 不做轉換 , -v : 顯示更多訊息 , --line-numbers : 印出行數

// -L FORWARD : 顯示 FORWARD 這個 chain 裡的 rule

ip6tables -L FORWARD -nv   // 這是個人常用的指令

 

9. ip6tables -F FORWARD

// 將 FORWARD 裡的 rule 全部清除

// -F : 清除指定的 chain 裡面所有 rule ( policy 不會改變喔 ! )

//  ip6tables -F : 沒有指定 chain , 清除 filter table 裡面所有 chain 的 rule

 

10. ip6tables -A INPUT -s fe80::/64 -i ppp0 -p icmpv6 -m icmp6 --icmpv6-type 134 -j ACCEPT

// -s : 指定來源位址

// -i : 封包進來的 interface

// -m : 載入 extension module , icmp6 這個 extension module 只能在 -p icmpv6 時使用

// 可以同時使用多個 -m

// -m = --match

// --icmpv6-type : 是 icmp6 的 option , 用來指定 icmpv6 的 type , 134 是 Router Advertisement

// -j : 若符合這個 rule 要做什麼 , ACCEPT 代表讓此封包通過

 

11. ip6tables -A INPUT -s fe80::/64 -i br0 -p icmpv6 -m icmp6 --icmpv6-type 133 -m limit --limit 100/sec -j ACCEPT

// --limit : 是 limit 的 option , 100/sec 表示 "每秒最多 100 個"

 

查看詳細使用方式

man iptables

man ip6tables

 

待續

看完文章請按 讚 or 推 , 感謝啦 ~ 

創作者介紹
創作者 Kai-Cho 的頭像
Kai-Cho

Kai-Cho 的環遊世界

Kai-Cho 發表在 痞客邦 留言(0) 人氣()