Docker容器必備技能 -- iptables


Iptables

介紹

linux的包過濾功能,即linux防火牆,它由netfilter 和 iptables 兩個組件組成。
netfilter 組件也稱為內核空間,是內核的一部分,由一些信息包過濾表組成,這些表包含內核用來控制信息包過濾處理的規則集。
iptables 組件是一種工具,也稱為用戶空間,它使插入、修改和除去信息包過濾表中的規則變得容易(服務於四層或四層以下)。

四表五鏈(只介紹常用的filter和nat)

 

 

filter表

filter表主要是過濾數據包的,IPTABLES幾乎所有的數據包過濾都在此表中實現的,filter表也是IPTABLES中默認的表,此表中還包含三個鏈如下:

1 INPUT鏈
2   過濾所有的目標地址是本機的數據包
3 FORWORD鏈
4   過濾所有從本機路過的數據包
5 OUTPUT鏈
6   過濾所有從本機出去的數據包

 

 nat表

nat表主要是用於做網絡地址轉換的(NAT),在iptables中可以做SNAT(源地址轉換),DNAT(目標地址轉換),PANT(即跟SNAT差不多,不一樣的是SNAT的源地址是固定的,而PNAT的源地址是不固定的,當使用ppp或pppoe的方式連接互聯網的時候一般適應這個) nat表中包含兩個鏈如下:

1 PREROUTING鏈
2   在數據包到達防火牆的時候改變目標地址 DNAT應用於此鏈.
3 OUTPUT鏈
4   可以改變本地產生的數據包的目標地址
5 POSTROUTING鏈
6    在數據包離開防火牆的時候改變源地址,SNAT應用於次鏈

 

 注意:防火牆的默認規則是最后匹配

 

iptables工作流程圖

 

 

常用命令

查看

iptables -L -n # 查看默認filter表規則詳情

iptables -t filter -L -n --line-number| grep -C 10 INPUT

 

添加(所有操作目前只在內存里面,重啟就丟失)

# -A 規則添加到末尾
iptables -t filter -A INPUT -p tcp --dprot 180 -j DROP

# -I 默認每次插到首行
iptables -t filter -I INPUT -p tcp --dport 800 -j DROP
# -I INPUT 8 也可以指定插到第幾行
iptables -t filter -I INPUT -p tcp --dport 800 -j DROP

# -i 流量的入口 -s 源地址
iptables -t filter -A INPUT -i eth0 -s 10.0.0.104 -j DROP

# ! -s 排除某ip
iptables -t filter -A INPUT -p tcp -i eth0 ! -s 10.0.0.1 -j DROP

# 排除指定網段
iptables -t filter -A INPUT -i eth0 -p tcp ! -s 10.0.0.0/24 -j DROP

 

刪除

iptables -F # 清空所有規則,但不包括默認規則

iptables -t filter -D INPUT -p tcp --dport 180 -j DROP

iptables -t filter -D INPUT

 

 默認規則的配置(最后匹配)

iptables -P INPUT DROP

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM