将树莓派配置为WIFI热点

…衆ロ難τιáo~ 提交于 2020-03-18 07:11:30

某厂面试归来,发现自己落伍了!>>>

无线路由出了问题,经常性连接不上。正好手头有个闲置树莓派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之前。这样每次开机都会重启一下该服务。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!