树莓派笔记--无线路由器
安装软件包:
$ sudo apt-get install hostapd
$ sudo apt-get install dnsmasq
$ sudo apt-get install isc-dhcp-server
hostapd将开启无线适配器的AP功能
dnsmasq DNS服务
isc-dhcp-server DHCP服务
取消wlan0的DHCP功能: 修改/etc/dhcpcd.conf文件,添加一行内容:
denyinterfaces wlan0
设置wlan0的静态IP:
# 修改文件 /etc/network/interfaces.d/wlan0 内容如下:
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.8.1
netmask 255.255.255.0
network 192.168.8.0
broadcast 192.168.8.255
更新配置: 重启DHCP服务(客户端)和wlan0
sudo service dhcpcd restart
sudo ifdown wlan0
sudo ifup wlan0
新建配置文件: /etc/hostapd/hostapd.conf
# 指完无线网络接口
interface=wlan0
# Use the nl80211 driver with the brcmfmac driver
driver=nl80211
# SSID:无线网络名称
ssid=HelloWorld
# 使用2.4GHz频段
hw_mode=g
# 设置无线信道
channel=6
# 使能 802.11n 协议
ieee80211n=1
# 使能 WMM
wmm_enabled=1
# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# 允许所有MAC地址
macaddr_acl=0
# 使用 WPA 认证
auth_algs=1
# 设置是否隐藏SSID
ignore_broadcast_ssid=0
# 使用 WPA2 认证
wpa=2
# 使用预共享密钥
wpa_key_mgmt=WPA-PSK
# 网络密钥(有最小长度要求)
wpa_passphrase=88888888
# 使用AES, 而不用TKIP
rsn_pairwise=CCMP
测试网络:
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
能搜取网络即可, 修改/etc/default/hostapd文件,用于自动启动
# 将 DAEMON_CONF=""修改为
DAEMON_CONF="/etc/hostapd/hostapd.conf"
使能DHCP服务
修改配置文件/etc/dhcp/dhcpd.conf,内容如下
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.8.0 netmask 255.255.255.0 {
# IP地址范围
range 192.168.8.10 192.168.8.100;
option routers 192.168.8.1;
option broadcast-address 192.168.8.255;
option domain-name-servers 8.8.8.8,8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
如果运行提示失败,尝试以下命令:
/usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf
设置IP转发(重要)
修改/etc/sysctl.conf文件,去掉net.ipv4.ip_forward=1前面的“#”号。
设置路由转发规则:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
保存路由表:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
设为开机自动加载: 修改/etc/rc.local文件,添加一行内容
iptables-restore < /etc/iptables.ipv4.nat
https://www.waveshare.net/study/portal.php?mod=view&aid=744
问题处理:
Job for hostapd.service failed because the control process exited with error code.
See "systemctl status hostapd.service" and "journalctl -xe" for details.
查看状态:
$ systemctl status hostapd.service
● hostapd.service
Loaded: masked (Reason: Unit hostapd.service is masked.)
原因是masked,直接unmask即可
sudo systemctl unmask hostapd