몇 대의 컴퓨터가있는 NAT 뒤에 네트워크가 있습니다.
기계는 다음과 같습니다.
- 라우터-NAT, dnsmasq, 전달-inet에 직접 연결
- 서버-ssh, www 및 기타 항목을 실행합니다
- 클라이언트-서버에서 작업을 수행하는 클라이언트
또한 mydomain.com도 있습니다.
server.mydomain.com이 포트를 서버로 전달하는 라우터 인 내 연결의 IP (단일 IP)를 가리키고 있습니다.
서버에는 httpd가 실행 중이며 vhost를 기반으로 다른 사이트를 제공합니다.
그래서 site1.server.mydomain.com, site2.가 있습니다.
문제는 모든 트래픽이 라우터를 통해 가고 있다는 것입니다. 로그를 확인할 때 항상 라우터 IP를 모든 것을 볼 수 있습니다 (그래서 누가 while (1)으로 스크립트를 실행하고 있는지 알기가 어렵습니다.
나는 단지 ServerAlias site1.server.local을 원하지만 대부분의 사이트에는 다른 URL이 빌드 된 곳의 어딘가에 루트 URL이 저장되어 있으므로 그렇게 할 수 없습니다.
나를위한 해결책은 dnsmasq에게 어떻게 든 서버의 IP로 * .mydomain.com에 대답하라고 말하는 것입니다.
어떻게 든 가능합니까?
답변
내 dev 서버에서 동일한 작업을 수행하여 동일한 구성으로 로컬 및 오프 사이트 서버에서 rsynced 미러를 사용할 수 있습니다.
웹 서버의 내부 인터페이스가 192.168.0.3이라고 가정하면 dnsmasq.conf에 필요한 것입니다 (다시 시작해야합니다).
address=/.server.mydomain.com/192.168.0.3
이렇게하면 * .server.mydomain.com에 대한 와일드 카드 항목이 생성되며 클라이언트가 DNS에 DNSMasq를 사용하고 서버가 내부 인터페이스에서 수신 대기하는 한 설정됩니다.
답변
나는 당신의 문제를 이해하지 못하지만 문제의 근본 원인은 라우터에서 들어오는 연결을 NAT하는 것 같습니다. 보다 구체적으로, 모든 들어오는 연결이 라우터 IP 주소와 함께 로그에 나타난다 고 말했기 때문에 들어오는 모든 연결을 가장하는 것처럼 보입니다.
라우터에서 DNAT 수신 연결 및 SNAT 발신 연결은 각 연결의 소스 IP를 보존해야합니다.