Alphabot树莓派教程:变身路由器

Raspberry Pi 3板载了无线网络适配器和陶瓷天线,不需要额外增加无线网卡就可以把它打造成一个无线路由器。
有一种方法是给Raspberry Pi刷上OpenWRT等路由器固件,这样它就变成了一个比较正宗的路由器。
另一种方法是开启树莓派无线网络适配器的AP功能,并且共享其有线网络。这样依然使用Raspbian系统,可以发挥Raspberry Pi作为一个微型服务器的优势。

以下描述如何开启树莓派无线网络适配器的AP功能,并且共享其有线网络,实现无线路由功能。


安装软件包
需要安装2个软件包:
1sudo apt-get install hostapd dnsmasq
hostapd将开启无线适配器的AP功能,dnsmasq是DHCP和DNS服务器。


1.设置静态IP
需要将无线接口wlan0的IP配置成静态地址。
首先让dhcpcd不再管理wlan0,避免设置冲突。
修改文件:
1sudo vi /etc/dhcpcd.conf
在文件开头增加一行:
1denyinterfaces wlan0

接下来设置wlan0的静态IP,修改文件:
1sudo vi /etc/network/interfaces
把wlan0相关的内容修改成如下内容:
1allow-hotplug wlan0
2#iface wlan0 inet manual
3#    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
4iface wlan0 inet static
5    address 192.168.8.1
6    netmask 255.255.255.0
7    network 192.168.8.0
8    broadcast 192.168.8.255
192.168.8.1 是给树莓派做路由器分配的网关IP,这个不能与局域网其他路由器网关IP重复,若重复此处可以修改IP地址为其他网关。


重启服务和wlan0
1sudo service dhcpcd restart
2sudo ifdown wlan0
3sudo ifup wlan0
通过ifconfig可以看到wlan0的IP已经设定好了。


2.安装hostapd
输入命令安装,hostapd将开启无线适配器的AP功能。
1sudo apt-get install hostapd dnsmasq

新建配置文件:
1sudo vi /etc/hostapd/hostapd.conf

添加如下代码

01# This is the name of the WiFi interface we configured above
02interface=wlan0
03 
04# Use the nl80211 driver with the brcmfmac driver
05driver=nl80211
06 
07# This is the name of the network
08ssid=RaspberryPi
09 
10# Use the 2.4GHz band
11hw_mode=g
12 
13# Use channel 6
14channel=6
15 
16# Enable 802.11n
17ieee80211n=1
18 
19# Enable WMM
20wmm_enabled=1
21 
22# Enable 40MHz channels with 20ns guard interval
23ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
24 
25# Accept all MAC addresses
26macaddr_acl=0
27 
28# Use WPA authentication
29auth_algs=1
30 
31# Require clients to know the network name
32ignore_broadcast_ssid=0
33 
34# Use WPA2
35wpa=2
36 
37# Use a pre-shared key
38wpa_key_mgmt=WPA-PSK
39 
40# The network passphrase
41wpa_passphrase=raspberry
42 
43# Use AES, instead of TKIP
44rsn_pairwise=CCMP
以上内容中,ssid=RaspberryPi是无线网络的名字,wpa_passphrase=raspberry是密码(8位及以上)。
然后测试配置是否正确:
1sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

通过手机等设备应该可以搜到名为RaspberryPi的WiFi,还不需要连接。
如果没有问题,按Ctrl+C停止测试。
使上述设置生效:
1sudo vim /etc/default/hostapd

将#DAEMON_CONF=""修改为DAEMON_CONF="/etc/hostapd/hostapd.conf"。

3.安装DHCP服务
输入命令
1sudo apt-get install isc-dhcp-server
备份配置文件
1sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp.dhcpd.config.bak
编辑新的配置文件
1sudo vi /etc/dhcp/dhcpd.conf
修改成如下内容:
01default-lease-time 600;
02max-lease-time 7200;
03log-facility local7;
04  
05subnet 192.168.8.0 netmask 255.255.255.0 {
06  range 192.168.8.10 192.168.8.100;
07  option routers 192.168.8.1;
08  option broadcast-address 192.168.8.255;
09  option domain-name-servers 8.8.8.8,8.8.4.4;
10  default-lease-time 600;
11  max-lease-time 7200;
12}

此处设置的IP与上面的IP网关对应。

重新启动服务
1sudo service  isc-dhcp-server restart

4.开启ipv4转发
修改文件:
1sudo vim /etc/sysctl.conf
去掉net.ipv4.ip_forward=1前面的“#”号。

通过iptables做NAT转发:
1sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
2sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
3sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
这些配置重启后就失效了,需要保存下来:
1sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
设为开机自动加载:
1sudo vi /etc/rc.local
在exit 0上方增加:
1iptables-restore < /etc/iptables.ipv4.nat

启动服务:
1sudo service hostapd start<br data-filtered="filtered">

到此所有的配置都完成了,重启:
1sudo reboot

等Raspberry Pi重启完成,就可以用手机等设备连接该WiFi上网了,名字和密码是之前在/etc/hostapd/hostapd.conf文件中设定的。
连接后设备会获取到192.168.8.10----192.168.8.100之间的IP,并且可以通过树莓派连接的有线网络连上互联网,起到了无线路由器的功能。


如果遇到问题,可以通过以下命令检查服务情况。
1sudo service hostapd status<br data-filtered="filtered">
TAG: TF-Luna激光雷达 2.8寸LCD电容触摸显示屏ST7789适用于Arduino树莓派ESP32 Pico CST328 ESP32 C3 树莓派5官方原装PCIE转M.2 NVME SSD固态硬盘Raspberry Pi M.2 HAT+扩展板Pi5 Tang Nano系列FPGA例程汇总 RM520N GL支持5G/4G/3G M.2模块适用于移远RM50x 5G模组 ESP32 树莓派5外壳 树莓派摄像头MLX90641红外热像仪模块 16×12像素适用于Arduino/STM32 数据转换 树莓派2.8寸DPI电容触摸显示屏 LCD模块 480×640像素 串行总线电机 树莓派mipi ESP32 S3开发板1.8寸AMOLED显示屏368×448触摸 加速度陀螺仪 音乐播放 麦克风 支持AI语音大模型交互 可编程手表 ESP32-AI系列 使用教程 Milk-V Duo 固态硬盘扩展板 X1203 树莓派5 UPS电源管理扩展板不间断供电模块 树莓派Pico 1.14寸LCD ESP32 S3迷你开发板