요점을 살펴보겠습니다:
내가 가지고 있는 구체적인 질문 중 하나는 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를 사용하는 솔루션을 선호합니다.
- 클라이언트에서 나가는 호출은 권한 있는 DNS를 호출하여 IP(라우팅을 위해!)를 조회한 다음 패킷을 해당 대상으로 보냅니다.
- 도착하면 서버에 DNAT가 지정됩니다.
- 소스 IP는 클라이언트의 로컬 주소이므로 서버는 패킷의 소스 IP를 사용하여 클라이언트를 직접 호출합니다.
- 클라이언트는 이 패킷이 게이트웨이에서, 그리고 게이트웨이 확장에서 간접적으로 나올 것으로 예상하기 때문에 이 패킷을 거부합니다. 주소. 위의 DNS에서 제공됩니다.
- NAT 루프백은 아웃바운드 소스 IP를 게이트웨이의 LAN 쪽 주소로 변환하여 이 문제를 해결합니다. 만들다
- 그러면 서버는 클라이언트에 직접 응답하지 않고 게이트웨이에 응답합니다. 시원한 콩.
이 트래픽의 문제점은 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 server
dnsmasq가 DNS 쿼리를 10.0.1.1(기본 라우터 dnsmasq 서버)의 서버로 전달하도록 합니다 . list rebind_domain
DNS 리바인딩 보호가 유지될 수 있도록 특정 사이트의 리바인딩을 허용합니다 .여기 "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_option
s를 추가해도 /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";
};