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