我在 CentOS 服务器上部署了一个 dockerized Java Web 应用程序。该应用程序暴露在端口 80 上,首先,服务器会阻止对该端口发出的每个请求。我设法通过启用端口 80 上的通信来解决这个问题这指导。
但是,我的应用程序向其他 API 发出请求,主要是通过对这些端点的 GET 请求。在我的机器上,docker 镜像工作得很好,但我的应用程序无法从 CentOS 服务器内部与这些外部 API 进行通信。我尝试关闭防火墙,应用程序再次开始与外部 API 通信。
我尝试寻找启用这些请求的方法,但找不到任何可以使其工作的方法。我对网络和安全问题不是很有经验,所以也许我无法有效地使用搜索关键字。
如何配置防火墙以启用我的应用程序向外部 API 发出的这些请求?
编辑:我正在 CentOS 8 中使用 FirewallD。我不确定出现了什么问题。我的应用程序上的日志显示无法达到请求的目标。
答案1
您需要将 doket 接口添加到受信任的firewalld区域中:
firewall-cmd --zone=trusted --change-interface=docker0
firewall-cmd --zone=trusted --add-masquerade --permanent
firewall-cmd --reload
我还听说,如果您在 /etc/firewalld/firewalld.conf 中将防火墙后端从“nftables”切换为“iptables”,它可以开箱即用。
答案2
抱歉,我还不能添加评论,但是:
您使用什么防火墙?
当您请求其状态时,它会打印出什么?
如果您正在使用ufw
尝试ufw allow out ...