우리는 DNS 항목을 기반으로 특정 주소를 프록시하는 DNS 기반 프록시 시스템을 사용합니다. 예를 들어 website1.com의 경우 DNS는 프록시인 경우 IP를 반환하고 요청은 이를 통해 전송되지만 website2.com의 경우 DNS는 반환됩니다. 일반 주소와 요청이 직접 전송됩니다. 그건 문제없어요
그러나 이는 이름 기반 호출에만 작동합니다. 특정 IP 주소에 대해서도 동일한 작업을 수행할 수 있어야 하는데 그렇게 할 수 있는 방법이 있습니까?
예를 들어, 사용자가 IP 1.2.3.4를 사용하지만 DNS 항목이 없고 A도 PTR도 아닌 웹 사이트를 탐색합니다. 그런 다음 IP 1.2.3.4로 이동하지 않고 대신 서버 10.0.0.4로 이동하도록 호출해야 합니다. 그렇게 할 수 있는 방법이 전혀 없나요? 우리는 이것이 클라이언트 컴퓨터에 설정되어야 한다는 것을 알고 있지만, 여전히 그렇게 할 수 있는 방법이 있습니까?
클라이언트는 Windows, Mac, Linux, Android 등 무엇이든 될 수 있습니다. 아마도 모두 가능하지는 않지만 어느 것에서도 가능합니까?
답변1
네트워킹을 지정하셨으므로 네트워크 수준에 옵션이 있습니다. 아래에서는 NETWORK로 플래그가 지정된 네트워크 솔루션을 제공했습니다. 일반적으로 프록시되는 프로토콜은 소수이지만 대부분은 NAT(네트워크 솔루션)와 잘 작동합니다. HTTP와 HTTPS는 일반적으로 프록시되므로 이것이 첫 번째 응답입니다.
DNS 기반 프록시에 대한 설명이 혼란스럽습니다. DNS에서는 주소마다 다른 IP 주소를 지정하거나 관련 사이트가 동일한 IP 주소를 갖는 것이 일반적입니다. 귀하가 호스트 이름으로 웹사이트를 지정하고 있으므로 귀하가 웹사이트를 프록시로 사용하고 싶어한다고 가정할 수 있습니다. 나는 당신이 찾고 있는 용어가 "이름 기반 가상 호스팅" 또는 "이름 기반 프록시"라고 생각합니다.
HTTP 또는 HTTPS의 경우 많은 서버가 IP 주소 및/또는 HOST 헤더에 지정된 이름을 기반으로 트래픽을 프록시할 수 있습니다. Apache 웹 서버는 VirtualHosts를 사용하여 사이트를 분리합니다. 트래픽을 프록시할 수 있는 다른 소프트웨어에도 동일하거나 유사한 기능이 있습니다. Apache에서 동일한 사이트에 대해 IP 기반 및 기반 프록시를 모두 수행하려면 IP 주소에 대한 VirtualHost를 생성하고 해당 가상 호스트에 필수 이름을 추가합니다. 그런 다음 전체 사이트 또는 그 일부를 프록시하도록 VirtualHost를 구성합니다.
네트워킹: IP 주소를 다른 주소로 리디렉션하려는 경우 라우터를 통해 수행할 수 있습니다. 사용되는 메커니즘은 통화 NAT(Network Address Translation)입니다. 이 경우 DNAT(Destination Network Address Translation)가 필요합니다. 일부 라우터는 포트(서비스) 주소별로 NAT를 수행할 수 있습니다. 이 경우 관련 DNS 항목이 변환 중인 IP 주소를 반환하도록 할 수 있습니다.
편집: 추가 설명은 추가 정보를 제공합니다. 제가 이해하는 요구 사항은 다음과 같습니다. - 프록싱은 특정 주소/주소 범위의 사용자에게만 적용되며 해당 이름/IP에 대한 모든 트래픽이 프록시되는 것은 아닙니다.
- 프록시 요청은 원래 호스트가 아닌 프록시에서 발생한 것으로 나타나야 합니다. - 현재 솔루션은 요청 출처에 따라 다른 주소 레코드를 제공했습니다. (여기서 기존 솔루션이 손상되었다고 생각합니다. DNS 요청은 클라이언트가 사용하는 DNS 서버에서 시작되며 클라이언트의 장치가 아닐 수 있습니다. DNS 응답은 캐시되므로 요청 이전의 DNS 요청에 의존할 수 없습니다.)
제가 가장 효과가 있을 것으로 생각하는 솔루션은 서버와 프록시 앞의 장치에서 NAT 규칙을 사용하여 이를 처리하는 것입니다. 이렇게 하면 원래 IP 주소를 기반으로 프록시 장치로 프록시하려는 모든 트래픽을 NAT하고 다른 트래픽을 서버로 직접 전달합니다.