原因
入手树莓派后,你们一定和我一样,想要在树莓派上折腾各种各样的东西,其中一定有把宽带分配的公网 IP 利用起来的想法。
想把公网 IP 利用起来,最直接的方式是用树莓派当路由器使用,但是树莓派4B只有一个千兆网口,所以这就是这篇文章的主题“树莓派单臂路由”。
路由器的基本功能有:连接外网(拨号上网)、开启 DHCP 功能、提供 WIFI 热点,本文也是主要解决这三个问题。
设备列表
树莓派4B + Debian10 x1
千兆交换机 x1
无线路由器 x1
准备工作
- 给树莓派安装 Debian10 系统,安装教程请参考的另一篇文章: 树莓派4安装Debian10
- 先把树莓派连接到原来的路由器上,确保能 ssh 登录 Debian10 系统;
- 登入树莓派系统后,开启 ipv4 转发:
$ sudo vi /etc/sysctl.conf # 把前边的注释删除 net.ipv4.ip_forward=1 $ sudo sysctl -p
提供 WIFI 热点
在设置单臂路由前一定要开启 WIFI 热点,这是因为树莓派只有一个网络接口,在连接外网后只能用 WIFI 连接进入系统。
我分别试了 hostapd 和 network-manager 两种方式创建热点,相比起来 network-manager 配置更加简单且稳定,所以特别不推荐大家折腾 hostapd 的方式。
以下为 network-manager 安装和配置的步骤:
# 安装 network-manage
$ sudo apt install network-manager
# 添加 WIFI 热点配置
$ sudo nmcli c add type wifi con-name wlan0 ifname wlan0 wifi.mode ap ssid <WIFI 名称>
# 开启 5G 频道(设为 2G 有时无法搜到,请勿修改)
$ sudo nmcli c mod wlan0 wifi.band a
# 设置 WIFI 密码(设为 WPA2 有的设备无法连接,请勿修改)
$ sudo nmcli c mod wlan0 wifi-sec.key-mgmt wpa-psk wifi-sec.psk <WIFI 密码>
# 设置固定IP
$ sudo nmcli c mod wlan0 ipv4.method manual ipv4.addresses 10.5.7.1/24
# 重启服务
$ sudo systemctl restart NetworkManager.service
不知道是树莓派的 WIFI 模块有问题还是系统的原因,尝试了多种设置后,发现 WIFI 热点只能开启 5G 和 WPA 加密。
所以以上的配置,建议直接一路下一步不要折腾了,如果有人折腾弄清楚为什么了请一定要告诉我。
重启 network-manager 后,用可以用手机尝试连接,如果连接成功就接着下一步。
开启 DHCP 功能
连接 WIFI 成功后,此时图标应该是感叹号的状态,这是因为没有分配 IP 给手机,所以接下来要开启 DHCP 功能:
# 安装 dnsmasq
$ sudo apt install dnsmasq
# 编辑配置,在配置最后添加
$ sudo vi /etc/dnsmasq.conf
interface=wlan0
listen-address=10.5.7.1
dhcp-range=10.5.7.100,10.5.7.200,48h
# 重启 dnsmasq 服务
$ sudo systemctl restart dnsmasq.service
重启 dnsmasq 服务后,在手机上断开 WIFI 并重新连接,此时应该能正常上网了。
连接外网
开启 WIFI 后,可以用笔记本电脑或者手机共享网络,登入树莓系统。
如果没有笔记本电脑,可以用手机连接后,把网络共享给的你电脑,具体步骤如下:
- 断开电脑的网络;
- 手机连接 WIFI 并用 USB 连接到电脑;
- 进入手机设置 => 移动网络 => 移动网络共享 => USB 共享网络;
- 在电脑上尝试 ssh 登录树莓派,连接地址为前边 WIFI 设置的固定IP:10.5.7.1;
现在我们用手机共享网络,登入了树莓派系统,把光猫连在旧路由器上的网线,直接插在树莓派的网口上。
我的宽带是 DHCP 的,所以不用任何设置就能直接连接外网。
可以用 ip addr
命令查看是否分配了外网的 IP 地址,如果没有请参考我另一篇文章:树莓派4+Debian10 当路由器,无法拨号上网
如果你的宽带需要拨号上网,建议用 network-manage 进行拨号。详细配置请参考其他资料,因为我没有这个条件尝试。
接下来,还需要添加一个虚拟网卡,设置一个固定 IP 给连接到树莓派的有线设备充当网关:
-
添加虚拟网卡:
# 在配置最后添加 $ sudo vi /etc/network/interfaces.d/eth0 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 10.5.6.1 netmask 255.255.255.0 # 重启网络 $ sudo systemctl restart networking.service
重启网络后,用
ip addr
查看 eth0 会有两个 IP 地址:一个是外网的地址、一个是内网 10.5.6.1 的地址。 -
开启 DHCP 功能:
# 在配置最后添加 $ sudo vi /etc/dnsmasq.conf interface=eth0:0 listen-address=127.0.0.1,10.5.6.1 dhcp-range=10.5.6.100,10.5.6.200,48h # 重启 dnsmasq 服务 $ sudo systemctl restart dnsmasq.service
开启 2G WIFI 功能
前边提到过,树莓派无法提供 2G WIFI 连接,所以这里可以用旧的路由器充当 2G 的接入点。
如果你的路由器支持有线桥接,那可以桥接到树莓派上;如果不支持桥接,可以连到树莓派后设置为二级路由,只是这样就没办法访问到树莓派和同在树莓派下的其他设备了。
因为不同的路由器配置可能不一样,请自行查阅其他资料,这里就不再叙述了。
这一步不是必须的,可以跳过。
最终网络拓扑
最后,把树莓派、光猫、无线路由器和其他有线设备统统接到交换机上,就可以愉快的玩耍了。
更多推荐
树莓派4B + Debian10 单臂路由
发布评论