NGINX는 DNSMasq 로컬 스푸핑을 사용하여 도메인 이름으로 리디렉션합니다.

NGINX는 DNSMasq 로컬 스푸핑을 사용하여 도메인 이름으로 리디렉션합니다.

합법적인 도메인 이름과 SSL 인증서(GoDaddy.com에서 제공)를 사용하여 인터넷을 통해 데이터를 제공하는 Linux VPS가 있습니다. 나는 이 서버를 "www.myserver.com". 또한 내 인터넷 연결 도메인 이름(www.myserver.com)을 해당 로컬 컴퓨터 서버에서 실행되는 자체 NGINX 웹으로 DNS 스푸핑하는 데 사용하고 싶은 로컬 Linux 상자(내 LAN에 있음)가 있습니다.

도메인을 로컬 192.x 주소로 스푸핑하기 위해 로컬 컴퓨터에 DNSMasq를 설정하고 LAN의 다른 컴퓨터에서 로컬 주소를 보고했는지 확인했습니다.

로컬 서버 dnsmaq 스푸핑 매핑:

cat /etc/dnsmasq.d/spoof.hosts 
192.168.1.142 www.myserver.com myserver.com

LAN에 있는 별도의 컴퓨터는 스푸핑 매핑이 작동해야 함을 나타냅니다.

dig +short @192.168.1.142 myserver.com
>> 192.168.1.142

내 dnsmasq.conf:

server=127.0.0.1
listen-address=127.0.0.1
listen-address=192.168.1.142
no-dhcp-interface=
no-hosts
addn-hosts=/etc/dnsmasq.d/spoof.hosts

내 스푸핑된 호스트:

192.168.1.142 www.myserver.com myserver.com

로컬 서버에서 다음과 같이 로컬 호스트의 DNS를 조회하도록 확인자로 NGINX를 구성했습니다.

http {

    access_log off;
    include mime.types;

    default_type html;

    sendfile        on;

    keepalive_requests 50;
    keepalive_timeout  75s;

    reset_timedout_connection on;

    server_tokens off;

    server {

       listen 8080 default_server;

       resolver 127.0.0.1 valid=10s;

       location / {
           return 302 http://myserver.com/;
       }

    }

    server {

      listen       80;
      server_name *.myserver.com;

      // Various Endpoints

    }
}

문제는 내 로컬 컴퓨터 192.168.1.131:8080에 액세스할 때 내 컴퓨터로 리디렉션된다는 것입니다.실제인터넷 연결 컴퓨터 -진짜인터넷상의 도메인 이름.

로컬 스푸핑된 DNS로 리디렉션하고 싶습니다. 내가 뭘 잘못했나요? 어떻게 해야 하나요? 감사해요.

업데이트: 나도 이것을 시도했지만 운이 좋지 않았습니다.

http {
    access_log off;
    include mime.types;

    default_type html;

    sendfile        on;

    keepalive_requests 50;
    keepalive_timeout  75s;

    reset_timedout_connection on;

    server_tokens off;

    server {

          listen 80 default_server;
          server_name _;
      resolver 127.0.0.1;
          return 301 https://myserver.com/$request_uri;   

    }

    server {

        listen       443;
    server_name *.myserver.com;

    ssl on;
    ssl_certificate /etc/nginx/ssl/1e17e6d8f94cc4ee.crt;
        ssl_certificate_key /etc/nginx/ssl/example.com.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    ...

    }
}

답변1

nginx가 리디렉션을 보내면 클라이언트에게 새 URL을 방문하라고 지시합니다. 이제 새 호스트 이름이 클라이언트에서 확인되고 클라이언트가 스푸핑된 DNS 서버를 사용하지 않으므로 실제 호스트로 이동합니다.

어쩌면 nginx가 백엔드에서 콘텐츠를 가져와 클라이언트에 전달하도록 프록시 모드에서 nginx를 사용하고 싶을 수도 있습니다.

답변2

nginx가 리디렉션을 보낼 때 아무 것도 구문 분석할 필요가 없습니다. 실제로는 클라이언트에게 "Go tohttps://myserver.com대신에".

그런 다음 클라이언트는 구성된 DNS 서버 자체를 사용하여 myserver.com의 IP 주소를 찾습니다.

클라이언트가 192.168.1.142를 DNS 서버로 사용하고 다른 어떤 것도 사용하지 않도록 해야 합니다.

답변3

내가 올바르게 이해했다면 LAN에 관심 있는 두 개의 시스템이 있는 것입니다. 이를 142(192.168.2.142의 경우) 및 131(192.168.1.131의 경우)이라고 부르겠습니다.

여전히 올바르게 이해한다면 131에서 131:8080으로 연결하면 www.myserver.com을 스푸핑하여 142로 전달되기를 원합니다.

이 경우에는 142가 아닌 131에서 DNSMasq를 실행해야 합니다.

확인하셔야 할 사항은

$ dig +short myserver.com   # running on 131, no @parameter
>> 192.168.1.142

반면에 www.myserver.com을 스푸핑하여 131:8080으로 연결할 때 142로 리디렉션해야 하는 컴퓨터가 더 많은 경우 DNSMasq 인스턴스를 기본 DNS 서버로 사용하려면 해당 컴퓨터가 모두 필요합니다.

관련 정보