
NAT 뒤의 지정된 호스트로 모든 트래픽을 리디렉션할 수 있습니까?
예를 들어 서버, 도메인 "mydomain.com" 및 NAT 뒤에 3개의 호스트가 있습니다. 3개의 하위 도메인을 구성하고 싶습니다.
host1.mydomain.comhost2.mydomain.comhost2.mydomain.com 및 각각은 모든 포트를 로컬 네트워크의 지정된 호스트로 리디렉션
합니다
.
해당 리디렉션은 다음과 같은 기능을 제공해야 합니다.
http://host1.mydomain.com(아파치를 사용하여 달성 가능)
ssh[이메일 보호됨](???)
및 다른 포트의 기타 프로토콜
도움을 주셔서 감사합니다.
답변1
이는 HTTP 요청의 호스트 헤더 정보를 검사하고 적절한 콘텐츠를 가져와 반환하는 "역방향 프록시"를 사용하여 HTTP 및 HTTPS에 대해 수행할 수 있습니다. Microsoft의 ISA(Internet Security and Acceleration)가 이를 수행할 수 있으며 Linux의 apache/squid도 마찬가지입니다.
다른 모든 포트의 경우 대부분의 트래픽에 원하는 호스트 이름이 포함되지 않고 대상 IP만 포함되기 때문에 더 힘든 시간을 보냅니다(예: "host1.mydomain에 SSH를 사용하고 싶습니다." 대신 "1.2.3.4에 SSH를 사용하고 싶습니다"). com)
특정 외부 포트를 내부 포트에 매핑하는 것은 쉬우며(포트 22 -> 호스트1:22, 포트 23을 호스트2:22로, 포트 24 -> 호스트3:22 등) 때로는 이것이 필요한 전부이기도 합니다.
모든 포트를 다른 내부 서버에 매핑해야 하는 경우 대부분의 ISP가 제공할 수 있는 여러 외부 IP 주소가 필요합니다(적어도 비즈니스 연결이 있는 경우).
답변2
아파치 mod_proxy?
답변3
아니요, DNS 이름을 기반으로 포트 전달을 수행하는 것은 불가능합니다. 도메인 이름은 IP 패킷의 일부가 아니므로 라우터가 이를 사용하여 들어오는 연결을 구별할 수 있는 방법이 없습니다.
원격 호스트가 host1.mydomain.com에 연결하면 이 이름이 IP 패킷에 포함된 IP 주소로 확인됩니다. host2.mydomain.com이 동일한 IP 주소로 확인되면 구성된 패킷은 host1.mydomain.com과 정확히 동일하게 보입니다.
이러한 이유로 서버에 여러 IP 주소가 구성되어 있으면 가능합니다.
Apache는 수신 도메인 이름을 구별할 수 있지만 이는 애플리케이션 수준에 있습니다. HTTP 1.1에서 브라우저는 아파치가 가상 호스트를 사용하여 필터링할 수 있는 HTTP 헤더에 도메인 이름을 보냅니다.