如何解决dnsmasq未收到将其发送到无线局域网设备的dhcp请求
经过几天的搜索,并尝试通过其他类似的帖子找到的所有内容,我仍然没有找到可以使用的解决方案。
Device: RaspBerry Pi 2 Model B
OS: Raspbian 8.0 (jessie)
kernel: 4.9.35-v7+
Wifi Device: USB2.0 RTL8811CU running rtl8821cu driver
我遵循了几个非常相似的指南来安装和配置hostapd和dnsmasq。尽管我遇到了一些有关wifi设备的问题(后来又遇到了hostapd不想正常运行的问题),但确实设法使AP正常运行,但是尽管出现了请求,DHCP服务器仍未收到任何请求在网络设备上。作为参考,我以root用户身份执行所有命令。
root@dev:/home/pi# tcpdump -i wlan0 ip
tcpdump: verbose output suppressed,use -v or -vv for full protocol decode
listening on wlan0,link-type EN10MB (Ethernet),capture size 262144 bytes
17:17:19.810384 IP 10.125.111.1 > igmp.mcast.net: igmp v3 report,1 group record(s)
17:17:19.831066 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP,Request from b8:d7:af:07:4e:f5 (oui UnkNown),length 308
17:17:20.480243 IP 10.125.111.1 > igmp.mcast.net: igmp v3 report,1 group record(s)
17:17:20.899771 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP,length 308
17:17:22.865326 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP,length 308
17:17:27.102579 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP,length 308
我确实注意到那里有一个奇怪的IP地址(10.125.111.1),但我不知道它来自哪里,因为我从未配置过192.168个八位字节之外的任何接口。
/var/log/syslog | grep dnsmasq
Oct 9 16:19:58 dev systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Oct 9 16:19:58 dev dnsmasq[436]: dnsmasq: Syntax check OK.
Oct 9 16:20:00 dev dnsmasq[734]: started,version 2.72 cachesize 150
Oct 9 16:20:00 dev dnsmasq[734]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect
Oct 9 16:20:00 dev dnsmasq-dhcp[734]: DHCP,IP range 192.168.10.11 -- 192.168.10.100,lease time 1d
Oct 9 16:20:00 dev dnsmasq-dhcp[734]: DHCP,lease time 1d
Oct 9 16:20:00 dev dnsmasq[734]: using nameserver 192.168.10.1#53
Oct 9 16:20:00 dev dnsmasq[734]: using local addresses only for domain PHP-pi.com
Oct 9 16:20:00 dev dnsmasq[734]: no servers found in /var/run/dnsmasq/resolv.conf,will retry
Oct 9 16:20:00 dev dnsmasq[734]: read /etc/hosts - 7 addresses
Oct 9 16:20:02 dev systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Oct 9 16:20:05 dev dnsmasq[734]: Maximum number of concurrent DNS queries reached (max: 150)
... repeats every 10 seconds ...
Oct 9 16:28:54 dev dnsmasq[734]: Maximum number of concurrent DNS queries reached (max: 150)
Oct 9 16:28:56 dev dnsmasq[734]: reading /var/run/dnsmasq/resolv.conf
Oct 9 16:28:56 dev dnsmasq[734]: ignoring nameserver 192.168.10.1 - local interface
Oct 9 16:28:56 dev dnsmasq[734]: using local addresses only for domain PHP-pi.com
Oct 9 16:28:56 dev dnsmasq[734]: using nameserver 192.168.1.1#53
Oct 9 16:37:09 dev systemd[1]: Stopping dnsmasq - A lightweight DHCP and caching DNS server...
Oct 9 16:37:09 dev dnsmasq[734]: exiting on receipt of SIGTERM
Oct 9 16:37:09 dev systemd[1]: Stopped dnsmasq - A lightweight DHCP and caching DNS server.
Oct 9 17:20:05 dev systemd[1]: Stopped dnsmasq - A lightweight DHCP and caching DNS server.
在尝试将手机连接到AP之前,我跑了strace -o /tmp/dnsmasq.trace -s 256 -tt -p `pidof dnsmasq`
,并使strace运行了整整10秒钟。这里是内容:
17:26:03.220314 select(11,[4 5 6 7 8 9 10],[],NULL) = 1 (in [4])
17:26:05.060494 gettimeofday({1602289565,60653},NULL) = 0
17:26:05.060844 stat64("/var/run/dnsmasq/resolv.conf",{st_mode=S_IFREG|0644,st_size=49,...}) = 0
17:26:05.061259 recvmsg(4,{msg_name(16)={sa_family=AF_INET,sin_port=htons(68),sin_addr=inet_addr("0.0.0.0")},msg_iov(1)=[{"\1\1\6\0\211-5V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\327\257\7N\365\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\202Sc5\1\1=\7\1\270\327\257\7N\3659\2\5\334"...,548}],msg_controllen=24,{cmsg_len=24,cmsg_level=SOL_IP,cmsg_type=,...},msg_flags=0},MSG_PEEK|MSG_Trunc) = 308
17:26:05.061732 recvmsg(4,0) = 308
17:26:05.062106 ioctl(4,SIocgIFNAME,{ifr_index=5,ifr_name="br0"}) = 0
17:26:05.062384 ioctl(4,SIocgIFADDR,{ifr_name="br0",ifr_addr={AF_INET,inet_addr("169.254.30.13")}}) = 0
17:26:05.062690 select(11,NULL) = 1 (in [4])
17:26:06.092779 gettimeofday({1602289566,92938},NULL) = 0
17:26:06.093141 recvmsg(4,msg_iov(1)=[{"\1\1\6\0\211-5V\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\327\257\7N\365\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\202Sc5\1\1=\7\1\270\327\257\7N\3659\2\5\334"...,MSG_PEEK|MSG_Trunc) = 308
17:26:06.093571 recvmsg(4,0) = 308
17:26:06.093945 ioctl(4,ifr_name="br0"}) = 0
17:26:06.094224 ioctl(4,inet_addr("169.254.30.13")}}) = 0
17:26:06.094527 select(11,NULL) = 1 (in [4])
17:26:08.166093 gettimeofday({1602289568,166254},NULL) = 0
17:26:08.166422 stat64("/var/run/dnsmasq/resolv.conf",...}) = 0
17:26:08.166752 recvmsg(4,msg_iov(1)=[{"\1\1\6\0\211-5V\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\327\257\7N\365\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\202Sc5\1\1=\7\1\270\327\257\7N\3659\2\5\334"...,MSG_PEEK|MSG_Trunc) = 308
17:26:08.167226 recvmsg(4,0) = 308
17:26:08.167596 ioctl(4,ifr_name="br0"}) = 0
17:26:08.167856 ioctl(4,inet_addr("169.254.30.13")}}) = 0
17:26:08.168141 select(11,NULL) = 1 (in [4])
17:26:11.762005 gettimeofday({1602289571,762162},NULL) = 0
17:26:11.762330 stat64("/var/run/dnsmasq/resolv.conf",...}) = 0
17:26:11.762661 recvmsg(4,msg_iov(1)=[{"\1\1\6\0\211-5V\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\327\257\7N\365\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\202Sc5\1\1=\7\1\270\327\257\7N\3659\2\5\334"...,MSG_PEEK|MSG_Trunc) = 308
17:26:11.763039 recvmsg(4,0) = 308
17:26:11.763381 ioctl(4,ifr_name="br0"}) = 0
17:26:11.763633 ioctl(4,inet_addr("169.254.30.13")}}) = 0
17:26:11.763919 select(11,NULL
/var/log/kern.log
在收到DHCP请求的过程中没有任何条目,就像在dnsmasq中针对接收/处理的DHCP请求的syslog中什么都没有出现。以下是我对hostapd,dhcpcd,接口,dnsmasq和主机的配置,无注释行。
root@dev:/home/pi# cat /etc/hostapd/hostapd.conf
country_code=US
interface=wlan0
driver=nl80211
ssid=PHP-pi
bridge=br0
hw_mode=g
channel=11
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
wpa_passphrase=#REDACTED#
root@dev:/home/pi# cat /etc/dhcpcd.conf
dev.PHP-pi.com
clientid
persistent
option rapid_commit
option domain_name_servers,domain_name,domain_search,host_name
option classless_static_routes
option ntp_servers
require dhcp_server_identifier
slaac private
nohook lookup-hostname
interface wlan0
static ip_address=192.168.10.1
static routers=
static domain_name_servers=
static domain_search=
root@dev:/home/pi# cat /etc/network/interfaces
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.10.1
netmask 255.255.255.0
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
root@dev:/home/pi# cat /etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.10.11,192.168.10.100,255.255.255.0,24h
root@dev:/home/pi# cat /etc/dnsmasq.d/default.conf
domain-needed
bogus-priv
local=/PHP-pi.com/
dhcp-range=192.168.10.11,24h
server=192.168.10.1
dhcp-option=option:router,192.168.10.1
dhcp-option=6,192.168.10.1
domain=PHP-pi.com
expand-hosts
log-dhcp
log-queries
root@dev:/home/pi# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.0.1 dev.PHP-pi.com dev
192.168.10.1 dev.PHP-pi.com dev
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 dev.PHP-pi.com dev
root@dev:/home/pi# iwconfig
lo no wireless extensions.
wlan0 IEEE 802.11bg ESSID:"PHP-pi" Nickname:"<WIFI@REALTEK>"
Mode:Master Frequency:2.462 GHz Access Point: B4:4B:D6:23:0D:B4
Bit Rate:54 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=1/100 Signal level=1/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
eth0 no wireless extensions.
br0 no wireless extensions.
wlan1 IEEE 802.11 ESSID:"#REDACTED#"
Mode:Managed Frequency:2.437 GHz Access Point: C0:C1:C0:D0:10:31
Bit Rate=65 Mb/s Tx-Power=30 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=70/70 Signal level=-31 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:9 Invalid misc:44 Missed beacon:0
我能够连接到网络“ PHP-pi”,并且可以从扫描中看到它,但是dnsmasq没有DHCP响应,因此Windows保持连接/未配置,并且我的手机拒绝保持连接,因为它“失败了到IP地址”。
我在这里错过什么了吗,还是有错别字?手动运行/检查hostapd和dnsmasq不会导致任何错误,但最终我发现没有区别。
如果我缺少或忽略了任何内容,请在注释中说出所需的文件/命令输出,然后我将其追加。请注意,您可能已经注意到有几条信息被列为#REDACTED#
,这是因为我不想公开配置中使用的家庭网络SSID或密码,因此请理解,如果有的话请求将导致显示此类信息,我将对其进行编辑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。