【docker】iptable 命令解釋

1、filter(過濾規則表)

$ iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain FORWARD (policy DROP)
num  target     prot opt source               destination         
1    DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
2    DOCKER-ISOLATION  all  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
4    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
5    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
8    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
9    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
10   ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain DOCKER (2 references)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.3           tcp dpt:6800
2    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.3           tcp dpt:80
3    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.4           tcp dpt:8080
4    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.5           tcp dpt:8080
5    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.9           tcp dpt:1804
6    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.10          tcp dpt:22000
7    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.10          tcp dpt:8384
8    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.11          tcp dpt:5000
9    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.12          tcp dpt:1604
10   ACCEPT     tcp  --  0.0.0.0/0            172.17.0.13          tcp dpt:53
11   ACCEPT     udp  --  0.0.0.0/0            172.17.0.13          udp dpt:53
12   ACCEPT     tcp  --  0.0.0.0/0            172.17.0.14          tcp dpt:1404
13   ACCEPT     tcp  --  0.0.0.0/0            172.17.0.15          tcp dpt:8080
14   ACCEPT     tcp  --  0.0.0.0/0            172.18.0.6           tcp dpt:8080

Chain DOCKER-ISOLATION (1 references)
num  target     prot opt source               destination         
1    DROP       all  --  0.0.0.0/0            0.0.0.0/0           
2    DROP       all  --  0.0.0.0/0            0.0.0.0/0           
3    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
num  target     prot opt source               destination         
1    RETURN     all  --  0.0.0.0/0            0.0.0.0/0

$ iptables -S
-P INPUT ACCEPT	//定義INPUT鏈的接受策略
-P FORWARD DROP	//定義FORWARD鏈的丟棄策略
-P OUTPUT ACCEPT
-N DOCKER	//新建一條DOCKER鏈
-N DOCKER-ISOLATION
-N DOCKER-USER
//追加FORWARD鏈,並跳至DOCKER-USER鏈
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION
//追加FORWARD鏈,並指定數據包從docker0網卡流出,以鏈接跟蹤的模式,鏈接跟蹤狀態爲參數(有關聯的、成功創建的),做爲接受對象
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
//追加FORWARD鏈,並指定數據包從docker0網卡流出,最終跳至DOCKER鏈
-A FORWARD -o docker0 -j DOCKER
//追加FORWARD鏈,並指定數據包從docker0網卡流入,從除了docker0外的網卡流出,做爲接受對象
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-87e1f9a392f2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-87e1f9a392f2 -j DOCKER
-A FORWARD -i br-87e1f9a392f2 ! -o br-87e1f9a392f2 -j ACCEPT
-A FORWARD -i br-87e1f9a392f2 -o br-87e1f9a392f2 -j ACCEPT
//追加DOCKER鏈,並指定匹配數據包的目標地址爲172.17.0.3/32,指定數據包從除docker0的網卡流入,從docker0網卡流出,協議類型爲TCP,目標端口號爲6800,做爲接受對象
-A DOCKER -d 172.17.0.3/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 6800 -j ACCEPT
-A DOCKER -d 172.17.0.3/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER -d 172.17.0.4/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8080 -j ACCEPT
-A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8080 -j ACCEPT
-A DOCKER -d 172.17.0.9/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 1804 -j ACCEPT
-A DOCKER -d 172.17.0.10/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 22000 -j ACCEPT
-A DOCKER -d 172.17.0.10/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8384 -j ACCEPT
-A DOCKER -d 172.17.0.11/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 5000 -j ACCEPT
-A DOCKER -d 172.17.0.12/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 1604 -j ACCEPT
-A DOCKER -d 172.17.0.13/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 53 -j ACCEPT
-A DOCKER -d 172.17.0.13/32 ! -i docker0 -o docker0 -p udp -m udp --dport 53 -j ACCEPT
-A DOCKER -d 172.17.0.14/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 1404 -j ACCEPT
-A DOCKER -d 172.17.0.15/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8080 -j ACCEPT
-A DOCKER -d 172.18.0.6/32 ! -i br-87e1f9a392f2 -o br-87e1f9a392f2 -p tcp -m tcp --dport 8080 -j ACCEPT
//追加DOCKER-ISOLATION鏈,並指定數據包從br-87e1f9a392f2網卡流入,從docker0網卡流出,做爲丟棄對象
-A DOCKER-ISOLATION -i br-87e1f9a392f2 -o docker0 -j DROP
-A DOCKER-ISOLATION -i docker0 -o br-87e1f9a392f2 -j DROP
//追加DOCKER-ISOLATION鏈,做爲返回調用鏈
-A DOCKER-ISOLATION -j RETURN
-A DOCKER-USER -j RETURN

