내 서버(버전 10.03.1-RC6)에 SSH로 연결하면 openwrt
DNS 서버에 문제가 있음이 표시됩니다.
root@OpenWrt:~# nslookup starkill
Server: 127.0.0.1
Address 1: 127.0.0.1 localhost.
nslookup: can't resolve 'starkill': Name or service not known
하지만,
root@OpenWrt:~# nslookup starkill.skails.home
Server: 127.0.0.1
Address 1: 127.0.0.1 localhost.
Name: starkill.skails.home
Address 1: 192.168.112.138 starkill.skails.home
보시다시피 openwrt의 로컬 DNS 서버(dnsmasq)는 FQDN이 아닌 호스트 이름을 확인할 수 없습니다. 내 인트라넷 도메인을 연결하면 문제가 해결되지만 나에게는 작동하지 않습니다.
내 인트라넷에서 DNS 서버가 실행 중이므로 적어도 openwrt의 dnsmasq가 내 기본 DNS 서버에 문의하도록 하고 싶습니다.
그래서 네트워크 구성을 계속해서 확인했지만 무엇이 잘못되었거나 누락되었는지 파악할 수 없었습니다. 그럼 파일 /etc/config/network
도 확인해봤는데수동.
파일은 처음에 다음과 같습니다.
[...]
config 'interface' 'lan'
option 'type' 'bridge'
option 'ifname' 'eth0.0'
option '_orig_ifname' 'eth0.0 wl0'
option '_orig_bridge' 'true'
option 'proto' 'static'
option 'ipaddr' '192.168.112.253'
option 'netmask' '255.255.255.0'
option 'gateway' '192.168.112.112'
option 'broadcast' '192.168.112.255'
option 'stp' '1'
list 'dns' '192.168.112.112'
[...]
네트워크 구성에 의해 삽입된 "list dns"가 있는데 내가 기대했던 일반적인 "옵션"과 같지 않습니다. 그래서 나는 노력했다
option 'dns' '192.168.112.112'
또한 가능한 모든 방법으로 "dns-search" 옵션을 시도했습니다.
option 'dns-search' 'skails.home'
list 'dns-search' 'skails.home.'
재시작 네트워크를 사용할 때마다 /etc/init.d/network reload
. dns-search 절을 확인할 수 없으므로 제거해야 합니다.
위에서 "lan" 인터페이스 항목을 보여드린 것을 알 수 있을 것입니다. 그 이유는 WRT54G만 액세스 포인트로 사용하기 때문입니다. WAN 인터페이스를 사용하는 대신 4개의 LAN 이더넷 인터페이스(나머지 인트라넷에 연결되고 인터넷 게이트웨이가 있는 곳) 중 하나를 사용하고 기본적으로 내 장치의 안테나를 사용하여 인바운드 네트워킹 및 인터넷 액세스 무선 네트워크 장치를 제공합니다.
어쨌든, /etc/config/network를 변경하려고 해도 예상한 결과가 나오지 않았고 여전히 FQDN이 아닌 호스트 이름을 확인할 수 없습니다.
/etc/resolv.conf
더욱이, 명시적으로 또는 직접적으로 네임서버를 제안할 때 다음 사항을 해결할 수도 없습니다 nslookup
.
root@OpenWrt:~# nslookup starkill 192.168.112.112
Server: 192.168.112.112
Address 1: 192.168.112.112 stargaze.skails.home
nslookup: can't resolve 'starkill': Name or service not known
이 시점에서 나는 길을 잃었다. 내가 여기서 무엇을 놓치고 있는 걸까요?
답변1
dnsmasq는 현재 내 장벽 차단기에서 약간 신뢰할 수 없으며 그 결과
nslookup: can't resolve 'starkill': Name or service not known
이름은 일반적으로 문제 없이 구문 분석될 수 있지만 여기서도 마찬가지입니다.
먼저 시도해 보세요
killall -HUP dnsmasq
dnsmasq가 실제로 요청을 제대로 처리하는지 확인하려면 다시 시작할 수도 있습니다.
둘째, dnsmasq에는 FQDN을 자동 완성하는 옵션이 있습니다. 여기서는 다음 구성(/etc/config/dhcp)을 사용하여 이 작업을 수행합니다.
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
option filterwin2k '1'
list addnhosts '/var/adblock/block.hosts'
Expandhosts는 /etc/hosts에서만 작동하므로 대부분은 설정에 적용되지 않지만 로컬 및 도메인이 도움이 될 것이라고 생각합니다.
내 /etc/config/network에는
option dns '192.168.200.1'
네트워크 다시 로드가 실제로 지시문을 적용하려면 클라이언트에서 트리거해야 하는 dhcp 임대를 다시 바인딩하는 방식으로 dnsmasq도 다시 로드하는지 지금은 알 수 없습니다.
nslookup을 사용하여 DNS 서버에 직접 쿼리할 때 DNS 서버에서 tcpdumping을 시도해 보셨나요? 요청이 도착했나요? 이것은 문제가 실제로 openwrt 상자에 있는지 확인하는 첫 번째 지침이 될 것입니다...
dnsmasq가 일관되게 서비스 요청을 수행할 수 있는 방법을 찾으면 알려 주시기 바랍니다. 이로 인해 상황이 매우 불안정해집니다.
/etc/dnsmasq.conf를 전혀 편집할 수 있는지는 모르겠지만 마음대로 사용할 수 있는 옵션이 많이 있습니다. 나는 전체 Linux Boxen에서 dnsmasq를 몇 번 사용했고 항상 내 필요에 맞게 구성할 수 있었지만 openwrt에서는 다음과 같기 때문에 조금 다른 것 같습니다..
아래의 해당 섹션도 확인하세요(보조 DNS). http://wiki.openwrt.org/doc/howto/dhcp.dnsmasq#add_a_secondary_dns
답변2
밑줄 친 옵션이 정확합니다.
option dns_search 'my.local.domain'