在之前的博客中,我记录了我通过 GREv6 的方式将北京和老家的局域网组在了一起。在今年的规划中,我期望组建一张更大的网,将自己不同环境下的服务器和节点有序的组织起来。

在朋友的推荐下,我选择了 EasyTier 作为 SDWAN 方案,进行组网配置。

EasyTier 是一款一个简单、安全、去中心化的内网穿透 SDWAN 组网方案,使用 Rust 语言和 Tokio 框架实现。它安全可靠,无中心节点依赖,全链路零拷贝,性能开销小,支持穿透、智能路由,支持多种平台(x86,arm 等等),最重要的一点,它对 IPv6 的支持非常好。

现网环境介绍和需求

目前需要的是平替掉之前通过 GRE 方式实现的京冀的网络互联。北京和河北均支持移动运营商接入,所以还是打算两边走移动对接,这样可能会受到结算新政策的影响小一点。

北京河北的主路由器均是 Mikrotik 的 RouteOS,为了尽量减小对现网的调整,本次接入采用旁路方式进行接入,两方均旁挂在各自区域的主路由器下。河北区域采用虚拟机部署 EasyTier,北京则采用 RK3399 盒子进行接入。各自区域的 EasyTier 节点,我人为将其定义为 Edge 节点。为了提高网络的可靠性,引入两台华北区域的云服务器作为 Core 节点,在必要情况下,参与网络的流量转发。(注意:关于 Edge 和 Core 的说法是人为定义的,对于 EasyTier 来说,整个网络是平等的,并没有中心节点依赖。)

旁路模式

20241020175109

上图为网络拓扑,这是我目前在用的一种网络模式。相当于 Edge 节点做单臂路由。需求是我可以通过地域 B 的 PC 访问地域 A 的 WEBSERVER。

假定 EasyTier-Core 的 IP 为 100.100.100.100
本 EasyTier 的地址段为 10.123.1.0/24
地域 A 的网络为 192.168.100.0/24
地域 B 的网络为 192.168.200.0/24
地域 A 的 EasyTier 的 IP 为 192.168.100.2,tun 网卡 IP 为 10.123.1.10
地域 B 的 EasyTier 的 IP 为 192.168.200.2,tun 网卡 IP 为 10.123.1.11

  • 配置代理子网 proxy_cidr
    这个根据对应地域要宣告的 IP 地址段进行配置即可

  • 开启内核转发流量功能
    需要在 EasyTier 的 Edge 节点上配置 IP 转发

    1
    sysctl -w net.ipv4.ip_forward=1
  • 配置路由器的路由下一跳为 EasyTier 节点
    其实就是在路由器上加一条静态路由。我以 ROS 为例,比如地域 A 访问地域 B,则

    1
    ip route/add dst-address=192.168.200.0/24 gateway=192.168.100.2

    那么地域 B 的路由器上也需要写一条路由:

    1
    ip route/add dst-address=192.168.100.0/24 gateway=192.168.200.2

路由模式

20241020202808

假定 EasyTier-Core 的 IP 为 100.100.100.100
本 EasyTier 的地址段为 10.123.1.0/24
地域 A 的网络为 192.168.100.0/24
地域 B 的网络为 192.168.200.0/24
地域 A 的 EasyTier 的 IP 为 192.168.100.2,tun 网卡 IP 为 10.123.1.10
地域 B 的 EasyTier 的 IP 为 192.168.200.2,tun 网卡 IP 为 10.123.1.11

在路由模式下,需要走 EasyTier 网络的设备被挂在 EasyTier 节点的下面。如上图拓扑。

这里我只说明地域 A 中 EasyTier Edge 的配置。

  • 开启内核流量转发功能
1
sysctl -w net.ipv4.ip_forward=1
  • 判断流量进入网关的网口,这里假设是 ethX, 并假设 EasyTier 使用的网口名是 tun0
1
2
3
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i ethX -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o ethX -m state --state RELATED,ESTABLISHED -j ACCEPT
  • EasyTier 下挂设备的网关指向 EasyTier

测试

此时两地域互相 ping 互通即可。