14890|2

232

帖子

5

TA的资源

一粒金砂(高级)

楼主
 

一起玩树莓派3+变身无线路由器 [复制链接]

本帖最后由 x1816 于 2016-11-14 08:50 编辑

Raspberry Pi 3板载了无线网络适配器和陶瓷天线,不需要额外增加无线网卡就可以把它打造成一个无线路由器。
有一种方法是给Raspberry Pi刷上OpenWRT等路由器固件,这样它就变成了一个比较正宗的路由器,但是有线网口只有一个。
另一种方法是开启树莓派无线网络适配器的AP功能,并且共享其有线网络。这样依然使用Raspbian系统,可以发挥Raspberry Pi作为一个微型服务器的优势。
例如有些学校的网络需要特别的认证拨号等过程,很多普通的路由器并不支持,但是通常会提供Linux的上网方法。Raspbian修改自Debian,是一个比较主流的Linux发行版,这样我们就可以让Raspberry Pi先认证后能上互联网,在将其网络通过无线共享给别的设备(手机,平板,笔记本电脑等),也方便增加代理等额外服务。
以下描述如何开启树莓派无线网络适配器的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
复制代码
接下来设置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
复制代码

重启服务和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"。


设置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前面的“#”号。


通过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
复制代码
启动服务:
  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
复制代码

最新回复

顶~~~~~~~~~~~~~~  详情 回复 发表于 2018-3-11 15:56
点赞 关注

回复
举报

6105

帖子

4

TA的资源

版主

沙发
 
谢谢分享!
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
顶~~~~~~~~~~~~~~
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表