Jet*_*ohn 7 networking router dns dd-wrt dnsmasq
我在我的新华硕 RT-AC56U 路由器上使用 dd-wrt(r23503,作为记录)。不幸的是,dnsmasq 配置只让我头疼。这是我想要的:
但这是我目前得到的:
至于我的带有静态 IP 的主机,我还没有找到合适的解决方案。我通读了 dnsmasq 联机帮助页,据我所知,正确的选择是“主机记录”选项。
dd-wrt(在“服务”选项卡下)中与 dnsmasq 相关的配置是:
“DHCP 服务器”部分:
使用的域:WAN
LAN 域:[空白]
其他 DHCPd 选项:[空白]
定义了一个静态租用。
“DNSMasq”部分:
DNSMasq:已启用
本地 DNS:已启用
无 DNS 重新绑定:已启用
其他 DNSMasq 选项:
host-record=myhost,myhost.mydyndomain.net,192.168.1.1
[具有静态 LAN 的其他主机的更多主机记录条目IP]
不幸的是,将这些主机记录行放在附加选项框中似乎完全破坏了 dnsmasq,然后没有任何东西可以通过 DHCP 连接到 LAN/WLAN。一旦我清空了盒子里的东西,DHCP 就会重新开始工作。
我的 dnsmasq.conf 文件如下:
interface=br0
resolv-file=/tmp/resolv.dnsmasq
all-servers
domain=mydyndomain.net
dhcp-leasefile=/tmp/dnsmasq.leases
dhcp-lease-max=51
dhcp-option=lan,3,192.168.1.1
dhcp-authoritative
dhcp-range=lan,192.168.1.100,192.168.1.149,255.255.255.0,1440m
dhcp-host=88:53:2E:9B:3E:80,Redtail,192.168.1.5,1440m
stop-dns-rebind
Run Code Online (Sandbox Code Playgroud)
/etc/resolv.conf 文件是:
search ph.cox.net
nameserver 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
/tmp/resolv.dnsmasq 文件是:
nameserver 208.67.222.222
nameserver 208.67.220.220
nameserver 68.105.28.13
Run Code Online (Sandbox Code Playgroud)
另一个较小但不相关的问题:在 DHCP 配置部分的 dd-wrt 的“基本设置”页面上,我输入了 OpenDNS 服务器的 IP(如上所示)。我更喜欢只使用这两个名称服务器,但名称服务器会自动附加为第三个名称服务器。有没有办法告诉 dd-wrt 在从调制解调器/ISP 获取 DHCP 租约时忽略它收到的 DNS 信息?
所以……我做错了什么?显然,dnsmasq 对主机记录条目不满意,但正确的选项是什么?我将这些信息放在这个位置而不是 /etc/hosts 中,因为后者是一个生成的文件,不容易通过 Web 界面修改。当然,我可以通过 SSH 连接轻松编辑它,但我的更改不会持久。
小智 8
我在 dd-wrt 上对 dnsmasq 有相当多的经验,尤其是在接近此评论的日期时。我可以与您分享我对每个要求的每个答案的工作解决方案。我会拒绝添加更多。
在活动/tmp/dnsmasq.conf每个选项上面贴直接从你所描述的选择的配置选项来
除了
你的主机名=你不应该使用IMO进入。你想要
Used Domain: [WAN/LAN]
not Used Domain [WAN]
。
这将允许有线 (LAN) 和无线 (WAN) 设备在您的网络上工作。
还要选择一个短的Lan 域: [dom ]
或除local之外的任何短词。有些使用lan有些使用localdomain。这是您的要求所必需的,并且将提供一个只有您和内部用户才能看到/使用的锚定人造内部域。您选择的值将放入每个 DHCP 客户端的 search dom
解析器中。我将使用dom作为其余部分,但您可以随心所欲。
我将从前两个要求开始。
应为短名称和 FQDN 回答来自 LAN/WLAN 的 LAN/WLAN 主机的 DNS 查询。
由于某些设备是便携式的(例如我的手机),因此当连接到 LAN 时,我需要将 host.mydyndomain.net 解析为 LAN IP,并在从 LAN 外部查询时解析为外部 IP。
对于具有不同内部和外部 ip 但在 dd-wrt 两侧具有相同名称的主机,您需要:
Static Leases
下方为每个可解析主机添加一行。请注意内部名称或只是为了方便在局域网上。Additional DHCP Options
web.dom
web
笔记:
Run Code Online (Sandbox Code Playgroud)[Static Leases++++++++++++++++++++++++++++++++++++++++++++++++++++++++] [MAC Address] [Host Name ][IP Address ][Client Lease Time] [00:19:B9:5B:2B:A5] [web ][192.168.2.5 ][ 1440]
注意:我认为这仅用于udhcpcd但这也被 dnsmasq 使用,并且会dnsmasq.conf
用正确的dhcp-host=
行写入实际值,并在 DNSMasq 使用的 /tmp/hosts 中为每个条目放置一个 `ip host.dom 条目来完成所有本地名称解析。
我有一个脚本和文本文件来创建这些条目,因为 Web 界面有点麻烦。简而言之,这是脚本的作用。
macToHostNames.txt:
# comment lines ignored unless embedded set:tag values like set:kids
# note the ip is just the HOST portion of the subnet, eg: 192.168.1.32 -> 1.32
# host id mac address cnames/aliases for same box
kidhost1 1.32 00:MA:CA:DD:E5 alias1 nabi2 # in-line comment set:kid
web 1.5 00:AM:AC:AD:ES www homeweb # web server with aliases
EOF
generate_Files_Then_Send_Then_Activate_If_Tests_Are_Ok.sh < macToHostNames.txt
# this script file creates 3 files which are sent along with a test script:
dnsmasq_options.new # nvram set dnsmasq_options="$(cat dnsmasq_options.new)"
static_leases.new # nvram set static_leases="$(cat static_leases.new)"
static_leasenum.new # nvram set static_leasenum="$(cat static_leasnum.new)"
testDnsMasqOpts.sh # scp -p *.new test*.sh admin@gw:/tmp && ssh admin@gw "/tmp/test*.sh"
Run Code Online (Sandbox Code Playgroud)
address=/web.dynip.org/<ip>
在您的 DNSMasq 选项框中添加行 address=/web.mydyndomain.net/192.168.2.5 # 根据需要添加任意数量的行
最后,您需要更新您的DDNS
配置以提供 DDNS 服务映射您的外部 ISP 提供的动态 IP 地址以解析为web.mydyndomain.net
. 我想你已经成功配置了这部分。
使用此配置,您可以ping web
或ping web.dom
或 pingweb.mydyndomain.net
将192.168.2.5
在防火墙内部返回,并且从外部按名称访问web.mydyndomain.org
仍然有效。
其他要求由您的其他配置满足,但您可以安全地添加这些行,因为我已经测试了很多次(编写脚本以一次执行一个 dnsmasq 行并向我显示有问题的行,因为所有 dns 日志记录都留下了在我最新的 dnsmasq 版本中寻找空间,您可以依赖的只是 dnsmasq 的返回状态:$?)。
对于最后的要求,我将向您展示我的配置行和注释(请注意,您可以在 DNSMasq 附加选项框中添加注释)。
Run Code Online (Sandbox Code Playgroud)domain-needed # dont fwd to ext DNS names with no domain address=/web.mydnsdomain.org/192.168.2.5 # resolve to this internally! expand-hosts # add .dom to host names without a domain local=/dom/ # map all host.dom request to *this* dns bogus-priv # reject local lookups not in hosts localise-queries # for local servers
我将提供一些价值可疑的非相关赠品(以及用于异地备份)。
Run Code Online (Sandbox Code Playgroud)no-ping # some swear by this one to get DNSMasq to work! filterwin2k # junk from MSFT boxen (remove this if ldap SRV used) cache-size=3000 # fast local DNS lookups clear-on-reload # clear ifr.c changes and sig received
要限制 DNS 服务器的数量,您可以使用 dhcp-options=6 进行如下操作:
dhcp-options=lan,6,8.8.8.8 # 这将只为所有主机发送一个名称服务器条目