我正在尝试在BCM4313
无线网卡上设置 AP 模式。
我的基本hostapd
配置如下所示:
interface=wlan0
driver=nl80211
ssid=test
hw_mode=b
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=1234567890
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
网络已成功设置,我可以连接到我的网络。但是,连接过程在获取 IP 地址时停止。
因此,我的dhcpd.conf
文件看起来与默认文件几乎相同,插入内容如下:
# option definitions common to all supported networks...
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
#default-lease-time 600;
#max-lease-time 7200;
...
option broadcast-address 10.10.0.255;
subnet 10.10.0.0 netmask 255.255.255.0 {
interface wlan0;
range 10.10.0.2 10.10.0.16;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option routers 10.10.0.1;
}
我的wlan0
界面已配置(我猜) 适当地:
wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
inet 10.10.0.1 netmask 255.255.255.0 broadcast 10.10.0.255
ether 55:28:cc:23:14:a6 txqueuelen 1000 (Ethernet)
当/etc/default/isc-dhcp-server
有以下几行时:
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
INTERFACESv4="wlan0"
毕竟,journalctl -xe
给了我这个输出:
Jul 10 10:11:25 srv dhcpd[3296]: Wrote 0 leases to leases file.
Jul 10 10:11:25 srv dhcpd[3296]:
Jul 10 10:11:25 srv dhcpd[3296]: No subnet declaration for wlan0 (no IPv4 addresses).
Jul 10 10:11:25 srv dhcpd[3296]: ** Ignoring requests on wlan0. If this is not what
Jul 10 10:11:25 srv dhcpd[3296]: you want, please write a subnet declaration
Jul 10 10:11:25 srv dhcpd[3296]: in your dhcpd.conf file for the network segment
Jul 10 10:11:25 srv dhcpd[3296]: to which interface wlan0 is attached. **
Jul 10 10:11:25 srv dhcpd[3296]:
Jul 10 10:11:25 srv dhcpd[3296]:
Jul 10 10:11:25 srv dhcpd[3296]: Not configured to listen on any interfaces!
Jul 10 10:11:25 srv dhcpd[3296]:
Jul 10 10:11:25 srv dhcpd[3296]: If you think you have received this message due to a bug rather
Jul 10 10:11:25 srv dhcpd[3296]: than a configuration issue please read the section on submitting
Jul 10 10:11:25 srv dhcpd[3296]: bugs on either our web page at www.isc.org or in the README file
Jul 10 10:11:25 srv dhcpd[3296]: before submitting a bug. These pages explain the proper
Jul 10 10:11:25 srv dhcpd[3296]: process and the information we find helpful for debugging..
Jul 10 10:11:25 srv dhcpd[3296]:
Jul 10 10:11:25 srv dhcpd[3296]: exiting.
Jul 10 10:11:27 srv isc-dhcp-server[3283]: Starting ISC DHCPv4 server: dhcpdcheck syslog for diagnostics. ... failed!
Jul 10 10:11:27 srv isc-dhcp-server[3283]: failed!
Jul 10 10:11:27 srv systemd[1]: isc-dhcp-server.service: Control process exited, code=exited status=1
Jul 10 10:11:27 srv systemd[1]: Failed to start LSB: DHCP server.
这是我的/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet static
address 10.10.0.1
netmask 255.255.255.0
该sudo apt-get install -f
命令已经尝试过,但没有效果。
答案1
isc-dhcp-server
并hostapd
为我工作(在 debian sid 上),但我dhcpd.conf
在shared-network
.我也有option broadcast-address
里面的subnet {...}
定义。
尝试这样的事情:
shared-network net_wlan0 {
subnet 10.10.0.0 netmask 255.255.255.0 {
authoritative;
range 10.10.0.2 10.10.0.16;
option broadcast-address 10.10.0.255;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option routers 10.10.0.1;
}
}
我的 中还有以下内容/etc/default/isc-dhcp-server
:
INTERFACESv4="br0 br1 wlan0"
这告诉 dhcpd 要监听哪些接口,并导致它使用这些参数运行(注意命令行末尾的接口)。
# ps h -o cmd -C dhcpd
/usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf br0 br1 wlan0
注意:该isc-dhcp-server
包的早期版本使用INTERFACES
变量而不是INTERFACESv4
.这一变化发生在今年2月。根据etckeeper
,我最近一次提交/etc/default/isc-dhcp-server
是在 2016 年 2 月 10 日
我还建议运行本地缓存 DNS 解析器(例如unbound
或dnsmasq
或其他几个之一)。将其指向 google 的 DNS 服务器作为转发器,但本地缓存在我看来是必不可少的。像这样的代理服务器squid
也是值得的。由于是本地 NTP 服务器,因此网络上的所有计算机都可以同步到完全相同的时间。
顺便说一句,我使用的是ath9k
USB wifi 网卡,dhcpd 还为另外两个网络 eth0 和 eth1 提供服务(实际上,为我的虚拟机桥接为 br0 和 br1),但这应该没有任何区别。
我在尝试让基于 RTL 8192 的 USB NIC 工作时遇到了重大问题,最终放弃了它并购买了 AR9271:
0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
两种 USB wifi 设备都很便宜,每个大约 10-15 美元(同一品牌、同一制造商 (TP-Link)、不同芯片组),因此不值得花费太多时间尝试让 8192 工作(IMO 是基于 8192 的)网卡可能只是垃圾,它甚至无法作为客户端可靠地工作,它会开始正常工作,然后断开连接并挂起......需要删除并重新插入才能再次工作)。
答案2
最后,我找到了解决方案。也许其中一些步骤是多余的,但我不在乎,因为一切最后作品。
- Wi-Fi 可能被硬件锁定。检查一下不是;
- 无线网络可能会出现故障。
sudo ifconfig wlan0 up
(或无线局域网X在其他情况下) - 添加mac和主机之间的绑定。最后,它看起来像这样:
subnet 10.10.0.0 netmask 255.255.255.0 {
interface wlan0;
range 10.10.0.2 10.10.0.16;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option routers 10.10.0.1;
host wlan0 {
hardware ethernet 40:2c:f4:36:d4:16;
fixed-address 10.10.0.1;
}
}
答案3
根据您的错误消息“请在 dhcpd.conf 文件中为接口 wlan0 所连接的网段编写子网声明。”
这是 isc-dhcpd 的已知功能/限制;需要强制定义您正在侦听 DHCP 请求的主接口的网络块/子网。
由于您的接口具有地址 10.10.0.1 和网络掩码 255.255.255.0,因此添加为您的第一个 DHCP 子网:
subnet 10.10.0.0 netmask 255.255.255.0 {
option routers 10.10.0.1
option subnet-mask 255.255.255.0;
}
重新启动 DHCP 守护进程,它现在应该可以工作了。