
저는 집에 있는 서버에서 Jenkins와 같은 일부 사이트/서비스를 호스팅하고 있습니다. 공개 도메인 이름을 통해 인트라넷은 물론 인터넷에서도 액세스할 수 있도록 하고 싶습니다. 이를 위해 내 (동적) 공개 ipv4를 가리키는 noip 도메인 이름을 등록했습니다. 라우터에는 포트를 내 서버로 NAT하도록 구성된 포트 전달이 있습니다.
지난 주말에 네트워크 공급자와 라우터를 변경하기 전까지는 이 모든 것이 잘 작동했습니다.
이제 내 공개 IP로 확인되는 공개 도메인 이름을 사용하여 인트라넷에서 내 사이트에 연결할 수 없습니다.
내가 테스트한 것:
- 인트라넷에서 공개 도메인 이름을 핑하면 올바른 공개 IP가 해결되고 DNS 문제가 발생하지 않습니다.
- 공개 도메인 이름(또는 IP)과 올바른 포트를 사용하면 인터넷에서 사이트에 액세스할 수 있습니다.
- 공개 도메인 이름(또는 IP)과 올바른 포트를 사용하는 경우 인트라넷에서 사이트에 액세스할 수 없습니다. 이 경우 브라우저에 네트워크 연결 시간 초과 오류(ERR_CONNECTION_TIMED_OUT)가 표시됩니다.
- 내부 IP와 올바른 포트(대상에 대한 포트 전달 규칙에 지정된 대로)를 사용하면 인트라넷에서 사이트에 액세스할 수 있습니다.
인트라넷에서 이를 올바르게 라우팅하려면 라우터의 어떤 네트워크 구성을 변경해야 합니까?
라우터 구성:
방화벽이 문제를 일으키지 않는지 확인하기 위해 현재 비활성화되어 있습니다.
이것은 내 게시물의 중복입니다.https://networkengineering.stackexchange.com/posts/59290
답변1
이는 대부분 이 유형의 가장 일반적인 문제를 기반으로 한 추측 기반 답변입니다. 그러나 완전히 확신하려면 서버가 보는 내용을 실제로 조사해야 합니다(Wireshark/tcpdump는 좋은 도구입니다).
동일한 서브넷 내의 DNAT(포트 전달)는 서버에서 클라이언트로의 반환 경로가 일반적으로 라우터를 우회하고 이 반환 트래픽을 un-NAT할 기회가 없기 때문에 매우 문제가 됩니다.
이 문제를 해결하기 위해 일부(전부는 아님) 라우터에 "NAT 루프백" 또는 "NAT 헤어핀" 옵션이 있습니다. 내가 아는 한, 이 옵션은 모든 연결에 대해 SNAT를 추가로 수행하여고객IP 주소를 사용하여 서버가 모든 연결이 라우터 자체에서 오는 것으로 생각하게 만듭니다.
루프백/헤어핀이 없으면 클라이언트가 서버에 연결할 수 있지만 서버에서 도착한 응답을 인식하지 못하므로(IP 주소가 더 이상 일치하지 않음) 연결을 설정할 수 없습니다.
라우터에 이 옵션이 없지만 수동 고급 NAT 구성이 있는 경우 유사한 NAT 규칙을 직접 작성할 수 있습니다. 즉, LAN에서 들어오고 동일한 LAN으로 돌아가는 모든 연결을 '가장'하도록 라우터에 지시할 수 있습니다.
(물론 서버에서 클라이언트의 IP 주소를 숨기는 것과 동일한 단점이 있습니다.)
그러나 IMHO, 가장 좋은 옵션(개인적으로 테스트되지 않았지만 작동하지 않아야 한다고 믿을 이유가 없음)은 서버를 다음 위치에 두는 것입니다.다른 서브넷나머지 장치에서. 클라이언트에 대한 서버의 반환 트래픽이 게이트웨이를 통과하는 한, VLAN 분리가 없고 두 서브넷이 모두 동일한 이더넷에 있는 경우에도 문제는 방지되어야 합니다.
위의 내용은 서브넷 마스크를 변경하거나 서버에 사용자 지정 경로를 추가하여 구현할 수도 있습니다.