无线路由出了问题,常常性链接不上。正好手头有个闲置树莓派3b,把它改形成无线AP,也算闲物利用。树莓派3B包括一个有线网卡和一个无线网卡,正好经过有线链接网络,无线网卡实现热点。vim
修改无线网卡wlan0的配置
打开配置网卡配置文件:sudo vim /etc/network/interfaces
,增长如下内容:bash
# 如下为有线网卡内容,将其设置为固定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
less
配置hostapd
用vim打开/etc/default/hostapd
,将#DAEMON_CONF=""
修改成DAEMON_CONF="/etc/hostapd/hostapd.conf"
。dom
用vim打开/etc/hostapd/hostapd.conf
,添加如下内容:rest
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为登陆密码code
配置udhcpd
使用vim打开/etc/udhcpd.conf
,修改配置文件,关键部分为:router
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"
前面加上注释符#。dns
配置防火墙
首先打开配置文件/etc/sysctl.conf
,去掉net.ipv4.ip_forward=1
前面的注释符。执行命令sysctl -p
使配置文件生效。 再执行以下命令配置防火墙规则:ip
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
以前。这样每次开机都会重启一下该服务。