開啟 docker-compose 網路和一台外部伺服器中的 iptables

開啟 docker-compose 網路和一台外部伺服器中的 iptables

我正在嘗試使用 docker compose 部署一個包含 mysql 伺服器的系統。伺服器在同一網路中的 docker 容器之間共用。

我需要從網路中的特定外部伺服器存取 mysql 資料庫,因此我在 docker compose 檔案中發布了 mysql 連接埠(3306)。

但出於安全考慮,我想阻止任何其他嘗試存取此連接埠的 IP。

我嘗試了許多 iptables 規則,所有這些規則要么阻止 docker-compose 中的容器,要么允許其他伺服器存取該連接埠。

ps我都會更改mysql伺服器內的使用者權限,但是阻塞連接埠是我們要做的第一件事。

答案1

您可以在 DOCKER-USER 表中設定 iptables 條目。這是在 docker 之外完成的。例如,如果您擔心 eth0 介面上來自 10.0.0.0/24 以外的任何網路向連接埠 3306 發出的請求:

iptables -I DOCKER-USER -i eth0 ! -s 10.0.0.0/24 -p tcp \
  -m conntrack --ctorigdstport 3306 -j DROP

請注意,conntrack需要 conn track 原始目標連接埠而不是普通的 tcp 連接埠規則來處理 NAT 規則和連接埠對映。

相關內容