Ricky Hao

Raspberry Pi 4:将树莓派作为网桥使用

概述

由于家里网线布局问题,只有一条网线能够到达我卧室,但是PC和树莓派均需要网线上网,因此,一个奇怪的需求诞生了:

  • 给树莓派加一个USB网卡
  • 将USB网卡和树莓派自身网卡桥接
  • PC直连树莓派USB网卡,树莓派网卡直连路由器
  • PC通过树莓派的网卡桥接进行上网

需求

  • 树莓派
  • USB网卡
  • 网线

准备操作

首先,我们可以将树莓派连上Wifi,防止在之后的网络真空期不能使用SSH连接树莓派。

创建网桥

这里,我们将直接通过配置文件的方式,在/etc/systemd/network文件夹下创建多个文件,让树莓派在重启后能够自动创建相关的网络设备。

  • br-lan.netdev:自动创建网桥
[NetDev]
Name=br-lan
Kind=bridge
  • br-lan.network:配置网桥的网络,打开DHCP
[Match]
Name=br-lan
[Network]
DHCP=yes
DNSSEC=no
  • en.network:USB网卡接入网桥
[Match]
Name=en*
[Network]
DHCP=no
DNSSEC=no
Bridge=br-lan
  • eth.network:树莓派网卡接入网桥
[Match]
Name=eth*
[Network]
DHCP=no
DNSSEC=no
Bridge=br-lan

完成以上几个文件后,在树莓派重启后将会自动完成网桥的建立。但是,现在先别重启,还需要对iptables进行转发配置。

备注

树莓派接入更多网卡之后,可能需要编辑/usr/lib/systemd/system/systemd-networkd-wait-online.service,忽略树莓派本身网卡eth0和USB网卡:

ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --ignore eth0 --ignore enp1s0u1u2

不然可能出现systemd-netword-wait-online启动超时的问题。

iptables

增加网桥转发规则,并持久化

# iptables -I FORWARD_direct -i br-lan -o br-lan -j ACCEPT
# iptables-save > /etc/iptables/iptables.rules
# systemctl enable iptables

如果有IPv6环境,也需要进行配置:

# ip6tables -I FORWARD_direct -i br-lan -o br-lan -j ACCEPT
# ip6tables-save > /etc/iptables/ip6tables.rules
# systemctl enable ip6tables

结果

最后,重启树莓派,我们的电脑就能够通过树莓派连接到路由器,通过路由器的DHCP获得IP地址上网了,同时,树莓派上的网桥br-lan也能够通过DHCP获取到树莓派的IP地址。

参考

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据