docker容器映射的端口無法用firewalld防火墻管理的問題
藍(lán)隊(duì)云小課堂:
1. 設(shè)置docker服務(wù)參數(shù),禁止使用iptables。
編輯docker服務(wù)的配置文件/etc/docker/daemon.json,如果沒有這個(gè)文件,需要?jiǎng)?chuàng)建一個(gè)空文件,添加以下內(nèi)容:
{
... ,
"iptables":false
}
保存配置文件。在命令行執(zhí)行以下命令重啟docker服務(wù):
# systemctl restart docker
2. 設(shè)置防火墻參數(shù),允許地址轉(zhuǎn)發(fā)
在命令行執(zhí)行以下命令,開啟防火墻的地址轉(zhuǎn)發(fā):
# firewall-cmd --add-masquerade --permanent
# firewall-cmd -reload
重啟服務(wù)器,讓配置生效。
3. 限制端口僅允許特定IP地址訪問,例如設(shè)置9200端口只能被192.168.0.184訪問
3.1 查看防火墻是否開啟了9200端口。
# firewall-cmd --list-all

3.2從防火墻中刪除9200端口,如果沒有,可忽略這一步。
在命令行執(zhí)行命令
# firewall-cmd --remove-port=9200/tcp --permanent
# firewall-cmd --reload
# firewall-cmd --list-all

已經(jīng)沒有9200端口。
3.3 添加rich-rules防火墻規(guī)則,僅允許192.168.0.184 訪問9200端口。
#firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.0.184" port protocol="tcp" port="9200" accept" --permanent
注意:上面的命令要在一行中輸入,不能分行。
# firewall-cmd --reload
讓修改及時(shí)生效。
#firewall-cmd --list-all

這樣設(shè)置,即使重啟操作系統(tǒng),也僅有192.168.0.184能訪問9200端口。
注意:如果添加rich-rule出現(xiàn)錯(cuò)誤輸入,可以把--add-rich-rule替換為--remove-rich-rule再執(zhí)行一遍命令,就能刪除這條錯(cuò)誤的規(guī)則。
更多小知識(shí),可聯(lián)系藍(lán)隊(duì)云一起探討。