问题:我家里有一台路由器(openwrt),我想让计算机在本地子网上互相连接,只需输入主机名而不是 IP 地址即可。现在,当 DNS 查询发送到路由器时,路由器仅响应 ipv4 地址(没有 ipv6 地址)。我希望路由器响应 ipv4 和 ipv6 地址。
设想:我有安装了 openwrt 的路由器 - CHAOS CALMER (15.05.1, r48532)
。对于 ipv4,我的子网为 192.168.1.0/24。局域网上的所有计算机都可以相互通信/连接。如果它们想要连接到互联网(例如 google.com),它们会通过路由器上的 NAT。基本配置。对于 ipv6,我创建了 ULA 前缀(使用一些生成器)并通过 Web 界面(luci)对其进行了配置。我没有使用 ipv6 的互联网(来自 ISP),因此所有通信都仅限于本地计算机。
有效的方法:
* 计算机可以从路由器获取 ipv4 和 ipv6 ip
* 计算机可以通过 ipv4 和 ipv6 相互通信(例如ping
、ping6
或ssh -4
、ssh -6
)
* 计算机可以向路由器上的 dns 服务器询问 google.com 并获取 ipv4 和 ipv6 地址
* 计算机可以向路由器上的 dns 服务器询问另一台计算机的主机名,并且仅有的获取 ipv4 地址
* 我可以将静态主机名(通过 luci)设置为 ipv6 地址,当局域网上的计算机询问它时,它们会正确获取 ipv6 地址
我无法对 ipv6 地址进行有效的主机名解析,这对我来说似乎很奇怪,因为对于 ipv4 来说它可以完美运行。
如何配置 dnsmasq 以解析 ipv4 和 ipv6 的本地主机名?
/etc/config/dhcp
config dnsmasq
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option noresolv '1'
list server '127.0.0.1#5353' # <-- I am using dnscrypt
list server '/pool.ntp.org/2620:0:ccc::2'
list server '/pool.ntp.org/2620:0:ccd::2'
list server '/pool.ntp.org/208.67.222.222'
list server '/pool.ntp.org/208.67.220.220'
option local '/home/'
option domain 'home'
option nonegcache '1'
option domainneeded '1'
option boguspriv '1'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option force '1'
option ra 'server'
option dhcpv6 'server'
option ra_default '1'
option ra_management '1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
dnsmasq --版本
Dnsmasq version 2.73 Copyright (c) 2000-2015 Simon Kelley
Compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-DNSSEC loop-detect inotify
This software comes with ABSOLUTELY NO WARRANTY.
Dnsmasq is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2 or 3.
opkg 列表安装
base-files - 157.2-r48532
busybox - 1.23.2-1
bzip2 - 1.0.6-2
ca-certificates - 20150426
ddns-scripts - 2.4.3-2
dnscrypt-proxy - 1.4.3-1
dnsmasq-dhcpv6 - 2.73-1
dropbear - 2015.67-1
firewall - 2015-07-27
fstools - 2016-01-10-96415afecef35766332067f4205ef3b2c7561d21
hostapd-common - 2015-03-25-1
ip6tables - 1.4.21-1
iptables - 1.4.21-1
iw - 3.17-1
jshn - 2015-11-08-10429bccd0dc5d204635e110a7a8fae7b80d16cb
jsonfilter - 2014-06-19-cdc760c58077f44fc40adbbe41e1556a67c1b9a9
kernel - 3.18.23-1-dbb19f09b72b69f418ee332a4882bbad
kmod-cfg80211 - 3.18.23+2015-03-09-3
kmod-crypto-aes - 3.18.23-1
kmod-crypto-arc4 - 3.18.23-1
kmod-crypto-core - 3.18.23-1
kmod-eeprom-93cx6 - 3.18.23-1
kmod-gpio-button-hotplug - 3.18.23-1
kmod-ip6tables - 3.18.23-1
kmod-ipt-conntrack - 3.18.23-1
kmod-ipt-core - 3.18.23-1
kmod-ipt-nat - 3.18.23-1
kmod-ipv6 - 3.18.23-1
kmod-leds-gpio - 3.18.23-1
kmod-lib-crc-ccitt - 3.18.23-1
kmod-lib-crc-itu-t - 3.18.23-1
kmod-mac80211 - 3.18.23+2015-03-09-3
kmod-nf-conntrack - 3.18.23-1
kmod-nf-conntrack6 - 3.18.23-1
kmod-nf-ipt - 3.18.23-1
kmod-nf-ipt6 - 3.18.23-1
kmod-nf-nat - 3.18.23-1
kmod-nf-nathelper - 3.18.23-1
kmod-nls-base - 3.18.23-1
kmod-ppp - 3.18.23-1
kmod-pppoe - 3.18.23-1
kmod-pppox - 3.18.23-1
kmod-rt2800-lib - 3.18.23+2015-03-09-3
kmod-rt2800-mmio - 3.18.23+2015-03-09-3
kmod-rt2800-pci - 3.18.23+2015-03-09-3
kmod-rt2800-soc - 3.18.23+2015-03-09-3
kmod-rt2x00-lib - 3.18.23+2015-03-09-3
kmod-rt2x00-mmio - 3.18.23+2015-03-09-3
kmod-rt2x00-pci - 3.18.23+2015-03-09-3
kmod-slhc - 3.18.23-1
kmod-usb-core - 3.18.23-1
kmod-usb-ohci - 3.18.23-1
kmod-usb2 - 3.18.23-1
libacl - 20140812-1
libattr - 20150220-1
libblobmsg-json - 2015-11-08-10429bccd0dc5d204635e110a7a8fae7b80d16cb
libbz2 - 1.0.6-2
libc - 0.9.33.2-1
libgcc - 4.8-linaro-1
libip4tc - 1.4.21-1
libip6tc - 1.4.21-1
libiwinfo - 2015-06-01-ade8b1b299cbd5748db1acf80dd3e9f567938371
libiwinfo-lua - 2015-06-01-ade8b1b299cbd5748db1acf80dd3e9f567938371
libjson-c - 0.12-1
libjson-script - 2015-11-08-10429bccd0dc5d204635e110a7a8fae7b80d16cb
liblua - 5.1.5-1
libnl-tiny - 0.1-4
libopenssl - 1.0.2g-1
libpcre - 8.38-1
libpolarssl - 1.3.14-1
libpthread - 0.9.33.2-1
librt - 0.9.33.2-1
libsodium - 1.0.2-1
libubox - 2015-11-08-10429bccd0dc5d204635e110a7a8fae7b80d16cb
libubus - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
libubus-lua - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
libuci - 2015-08-27.1-1
libuci-lua - 2015-08-27.1-1
libustream-polarssl - 2015-07-09-c2d73c22618e8ee444e8d346695eca908ecb72d3
libxtables - 1.4.21-1
lua - 5.1.5-1
luci - git-16.018.33482-3201903-1
luci-app-ddns - 2.2.4-1
luci-app-firewall - git-16.018.33482-3201903-1
luci-base - git-16.018.33482-3201903-1
luci-lib-ip - git-16.018.33482-3201903-1
luci-lib-nixio - git-16.018.33482-3201903-1
luci-mod-admin-full - git-16.018.33482-3201903-1
luci-proto-ipv6 - git-16.018.33482-3201903-1
luci-proto-ppp - git-16.018.33482-3201903-1
luci-ssl - git-16.018.33482-3201903-1
luci-theme-bootstrap - git-16.018.33482-3201903-1
mtd - 21
netifd - 2015-12-16-245527193e90906451be35c2b8e972b8712ea6ab
odhcp6c - 2015-07-13-024525798c5f6aba3af9b2ef7b3af2f3c14f1db8
odhcpd - 2015-11-19-01d3f9d64486ac1daa144848944e877e7f0cb762
openssl-util - 1.0.2g-1
opkg - 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9
ppp - 2.4.7-6
ppp-mod-pppoe - 2.4.7-6
procd - 2015-10-29.1-d5fddd91b966424bb63e943e789704d52382cc18
px5g - 3
rpcd - 2015-01-10-f00890cd6eb47ad9bb5da0fb6c50aedc8406e7c5
swconfig - 10
tar - 1.28-2
ubox - 2015-11-22-c086167a0154745c677f8730a336ea9cf7d71031
ubus - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
ubusd - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
uci - 2015-08-27.1-1
uhttpd - 2015-11-08-fe01ef3f52adae9da38ef47926cd50974af5d6b7
uhttpd-mod-ubus - 2015-11-08-fe01ef3f52adae9da38ef47926cd50974af5d6b7
usign - 2015-05-08-cf8dcdb8a4e874c77f3e9a8e9b643e8c17b19131
wget - 1.17.1-1
wpad-mini - 2015-03-25-1
zlib - 1.2.8-1
答案1
如果您不使用自定义 OpenWrt 映像,则默认的 DHCP/DNS 配置如下:
- dnsmasq 执行 DHCPv4 和 DNS
- dnsmasq 不支持 DHCPv6(不知道这对你来说有什么不同)
- odhcpd 执行 DHCPv6
- dnsmasq 不以任何方式与 odhcpd 交互
所以这就是为什么您只能获得 IPv4 地址。
odhcpd 似乎会创建一个/etc/hosts
格式为的文件(或本节中/tmp/hosts/odhcpd
设置的任何格式)。要使其正常工作,您需要在 中进行设置。/etc/config/dhcp
odhcpd
option dhcpv6 server
/etc/config/dhcp
您可以通过进行以下配置更改之一来使 dnsmasq 使用此文件:
- 在部分
/etc/config/dhcp
中dnsmasq
添加list addnhosts /tmp/hosts/odhcpd
- 添加
/etc/dnsmasq.conf
addn-hosts=/tmp/hosts/odhcpd
添加这些条目并重新启动 dnsmasq ( /etc/init.d/dnsmasq restart
) 后,dnsmasq 会正确响应 IPv4 和 IPv6 地址。不过您没有获得任何优势。
还请注意,不使用 DHCPv6 但仅使用无状态自动配置的客户端将不会出现其 IPv6 地址。