使用树莓派在ZeroTier和本地网络之间创建桥接

你是否有一些家中的设备无法运行ZeroTier?你是否想要远程访问这些设备?你是否已经在使用ZeroTier?你可以使用一台小型Linux PC作为ZeroTier虚拟网络和物理网络之间的桥接设备。

假设和要求

在开始之前,请确保满足以下假设和要求:

  • 你正在在家庭网络上进行操作,并可以登录到你的路由器并找到DHCP设置。
  • 你有一个键盘、显示器和以太网电缆连接到你的树莓派。因为在配置过程中可能会破坏网络,导致无法远程连接,所以这些物理设备很重要。
  • 你对命令行和SSH有一定的了解。
  • 本教程将使用systemd networking。如果你对systemd有异议,你可能需要自行适应不同的Linux网络配置系统。
  • 我们在编写本文时使用的是树莓派2,但树莓派3或4也应该可以正常工作。任何运行基于Debian 10的发行版的设备都应该可以正常工作。不一定非要使用树莓派,但某些指令可能特定于Raspbian系统。

准备信息

在开始之前,请准备以下信息以在配置过程中使用:

  • 物理LAN子网
  • 物理LAN DHCP范围
  • ZeroTier自动分配范围
  • 默认网关IP地址(路由器)
  • 桥接IP地址(将静态分配)
  • 创建一个新的ZeroTier网络并获取其ID。保留旧网络以作为连接已使用ZeroTier的设备的备用方法。
  • DHCP范围和ZeroTier自动分配范围应该位于相同的子网中,但不重叠。你可能会基于已在你的路由器上配置的内容进行设置。

以下是一个示例计划:

  • 物理LAN子网:192.168.192.0/24
  • 物理LAN DHCP范围:192.168.192.65到192.168.192.126
  • ZeroTier自动分配范围:192.168.192.129到192.168.192.190
  • 默认网关IP地址:192.168.192.1
  • 桥接IP地址:192.168.192.2/24(或使用DHCP)
  • ZeroTier网络ID:d5e04297a19bbd70

步骤

步骤1:使你的桥接设备运行起来

首先,确保你的树莓派设备已经启动并运行。按照以下步骤进行操作:

  1. 遵循树莓派的安装指南,下载并安装操作系统。你可以使用以下版本:Raspbian Buster Lite

  2. 启用SSH以便远程登录到树莓派,详细说明请参考这里

  3. 使用SSH连接到树莓派,例如:

    ssh pi@raspberrypi.local

    或者

    ssh pi@
  4. 更新操作系统:

    sudo apt update && sudo apt -y full-upgrade && sudo reboot
  5. 在重启后重新登录。

步骤2:安装ZeroTier

接下来,安装ZeroTier。请遵循Linux系统的安装指南,具体指南请参考这里。基本上,你可以运行以下命令:

curl -s https://install.zerotier.com | sudo bash

在安装完成后,设置一些shell变量以在后续配置中使用:

NETWORK_ID=<你的网络ID>
BR_IF="br0"
BR_ADDR=<你的桥接地址>
GW_ADDR=<你的网关地址>

然后,加入ZeroTier网络:

sudo zerotier-cli join $NETWORK_ID
sudo zerotier-cli listnetworks

我们不希望ZeroTier在$ZT_IF上管理地址或路由,我们会在下面的步骤中手动进行配置。

sudo zerotier-cli set $NETWORK_ID allowManaged=0

再设置一个变量,用于存储ZeroTier网络接口的名称,你可以从listnetworks输出中找到它,它通常会类似于:zt3jvirser。

ZT_IF=<你的ZeroTier接口名称>

步骤3:在my.zerotier.com上配置设备

前往my.zerotier.com,找到你的ZeroTier网络($NETWORK_ID),然后在“Members”部分添加你的设备。打开高级设置的扳手图标,并选中以下选项:

  • 允许桥接
  • 不自动分配
  • 授权成员

步骤4:切换到systemd networking

现在,我们将切换到systemd networking。首先,删除已有的网络配置:

sudo apt remove --purge --auto-remove dhcpcd5 fake-hwclock ifupdown isc-dhcp-client isc-dhcp-common openresolv

然后,启用systemd-networkd:

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf;
sudo systemctl enable systemd-networkd;
sudo systemctl enable systemd-resolved;
sudo systemctl enable systemd-timesyncd;

接下来,配置网络接口。我们将在下面的步骤中创建网络配置文件。以下是示例配置文件:

cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0.network
[Match]
Name=$BR_IF

[Network]
Address=$BR_ADDR
Gateway=$GW_ADDR
DNS=1.1.1.1
EOF

cat << EOF | sudo tee /etc/systemd/network/br0.netdev
[NetDev]
Name=$BR_IF
Kind=bridge
EOF

cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0-zt.network
[Match]
Name=$ZT_IF

[Network]
Bridge=$BR_IF
EOF

cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0-en.network   
[Match]
Name=eth0 # 可能是en*

[Network]
Bridge=$BR_IF
EOF

完成配置后,请检查网络配置文件:

tail -n+0 /etc/systemd/network/*

如果需要,使用你喜欢的文本编辑器编辑这些文件。如果一切看起来正常,重新启动树莓派以应用配置:

sudo reboot

你现在应该能够从物理LAN连接到树莓派,使用$BR_ADDR作为目标地址。

如果在启动过程中等待网络连接时间较长,有时物理接口可能会出现长的“可预测接口名称”,例如“enb827eb0d4176”,有时只是“eth0”,这取决于Raspbian版本。如果出现这种情况,请连接键盘和显示器,并检查/etc/systemd/network/25-bridge-br0-en.network以匹配接口名称。

步骤5:配置ZeroTier网络

前往my.zerotier.com/network/$NETWORK_ID,然后在“设置” -> “Advanced”中进行以下配置:

  • 删除默认的Managed Route,添加新的Managed Route $ZT_ROUTE
  • 将IPv4自动分配更改为Advanced,
  • 删除现有的Pool,创建新的Pool,其范围从$ZT_POOL开始和结束。

为了文档记录,将$BR_ADDR分配给ZeroTier桥接成员。

结论

至此,你已经成功创建了一个树莓派桥接设备,用于将ZeroTier虚拟网络和物理网络连接起来。你可以从物理LAN连接到树莓派,并通过它访问ZeroTier网络中的设备。

如果一切正常,你应该能够在一分钟后通过$BR_ADDR重新使用SSH连接到树莓派。如果有任何问题,树莓派不再在网络上,你需要使用键盘和显示器来查找问题。

希望这个教程能够帮助你成功创建一个ZeroTier和本地网络之间的桥接,以便更轻松地管理和访问你的设备。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

在ZeroTier和物理网络之间进行路由设置

2023-12-17 23:11:43

指数词

创建Microsoft 365 E5 Renew Plus教程

2023-12-17 23:16:03

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索