1. 程式人生 > 其它 >Docker與iptables 只允許特定ip訪問Docker的服務 通過iptables限制docker容器埠

Docker與iptables 只允許特定ip訪問Docker的服務 通過iptables限制docker容器埠

轉載自 https://www.icode9.com/content-3-827289.html

怎樣只允許特定ip訪問Docker的服務?
通過iptables限制docker容器埠

方法一:

Docker與iptables (在DOCKER-USER鏈中處理)
Docker至少會在iptables規則中自動安裝兩個新鏈,一個是DOCKER,一個是DOCKER-USER,可以通過如下方式檢視
iptables -S -t nat 檢視DOCKER鏈規則
iptables -S 檢視DOCKER-USER鏈規則
隨著docker版本不同,可能還會有其他鏈,但一般來說,我們應該只修改DOCKER-USER鏈即可。
如果想要對docker埠做訪問限制,可以參考如下規則:

#只允許192.168.1.1訪問docker的服務,其中ext_if是你機器上的實際網絡卡名
iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP

#只允許網段192.168.1.0/24
iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.0/24 -j DROP

#只允許ip範圍
iptables -I DOCKER-USER -m iprange -i ext_if ! --src-range 192.168.1.1-192.168.1.3 -j DROP

原文連結:
Docker and iptables
https://docs.docker.com/network/iptables/

方法二:(筆者未證實)

Docker加入自定義iptables規則鏈(新建一個鏈加在FORWARD中進行處理)
https://www.cnblogs.com/jiftle/p/13821394.html

方法三:(筆者未證實)

iptables禁用docker暴露的埠(在nat表的DOCKER鏈中處理)
https://blog.csdn.net/u010544187/article/details/86698201

方法四:(可以用,但是不確定是否合規或潛在風險)

docker 會在iptables上加上自己的轉發規則,如果直接在input鏈上限制埠是沒有效果的。這就需要限制docker的轉發鏈上的DOCKER表。
# 查詢DOCKER表並顯示規則編號
iptables -L DOCKER -n --line-number 
# 修改對應編號的iptables 規則,這裡添加了允許訪問ip的限制
iptables -R DOCKER 5 -p tcp -m tcp -s 192.168.1.0/24 --dport 3000 -j ACCEPT