ZeroTier 实现家庭网络和工作单位园区网互访

ZeroTier 是一家采用免费商业模式的软件公司,其提供专有软件、SDK 以及商业产品和服务,用于创建和管理虚拟软件定义网络。该公司的旗舰终端用户产品 ZeroTier One 是一个客户端应用程序,可使个人电脑、智能手机、服务器和嵌入式设备等设备安全地连接到点对点虚拟网络。

首先通过 GitHub 账户登录 ZeroTier Central ,建立一个虚拟网络,并为其配置 IP 地址段。这个网段将作为园区网入口服务器、家庭网络小路由器以及各种其他客户端之间的互联地址。ZeroTier 能够把为这个网络配置的路由信息传播到每个连接到这个网络的设备上,这样就可以灵活的配置接入设备及网络间的互相访问了。

1. Linux 客户端软件安装配置

按照 ZeroTier 下载 页面提示,就可以正常安装软件。安装后可以通过如下命令加入 ZeroTier Central 上建立的网络:

sudo zerotier-cli join 

然后需要在 ZeroTier Central 配置 Members 允许访问并完善各种信息,之后该系统就可以访问这个网络了。对于 ZeroTier 网络路由中配置了==公网地址路由表项==的情况,还需要做如下配置,才能使这类路由生效:

sudo zerotier-cli set  allowGlobal=1

2. Debian Linux 园区网入口服务配置

对于园区网这种存在多跳路由的大规模网络的远程访问,可以通过设置一个 NAT 入口服务器来实现。

首先也按照官方网站的要求安装并配置服务,利用 zerotier-cli 命令以及 ZeroTier Central 配置 Members 并增加访问园区网网段的路由表项。在此基础上再进一步配置服务器的 NAT 功能,将 /etc/sysctl.conf 文件中的 net.ipv4.ip_forward=1 取消注释。然后执行如下脚本;

#!/bin/sh

sudo sysctl -w net.ipv4.ip_forward=1

PHY_IFACE=eth0
ZT_IFACE=$(ip link | grep -oP 'zt\w+')

sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT

sudo apt install iptables-persistent
sudo systemctl enable netfilter-persistent.service
sudo iptables-save -f /etc/iptables/rules.v4

需要注意的是,docker 之类的程序会更改 iptables 的配置,建议执行下面命令,停掉 docker 服务并清空 iptables 规则,再执行上面的脚本。

sudo systemctl stop docker.socket
sudo iptables -F
sudo iptables -X
sudo iptables -Z
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t nat -Z

3. OpenWRT 家庭网络小路由器配置

首先安装 zerotier 软件包,配置服务开机自动启动,修改 /etc/config/zerotier 配置如下:

config zerotier 'zerotier'
    option enabled '1'
    option config_path '/etc/zerotier'
    option copy_config_path '0'

然后执行 /etc/init.d/zerotier start 命令启动服务,利用 zerotier-cli 命令以及 ZeroTier Central 配置 Members 并增加访问家庭网络内部网段的路由表项。

ZeroTier 配置完毕后,利用 ip address 命令确定新增网络接口(zt 开头接口),并编辑 /etc/config/network 文件,增加类似如下内容:

config interface 'zerotier'
    option proto 'none'
    option ifname 'zt7nnm42cx'
    option auto '1'
    option delegate '0'

编辑 /etc/config/firewall 文件,增加如下内容:

config zone
    option name 'zerotier'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'REJECT'
    option network 'zerotier'

config forwarding
    option src 'lan'
    option dest 'zerotier'

config forwarding
    option src 'zerotier'
    option dest 'lan'

重新启动 OpenWRT 系统,就可以对家庭网络进行远程访问了。

你可能感兴趣的:(ZeroTier 实现家庭网络和工作单位园区网互访)