![CentOS 방화벽이 Java 애플리케이션의 GET 요청을 차단합니다.](https://linux55.com/image/174734/CentOS%20%EB%B0%A9%ED%99%94%EB%B2%BD%EC%9D%B4%20Java%20%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%98%20GET%20%EC%9A%94%EC%B2%AD%EC%9D%84%20%EC%B0%A8%EB%8B%A8%ED%95%A9%EB%8B%88%EB%8B%A4..png)
CentOS 서버에 dockerized Java 웹 애플리케이션을 배포했습니다. 애플리케이션은 포트 80에 노출되며, 먼저 서버는 해당 포트에 대한 모든 요청을 차단합니다. 포트 80에서 통신을 활성화하여 이 문제를 해결했습니다.이것가이드.
그러나 내 애플리케이션은 주로 이러한 엔드포인트에 대한 GET 요청을 통해 다른 API에 요청합니다. 내 컴퓨터에서는 Docker 이미지가 제대로 작동하지만 내 애플리케이션이 CentOS 서버 내부에서 이러한 외부 API와 통신할 수 없습니다. 방화벽을 끄려고 했더니 애플리케이션이 외부 API와 다시 통신하기 시작했습니다.
이러한 요청을 활성화하는 방법을 찾으려고 노력했지만 작동하게 만드는 방법을 찾을 수 없었습니다. 저는 네트워킹 및 보안 문제에 대한 경험이 많지 않아서 검색 키워드를 효과적으로 사용하지 못하고 있는 것 같습니다.
내 애플리케이션에서 외부 API로의 요청을 활성화하려면 방화벽을 어떻게 구성해야 합니까?
편집: CentOS 8에서 FirewallD를 사용하고 있습니다. 무슨 일이 일어나고 있는지 잘 모르겠습니다. 내 앱의 로그에 요청한 대상에 도달할 수 없다고 표시됩니다.
답변1
신뢰할 수 있는 방화벽 영역에 Doket 인터페이스를 추가해야 합니다.
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 ...