2、nat(地址轉換規則表)

$ iptables -nL --line-number -t nat
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           
2    MASQUERADE  all  --  172.18.0.0/16        0.0.0.0/0           
3    MASQUERADE  tcp  --  172.17.0.3           172.17.0.3           tcp dpt:6800
4    MASQUERADE  tcp  --  172.17.0.3           172.17.0.3           tcp dpt:80
5    MASQUERADE  tcp  --  172.17.0.4           172.17.0.4           tcp dpt:8080
6    MASQUERADE  tcp  --  172.17.0.5           172.17.0.5           tcp dpt:8080
7    MASQUERADE  tcp  --  172.17.0.9           172.17.0.9           tcp dpt:1804
8    MASQUERADE  tcp  --  172.17.0.10          172.17.0.10          tcp dpt:22000
9    MASQUERADE  tcp  --  172.17.0.10          172.17.0.10          tcp dpt:8384
10   MASQUERADE  tcp  --  172.17.0.11          172.17.0.11          tcp dpt:5000
11   MASQUERADE  tcp  --  172.17.0.12          172.17.0.12          tcp dpt:1604
12   MASQUERADE  tcp  --  172.17.0.13          172.17.0.13          tcp dpt:53
13   MASQUERADE  udp  --  172.17.0.13          172.17.0.13          udp dpt:53
14   MASQUERADE  tcp  --  172.17.0.14          172.17.0.14          tcp dpt:1404
15   MASQUERADE  tcp  --  172.17.0.15          172.17.0.15          tcp dpt:8080
16   MASQUERADE  tcp  --  172.18.0.6           172.18.0.6           tcp dpt:8080

Chain DOCKER (2 references)
num  target     prot opt source               destination         
1    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
2    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
3    DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:6800 to:172.17.0.3:6800
4    DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:6789 to:172.17.0.3:80
5    DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:4096 to:172.17.0.4:8080
6    DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9001 to:172.17.0.5:8080
7    DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:1804 to:172.17.0.9:1804
8    DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22000 to:172.17.0.10:22000
9    DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8384 to:172.17.0.10:8384
10   DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5000 to:172.17.0.11:5000
11   DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:1604 to:172.17.0.12:1604
12   DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53 to:172.17.0.13:53
13   DNAT       udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53 to:172.17.0.13:53
14   DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:1404 to:172.17.0.14:1404
15   DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5001 to:172.17.0.15:8080
16   DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5555 to:172.18.0.6:8080

