[原创] 一起玩树莓派3+变身无线路由器

x1816   2016-11-14 08:51 楼主
Raspberry Pi 3板载了无线网络适配器和陶瓷天线,不需要额外增加无线网卡就可以把它打造成一个无线路由器。 有一种方法是给Raspberry Pi刷上OpenWRT等路由器固件,这样它就变成了一个比较正宗的路由器,但是有线网口只有一个。 另一种方法是开启树莓派无线网络适配器的AP功能,并且共享其有线网络。这样依然使用Raspbian系统,可以发挥Raspberry Pi作为一个微型服务器的优势。 例如有些学校的网络需要特别的认证拨号等过程,很多普通的路由器并不支持,但是通常会提供Linux的上网方法。Raspbian修改自Debian,是一个比较主流的Linux发行版,这样我们就可以让Raspberry Pi先认证后能上互联网,在将其网络通过无线共享给别的设备(手机,平板,笔记本电脑等),也方便增加代理等额外服务。
images.jpg
以下描述如何开启树莓派无线网络适配器的AP功能,并且共享其有线网络,实现无线路由功能。 安装软件包 需要安装2个软件包:
  1. sudo apt-get install hostapd dnsmasq
hostapd将开启无线适配器的AP功能,dnsmasq是DHCP和DNS服务器。 设置接口 需要将无线接口wlan0的IP配置成静态地址。 首先让dhcpcd不再管理wlan0,避免设置冲突。 修改文件:
  1. sudo vim /etc/dhcpcd.conf
在文件开头增加一行:
  1. denyinterfaces wlan0
image001.png
接下来设置wlan0的静态IP,修改文件:
  1. sudo vim /etc/network/interfaces
把wlan0相关的内容修改成如下内容:
  1. allow-hotplug wlan0
  2. #iface wlan0 inet manual
  3. # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  4. iface wlan0 inet static
  5. address 192.168.100.1
  6. netmask 255.255.255.0
  7. network 192.168.100.0
  8. broadcast 192.168.100.255
image003.png
重启服务和wlan0
  1. sudo service dhcpcd restart
  2. sudo ifdown wlan0
  3. sudo ifup wlan0
通过ifconfig可以看到wlan0的IP已经设定好了。 设置hostapd 新建配置文件:
  1. sudo vim /etc/hostapd/hostapd.conf
  1. # This is the name of the WiFi interface we configured above
  2. interface=wlan0
  3. # Use the nl80211 driver with the brcmfmac driver
  4. driver=nl80211
  5. # This is the name of the network
  6. ssid=rPi3
  7. # Use the 2.4GHz band
  8. hw_mode=g
  9. # Use channel 6
  10. channel=6
  11. # Enable 802.11n
  12. ieee80211n=1
  13. # Enable WMM
  14. wmm_enabled=1
  15. # Enable 40MHz channels with 20ns guard interval
  16. ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
  17. # Accept all MAC addresses
  18. macaddr_acl=0
  19. # Use WPA authentication
  20. auth_algs=1
  21. # Require clients to know the network name
  22. ignore_broadcast_ssid=0
  23. # Use WPA2
  24. wpa=2
  25. # Use a pre-shared key
  26. wpa_key_mgmt=WPA-PSK
  27. # The network passphrase
  28. wpa_passphrase=raspberrywifi
  29. # Use AES, instead of TKIP
  30. rsn_pairwise=CCMP
以上内容中,ssid=rPi3是无线网络的名字,wpa_passphrase=raspberrywifi是密码(8位及以上)。 然后测试配置是否正确:
  1. sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
通过手机等设备应该可以搜到名为rPi3的WiFi,还不需要连接。 如果没有问题,按Ctrl+C停止测试。 使上述设置生效:
  1. sudo vim /etc/default/hostapd
将#DAEMON_CONF=""修改为DAEMON_CONF="/etc/hostapd/hostapd.conf"。
image005.png
设置dnsmasq 将原来文件改名备份:
  1. sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
新加一个同名配置文件:
  1. sudo vim /etc/dnsmasq.conf
修改成如下内容:
  1. interface=wlan0 # Use interface wlan0
  2. listen-address=192.168.100.1 # Explicitly specify the address to listen on
  3. bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere
  4. server=114.114.114.114 # Forward DNS requests to public DNS
  5. domain-needed # Don't forward short names
  6. bogus-priv # Never forward addresses in the non-routed address spaces.
  7. dhcp-range=192.168.100.50,192.168.100.150,12h # Assign IP addresses between 192.168.100.50 and 192.168.100.150 with a 12 hour lease time
这里指定了DNS为114.114.114.114(8.8.8.8在有些地区连接不上),并设置DHCP可以分配的地址段,租期等参数。 开启ipv4转发 修改文件:
  1. sudo vim /etc/sysctl.conf
去掉net.ipv4.ip_forward=1前面的“#”号。
image007.png
通过iptables做NAT转发:
  1. sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  2. sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
  3. sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
这些配置重启后就失效了,需要保存下来:
  1. sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
设为开机自动加载:
  1. sudo vim /etc/rc.local
在exit 0上方增加:
  1. iptables-restore < /etc/iptables.ipv4.nat
image009.png
启动服务:
  1. sudo service hostapd start
  2. sudo service dnsmasq start
到此所有的配置都完成了,重启:
  1. sudo reboot
等Raspberry Pi重启完成,就可以用手机等设备连接该WiFi上网了,名字和密码是之前在/etc/hostapd/hostapd.conf文件中设定的。 连接后设备会获取到192.168.100.50----192.168.100.250之间的IP,并且可以通过树莓派连接的有线网络连上互联网,起到了无线路由器的功能。 如果遇到问题,可以通过以下2个命令检查服务情况。
  1. sudo service hostapd status
  2. sudo service dnsmasq status
本帖最后由 x1816 于 2016-11-14 08:50 编辑

回复评论 (2)

谢谢分享!
点赞  2016-11-14 14:15
顶~~~~~~~~~~~~~~
点赞  2018-3-11 15:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复