無線路由出了問題,常常性鏈接不上。正好手頭有個閒置樹莓派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
以前。這樣每次開機都會重啓一下該服務。