$ iptable -S -n nat
-P PREROUTING ACCEPT	//定義PREROUTING鏈的接受策略
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N DOCKER		//新建一條DOCKER鏈
//追加PREROUTING鏈,並以地址類型的模式,目標地址類型是本地爲參數,最終跳至DOCKER鏈
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
//追加OUTPUT鏈,而且不能以127.0.0.0/8做爲目標IP地址,而以地址類型的模式,目標地址類型是本地爲參數,最終跳至DOCKER鏈
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
//追加POSTROUTING鏈,並以172.17.0.0/16爲源IP地址,但指定數據包不從docker0網卡流出,做爲地址假裝對象
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
//追加POSTROUTING鏈,並以172.18.0.0/16爲源IP地址,但指定數據包不從br-87e1f9a392f2網卡流出,做爲地址假裝對象
-A POSTROUTING -s 172.18.0.0/16 ! -o br-87e1f9a392f2 -j MASQUERADE
//追加POSTROUTING鏈,並以172.17.0.3/32爲源IP地址,以172.17.0.3/32爲目標IP地址,協議類型爲TCP,以TCP爲模式,目標端口爲6800,做爲地址假裝對象
-A POSTROUTING -s 172.17.0.3/32 -d 172.17.0.3/32 -p tcp -m tcp --dport 6800 -j MASQUERADE
-A POSTROUTING -s 172.17.0.3/32 -d 172.17.0.3/32 -p tcp -m tcp --dport 80 -j MASQUERADE
-A POSTROUTING -s 172.17.0.4/32 -d 172.17.0.4/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
-A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
-A POSTROUTING -s 172.17.0.9/32 -d 172.17.0.9/32 -p tcp -m tcp --dport 1804 -j MASQUERADE
-A POSTROUTING -s 172.17.0.10/32 -d 172.17.0.10/32 -p tcp -m tcp --dport 22000 -j MASQUERADE
-A POSTROUTING -s 172.17.0.10/32 -d 172.17.0.10/32 -p tcp -m tcp --dport 8384 -j MASQUERADE
-A POSTROUTING -s 172.17.0.11/32 -d 172.17.0.11/32 -p tcp -m tcp --dport 5000 -j MASQUERADE
-A POSTROUTING -s 172.17.0.12/32 -d 172.17.0.12/32 -p tcp -m tcp --dport 1604 -j MASQUERADE
-A POSTROUTING -s 172.17.0.13/32 -d 172.17.0.13/32 -p tcp -m tcp --dport 53 -j MASQUERADE
//追加POSTROUTING鏈,並以172.17.0.13/32爲源IP地址,以172.17.0.13/32爲目標IP地址,協議類型爲UDP,以UDP爲模式,目標端口爲53,做爲地址假裝對象
-A POSTROUTING -s 172.17.0.13/32 -d 172.17.0.13/32 -p udp -m udp --dport 53 -j MASQUERADE
-A POSTROUTING -s 172.17.0.14/32 -d 172.17.0.14/32 -p tcp -m tcp --dport 1404 -j MASQUERADE
-A POSTROUTING -s 172.17.0.15/32 -d 172.17.0.15/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
-A POSTROUTING -s 172.18.0.6/32 -d 172.18.0.6/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
//追加DOCKER鏈,並指定數據包從docker0網卡流入,做爲返回調用鏈
-A DOCKER -i docker0 -j RETURN
-A DOCKER -i br-87e1f9a392f2 -j RETURN
//追加DOCKER鏈,並指定數據包從除docker0的網卡流入,協議類型爲TCP,以TCP爲模式,目標端口爲6800,做爲目標地址轉換,目標地址爲172.17.0.3:6800
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 6800 -j DNAT --to-destination 172.17.0.3:6800
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 6789 -j DNAT --to-destination 172.17.0.3:80
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 4096 -j DNAT --to-destination 172.17.0.4:8080
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 9001 -j DNAT --to-destination 172.17.0.5:8080
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 1804 -j DNAT --to-destination 172.17.0.9:1804
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 22000 -j DNAT --to-destination 172.17.0.10:22000
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 8384 -j DNAT --to-destination 172.17.0.10:8384
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 5000 -j DNAT --to-destination 172.17.0.11:5000
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 1604 -j DNAT --to-destination 172.17.0.12:1604
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 53 -j DNAT --to-destination 172.17.0.13:53
-A DOCKER ! -i docker0 -p udp -m udp --dport 53 -j DNAT --to-destination 172.17.0.13:53
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 1404 -j DNAT --to-destination 172.17.0.14:1404
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 5001 -j DNAT --to-destination 172.17.0.15:8080
-A DOCKER ! -i br-87e1f9a392f2 -p tcp -m tcp --dport 5555 -j DNAT --to-destination 172.18.0.6:8080
相關文章
相關標籤/搜索