通过 ZeroTier One 网络配置路由出口

一、功能介绍

在一些企业网络中,需要特定的路由出口以供员工使用,这里我们将介绍如何通过 ZeroTier One 网络配置特定的路由出口。

ZeroTier One 是一个开源应用程序,它可以通过点对点加密将各区域的网络通信连接到一起,从而达到安全的网络通信。

在本文中我们将介绍如何通过 ZeroTier One 网络配置路由出口。

二、先决条件

在完成本文中的所有任务之前,我们需要先了解如下内容:

完成这些先决条件,您就可以开始本文的学习了。

三、操作流程

  1. 安装 ZeroTier One,这里根据官网提示进行安装即可

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

    在 ZeroTier One 的路由器上配置 ZeroTier One 网络

    zerotier-cli join <ZeroTier One 网络 ID>
    

    访问 ZeroTier One 的管理页面 ,在此页面上允许此服务器连接 ZeroTier One 网络并配置服务器的IP地址。 服务器IP本文以 10.0.0.1/24 为例,ZeroTier One 分配给到服务器的IP地址以 10.1.1.1/24 为例。

  2. 检查服务器是否启用 Linux 内核数据转发功能。

    sudo sysctl -a | grep net.ipv4.ip_forward
    

    如果没有启用,则需要启用:

    sudo sysctl -w net.ipv4.ip_forward=1
    
  3. 配置 iptables 规则

    通过 ip addr 命令查看网络接口名称,输出如下

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
            valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
            valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0d:7a:c9:0f:62 brd ff:ff:ff:ff:ff:ff
        inet 10.0.0.1/24 brd 10.0.0.255 scope global eth0
            valid_lft forever preferred_lft forever
        inet6 fe80::20d:3aff:fec9:f57/64 scope link
            valid_lft forever preferred_lft forever
    3: zt0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc fq_codel state UNKNOWN group default qlen 1000
        link/ether 5a:89:77:77:77:77 brd ff:ff:ff:ff:ff:ff
        inet 10.1.1.1/24 brd 10.1.1.255 scope global zt0
            valid_lft forever preferred_lft forever
        inet6 fe80::5889:7777:7777:7777/64 scope link
            valid_lft forever preferred_lft forever
    

    添加 iptables 规则,配置如下:

    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    
    #允许服务器的网卡 eth0 转发所有来自 ZeroTier One 的流量
    sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
    

    因为 iptables 规则会在服务器重启后丢失,这里安装 iptables-persistent 实现程序的持久化。

    sudo apt install iptables-persistent
    sudo netfilter-persistent save
    

    如果您的服务器重启后无法转发流量,请检查 iptables 规则是否保存。

  4. 访问 ZeroTier One 的管理界面 ,在此页面上配置需要路由的IP段。这里我们以 8.8.8.0/24 为例。

  5. 接下来,配置 ZeroTier One 客户端软件允许承载默认路由流量,这将修改客户端的路由,使其路由到 ZeroTier One 的网络。这里我们在本地路由上执行:

    sudo zerotier-cli set <ZeroTier One 网络 ID> allowDefault=1
    sudo zerotier-cli set <ZeroTier One 网络 ID> allowGlobal=1
    

    每次重启客户端的 ZeroTier 服务时,值会被重置为 0 ,这意味着客户端将不会路由到 ZeroTier One 的网络。所以需要再次运行此命令以激活路由。

  6. 客户端的DNS设置

    建议客户端配置为企业内部的DNS服务器,既能实现内网访问,同时也可以避免请求到不正确的IP地址。

至此已配置完成,您可以在 ZeroTier One 的管理界面上查看网络的状态和管理网络规则。