요점을 살펴보겠습니다:

요점을 살펴보겠습니다:

요점을 살펴보겠습니다:

내가 가지고 있는 구체적인 질문 중 하나는 10.0.3.X/24 네트워크의 클라이언트에 액세스할 수 없다는 것입니다 subdomain.site.com. 1.4를 호출할 때 10.0.2.X/24 및 10.0.3.X/24의 클라이언트를 활성화하려면 어떻게 해야 합니까 subdomain.site.com?


내 웹 서버 LAN에 대한 DNS 확인 작업을 수행하기 위해 WAN 측 도메인 이름을 사용하고 싶습니다. subdomain.site.com예:N모든 LAN 서브넷의 클라이언트또는 적절한 라우팅을 subdomain.site.com위해 입력하기만 하면 됩니다 (확장 가능하므로 불가능함).site.com/etc/hosts

내 LAN에는 다음을 사용하여 생성된 여러 서브넷이 있습니다.발광 다이오드(네트워크.1) 및오픈WRT(네트워크.2 및 네트워크.3):

10.0.1.X/24 Main puppy with WAN interface facing internet and NAT, web server fixed at 10.0.1.4 with ports forwarded
10.0.2.X/24 Auxiliary router with WAN interface facing 10.0.1.X/24 (routed)
10.0.3.X/24 Auxiliary router with WAN interface facing 10.0.1.X/24 (routed)

헤어핀 NAT/루프백 NAT 솔루션이 필요하지 않습니다.나는 다음과 같은 이유로 DNS를 사용하는 솔루션을 선호합니다.

  1. 클라이언트에서 나가는 호출은 권한 있는 DNS를 호출하여 IP(라우팅을 위해!)를 조회한 다음 패킷을 해당 대상으로 보냅니다.
  2. 도착하면 서버에 DNAT가 지정됩니다.
  3. 소스 IP는 클라이언트의 로컬 주소이므로 서버는 패킷의 소스 IP를 사용하여 클라이언트를 직접 호출합니다.
  4. 클라이언트는 이 패킷이 게이트웨이에서, 그리고 게이트웨이 확장에서 간접적으로 나올 것으로 예상하기 때문에 이 패킷을 거부합니다. 주소. 위의 DNS에서 제공됩니다.
  5. NAT 루프백은 아웃바운드 소스 IP를 게이트웨이의 LAN 쪽 주소로 변환하여 이 문제를 해결합니다. 만들다
  6. 그러면 서버는 클라이언트에 직접 응답하지 않고 게이트웨이에 응답합니다. 시원한 콩.

이 트래픽의 문제점은 LAN을 떠나 글로벌 DNS 서버에 접속하여 IP 주소를 얻는 것이 비효율적이라는 것입니다. 서버가 로컬 피어인 경우(NAT의 같은 쪽에 있고 내 경우에는 반드시 동일한 로컬 서브넷 내에 있을 필요는 없음) 클라이언트와 서버가 로컬 피어인 경우 LAN을 떠나는 이유는 무엇입니까? 루프백 NAT 흐름에 대한 자세한 설명은 여기에서 확인할 수 있습니다. https://unix.stackexchange.com/a/282094/33386.

나는 이것을 사용하여 내가 원하는 것을 달성할 수 있다는 것을 알고 있습니다.DNS 분할 지평선아니면 요즘 사람들이 부르는 인기 있는 용어가 무엇이든 간에요. 또한 경우에 따라 전역 이름 서버보다 로컬 이름 서버에 우선순위를 두는 것도 이 문제를 해결할 수 있습니다.여러 서브넷(다중 DHCP+DNS 서버)을 사용할 때 OpenWRT 또는 LEDE에서 이 기능을 구현하는 방법은 무엇입니까?누군가 이런 일을 했을 것입니다.

현재 10.0.1.X/24의 클라이언트는 subdomain.site.com해당 dnsmasq 설정을 사용하여 액세스 할 수 있지만 /etc/config/dhcp이것이 하위 도메인을 포함하지 않는다고 생각하기 때문에 이유를 모르겠습니다.

config domain
        option name 'site.com'
        option ip '10.0.1.4' # LAN address of web server

답변1

첫 번째 누락된 요소

dnsmasq 구성에 두 가지를 추가해야 했습니다.보조 라우터파일에서 /etc/config/dhcp:

    list server '10.0.1.1'# Clients will still get 10.0.3.1 as dns server
    list rebind_domain 'subdomain.site.com' # Allow rebind to web server

list serverdnsmasq가 DNS 쿼리를 10.0.1.1(기본 라우터 dnsmasq 서버)의 서버로 전달하도록 합니다 . list rebind_domainDNS 리바인딩 보호가 유지될 수 있도록 특정 사이트의 리바인딩을 허용합니다 .여기 "jow"님 감사합니다. 또 다른 옵션은 DNS 리바인딩 보호를 완전히 비활성화하는 것입니다. 또는 사용할 수도 있지만 option rebind_localhost 1테스트하지는 않았습니다. 이 단계가 없으면 ping을 할 수 없습니다 subdomain.site.com.

