1. 程式人生 > >docker與iptables

docker與iptables

iptables介紹

IPTABLES 是與最新的 3.5 版本 Linux 核心整合的 IP 資訊包過濾系統。如果 Linux 系統連線到因特網或 LAN、伺服器或連線 LAN 和因特網的代理伺服器, 則該系統有利於在 Linux 系統上更好地控制 IP 資訊包過濾和防火牆配置。

安裝iptables服務

其實不安裝也可以,centos7預設就有iptables,但是沒有對應service,不方便儲存配置,快速修改配置。
安裝iptables
yum install -y iptables
升級iptables
yum update iptables
安裝iptables-services
yum install iptables-services -y
開機啟動
systemctl enable iptables
systemctl start iptables
CentOS7預設的防火牆不是iptables,而是firewalle.
禁用/停止自帶的firewalld服務
停止firewalld服務
systemctl stop firewalld
禁用firewalld服務
systemctl mask firewalld

iptables常見鏈

這裡寫圖片描述
我們做訪問控制的話,主要是input與forward鏈,ip包進來的時候只會匹配其中一個哦
一般其他機器訪問宿主機的時候(或者docker net為host)會進入INPUT鏈
直接訪問docker例項埠的時候(非host模式)會進入forward鏈

注意,我們允許特定ip訪問某埠的時候,注意順序,先允許再拒絕,不然無效哦,如通過iptables -L -n檢視,對應順序為

ACCEPT     tcp  --  192.168.2.119        10.0.97.5            tcp dpt:27017
DROP       tcp  --  0.0.0.0
/0 10.0.97.5 tcp dpt:27017

另外-j REJECT –reject-with icmp-host-prohibited與DROP的作用類似,都會禁止訪問宿主機的埠

常見命令

配置檔案位置
/etc/sysconfig/iptables
儲存規則
service iptables save
檢視所有規則
iptables -L -n
檢視幫助
iptables –help
檢視版本
iptables -V
v1.4.21
儲存(針對未安裝iptables服務的情況)

iptables-save  >
iptablesrule

還原(針對未安裝iptables服務的情況)

iptables-restore < iptablesrule

檢視INPUT鏈行號(從1開始)
iptables -L INPUT –line-numbers
刪除指定鏈的第4行規則
iptables -D INPUT 4

增刪改
A追加R替換I插入D刪除,如果要定位到指定位置進行操作,格式為A/R/I/D INPUT/FORWARD num
我習慣直接改配置檔案找到類似-A INPUT -i virbr0 -p udp -m udp –dport 53 -j ACCEPT這些配置,直接修改,然後
systemctl restart iptables

實戰只允許指定ip訪問某容器埠
iptables -I FORWARD -p tcp –dport 1521 -j DROP
iptables -I FORWARD -p tcp -s 192.168.2.119 –dport 1521 -j ACCEPT
或者
iptables -A FORWARD -p tcp -s 192.168.2.119 –dport 1521 -j ACCEPT
iptables -A FORWARD -p tcp –dport 1521 -j DROP