无线路由出了问题,经常性连接不上。正好手头有个闲置树莓派3b,把它改造成无线AP,也算闲物利用。树莓派3B包括一个有线网卡和一个无线网卡,正好通过有线连接网络,无线网卡实现热点。
修改无线网卡wlan0的配置
打开配置网卡配置文件:sudo vim /etc/network/interfaces
,增加以下内容:
# 以下为有线网卡内容,将其设置为固定IP,不是必须,只是习惯
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.254
#以下为无线网卡内容,必须配置为固定IP
auto wlan0
iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0
gateway 192.168.2.1
安装软件
安装命令:
sudo apt install hostapd udhcpd
安装hostapd可能会出错,提示该服务被mask,可以使用命令:
sudo systemctl unmask hostadp
配置hostapd
用vim打开/etc/default/hostapd
,将#DAEMON_CONF=""
修改为DAEMON_CONF="/etc/hostapd/hostapd.conf"
。
用vim打开/etc/hostapd/hostapd.conf
,添加以下内容:
interface=wlan0
ssid=aaaaaaaaaaa
channel=7
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=xxxxxxxxxxxx
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ieee80211n=1
hw_mode=g
wmm_enabled=1
其中参数ssid表示WIFI热点的名字,wpa_passphrase为登录密码
配置udhcpd
使用vim打开/etc/udhcpd.conf
,修改配置文件,关键部分为:
start 192.168.2.100 #default: 192.168.0.20
end 192.168.2.200 #default: 192.168.0.254
interface wlan0 #default: eth0
opt dns 8.8.8.8
option subnet 255.255.255.0
opt router 192.168.2.1
opt wins 192.168.2.1
option domain local
option lease 14400
修改/etc/default/udhcpd
,在DHCPD_ENABLED="no"
前面加上注释符#。
配置防火墙
首先打开配置文件/etc/sysctl.conf
,去掉net.ipv4.ip_forward=1
前面的注释符。执行命令sysctl -p
使配置文件生效。
再执行如下命令配置防火墙规则:
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
注意,防火墙必需配置,因为是通过防火墙实现无线上网的。
保存防火墙配置
iptables的规则重启后会失效,所以必须先保存配置:
sudo iptables-save > /home/pi/iptables.ipv4.nat
然后打开/etc/rc.local
,在exit 0
之前加入:
iptables-restore < /home/pi/iptables.ipv4.nat
重启各项服务
sudo service hostapd restart
sudo service dnsmasq restart
问题1:wlan0有时无法启动
查看网络服务信息,还会有提示:SIOCSIFFLAGS: Operation not possible due to RF-kill
此时可以输入命令rfkill list all
,查看结果,正常结果为:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
如果无线网卡中有一项为yes,就说明是无线网卡被锁定,可以使用命令:rfkill unblock wifi
来解锁,如果命令rfkill list all
全为no,则可以使用sudo ifup wlan0
来启动无线网卡。
问题2:udhcpd不能正常工作
udhcpd有时无法正常工作,导致不能为客户机分配IP地址,只需要重启该服务即可:sudo systemctl restart udhcpd
。
如果经常出现该问题,则可以把命令ystemctl restart udhcpd
写入/etc/rc.local
文件中,在exit 0
之前。这样每次开机都会重启一下该服务。
来源:oschina
链接:https://my.oschina.net/u/933201/blog/3197262