두 번째 누락 요소

다음 항목을 추가합니다 /etc/dnsmasq.conf.메인 라우터.

address=/.site.com/10.0.1.4

.모든 하위 도메인의 자리 표시자를 확인하세요. 이 변경 사항은 에서도 구현될 수 있지만 /etc/config/dhcp어떻게 구현되는지는 잘 모르겠습니다.

원래 두 번째 누락 요소(제한됨)

이것이 제가 나중에 포기한 초기 솔루션이었습니다. webdav를 사용할 때와 같이 확장된 URL에 대한 하위 도메인이나 자리 표시자가 없다는 제한 사항을 10.0.1.4 subdomain.site.com적용하여 기본 라우터 파일에 항목( )을 추가했습니다 ./etc/hosts

127.0.0.1 localhost

::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.0.1.4 subdomain.site.com

logqueries 1모든 DNS 쿼리 로깅을 추가하여 /etc/config/dhcp이를 테스트합니다 . 다음과 유사한 내용이 나타나 이것이 /etc/hosts소스임을 나타냅니다.

Fri Jan  5 14:11:20 2018 daemon.info dnsmasq[7368]: 73 10.0.3.149/64299 /etc/hosts subdomain.site.com is 10.0.1.4

무엇이 작동하지 않았나요?

/etc/config/dhcp놀랍게도 기본 라우터의 다음 구성은 10.0.1.X/24서브넷 내에서만 작동합니다.

config domain
        option name 'site.com'
        option ip '10.0.1.4'

config domain
        option name 'subdomain.site.com'
        option ip '10.0.1.4'

누구든지 이것에 대해 밝힐 수 있다면 그 이유를 알고 싶습니다! 어쩌면 뭔가 잘못된 것일까요?

보조 라우터를 추가하는 것도 내 상황에 별로 도움이 되지 않는 것 같습니다 option dns 10.0.1.1./etc/config/network

config interface 'lan'
        option ifname  'eth0.1'
        option force_link '1'
        option type    'bridge'
        option proto   'static'
        option ipaddr  '10.0.2.1'
        option netmask '255.255.255.0'
        option dns     '10.0.1.1'

config interface 'wan'
        option ifname 'eth0.2' # Comment this out if connecting as sta using wlan
        option proto   'dhcp'
        option netmask '255.255.255.0'
        option gateway '10.0.1.1'
        option dns     '10.0.1.1'

이 옵션을 추가하면 항목이 에 표시됩니다 cat /tmp/resolv.conf.auto. 하지만 list server 10.0.1.1위에서 언급한 것처럼 WAN 인터페이스가 추가되었습니다 nameserver 10.0.1.1.

보조 라우터에 dhcp_options를 추가해도 /etc/config/dhcp도움이 되지 않습니다.

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '72h'
        option ra 'server'
        #list 'dhcp_option' '3,10.0.1.1' # SET DEFAULT GATEWAY, CAUTION CAN BREAK STUFF
        #list 'dhcp_option' '6,10.0.1.1' # SEND DNS SERVER ADDR TO CLIENTS, CAUTION CAN BREAK STUFF

답변2

분할 지평선 또는 로컬 네임서버가 필요합니다.

10.0/16 뒤의 클라이언트가 subdomain.example.com해당 영역에 대해 권한이 있는 로컬 이름 서버를 가리키도록 하고, 그렇지 않으면 반복합니다. 이는 별도의 이름 서버 또는 분할된 범위를 통해 달성할 수 있습니다.

아래의 두 예에는 작업을 수행하기 위한 최소한의 사항이 포함되어 있습니다. 보안 문제 및 기타 구성 세부 사항은 이 질문의 범위를 벗어납니다.

나는 독서를 적극 권장합니다DNS 가이드그리고DNS 및 바인딩, 그와 같은 순서로.


수평으로 분할

view "internal" {
  match-clients { // Add any other "on-net" blocks here.
    localnets;
    127.0.0.1;
  };
  recursion yes;

  zone "example.com" in {
    type master;
    file "internal/example.com"; // Contains RFC1918 addresses for on-net hosts
  };

  zone "." in {
    type hint;
    file "root.cache";
  };
};

view "external" {
  recursion no;
  zone "example.com" in {
    type master;
    file "external/example.com"; // Contains public IPs for hosts
  };
};

독립 도메인 이름 서버

이는 일반적인 BIND 인스턴스이지만 내부 영역에 대해 권한을 갖도록 구성됩니다.

options {
  recursion yes;
  // and any other options you want
};

zone "example.com" in {
  type master;
  file "example.com"; // Contains the RFC1918 addresses.
};

zone "." in {
  type hint;
  file "root.cache";
};

관련 정보