PfSense 방화벽 뒤에 있는 동일한 서버에서 HTTPS를 통해 도메인에 연결할 수 없습니다.

PfSense 방화벽 뒤에 있는 동일한 서버에서 HTTPS를 통해 도메인에 연결할 수 없습니다.

저는 여러 도메인 이름(예: example.com 및 anotherexample.com)이 있는 서버에서 플랫폼을 호스팅하고 있습니다. 나는 도메인 example.com을 사용하고 anotherexample.com과 통신을 시도하는 해당 서버에서 Spring Boot 백엔드를 실행하고 있습니다. 내 문제는 HTTPS를 통해 다른 도메인에 연결할 수 없는 것 같고 단순히 연결조차 되지 않는다는 것입니다. 다른 결과를 반환하는 다음 테스트를 시도했습니다.

  1. curl방화벽 뒤에 있지 않은 컴퓨터에서 사용하여https://anotherexample.com, 완벽하게 작동합니다
  2. curl서버에서 사용 하지만 대신 사용http://anotherexample.com, 완벽하게 작동합니다
  3. curl서버에서 사용하기https://anotherexample.com, 응답 없음, 결국 시간 초과됨
  4. curl방화벽에서 사용하기https://anotherexample.com, 응답 없음, 결국 시간 초과됨
  5. openssl s_client -connect anotherexample.com:443 -servername anotherexample.com서버에서 사용하면 응답이 없고 결국 시간 초과됩니다.
  6. /etc/hosts서버에서 로 변경 하면 127.0.0.1 anotherexample.com실행 시 openssl s_client -connect anotherexample.com:443 -servername anotherexample.com응답을 받습니다.

방화벽 뒤의 컴퓨터에서 호스팅되는 도메인에 연결할 수 없게 만드는 문제는 서버(Ubuntu 22.04) 또는 PfSense 방화벽(2.7.2)에 잘못 구성되어 있기 때문일 수 있습니다.


내 구조는 다음과 같습니다

  • NAT를 사용하여 공용 IP가 서버의 내부 IP에 도달하는지 확인하는 PfSense 방화벽
  • 포트 80 및 443이 열려 있는 NGINX를 실행하는 서버입니다. 인증서는 LetsEncrypt를 통해 수행되며 브라우저에서 완벽하게 작동합니다.

답변1

그것은 정상입니다. DNAT("포트 전달")는 원본과 실제 대상이 모두 동일한 서브넷에 있는 경우(또는 실제로 동일한 시스템인 경우) 작동하지 않습니다. 홈 게이트웨이("NAT 헤어핀" 검색)와 동일한 문제에 관해 많은 이전 스레드가 게시되었지만 이는 pfSense를 포함한 모든 NAT 구현에 동일하게 적용되므로 전체 설명을 보려면 이전 게시물을 검색하세요. 기본적인 문제는 방화벽이 한 방향으로만 패킷을 다시 쓸 수 있는 기회가 있고 다른 방향으로는 다시 쓸 수 없다는 것입니다.

일반적인 해결 방법은 pfSense가 소스 IP 주소도 다시 작성하도록 하여 연결이 실제로 방화벽 자체가 아닌 방화벽에서 오는 것처럼 웹 서버에 표시하는 것입니다. 그렇게 하려면 활성화하세요.NAT 반사방화벽에서. 다른 곳에서는 "NAT 루프백", "NAT 헤어핀" 또는 특정 이름이 없는 사용자 지정 SNAT 규칙이라고 합니다.

각 패킷이 반드시 이더넷을 거쳐 pfSense로 이동하기 때문에 성능에 약간의 영향을 미칠 수 있습니다.그리고완전히 기계 안에 머물 수 있는 대신에 뒤로 돌아갑니다. IP 기반 액세스를 사용하는 경우 웹앱에도 방화벽 IP가 필요합니다.

그래서 저는 개인적으로추천하다127.0.0.1NAT 리플렉션에 의존하는 대신 모든 도메인에 대한 /etc/hosts 항목을 사용합니다 .

관련 정보