Categories
Networks

Glorytun SD-WAN的开源实现

Glorytun是一款小型、简单,但又非常安全的隧道软件,支持AES-NI和ChaCha20-Poly1305加密,程序依赖libsodium >= 1.0.4,并且要求服务端和客户端的时间必须同步,误差不超过十分钟,安全性可以说非常高了。在功能上,与MPLS相比,支持多路径和故障转移(SD-WAN功能实现),也支持mtudp(UDP多端口复用),可极大限度的利用网络带宽。

项目地址:

https://github.com/angt/glorytun

安装方式

使用较新的Linux发行版,比如Ubuntu 16,CentOS 7,在安装完libsodium依赖后,可直接下载项目仓库的x86_64稳定版本,代码也可以自行编译安装,移植到其他系统或嵌入式系统,可以支持BSD系统,MacOS系统

示例

首先下载二进制执行文件,测试系统为Linux,图省事直接跳过编译过程了。

服务端和客户端都需要下载

root@VM:~# wget https://github.com/angt/glorytun/releases/download/v0.2.2/glorytun-0.2.2-x86_64-linux-musl.bin

root@VM:~# mv glorytun-0.2.2-x86_64-linux-musl.bin /usr/local/sbin/glorytun

root@VM:~# chmod +x /usr/local/sbin/glorytun

配置服务端

生成密钥gt.key并启动server,这个密钥客户端也需要用到,只需要生成一次。

root@VM:~# (umask 066; glorytun keygen > gt.key)

root@VM:~# glorytun bind 0.0.0.0 2914 dev tun0 keyfile gt.key chacha &

添加服务端ip到tun0,并指向客户端ip

root@VM:~# ifconfig tun0 10.0.1.1 pointopoint 10.0.1.2 up

然后设置路由,将来自glorytun隧道(tun0)的流量进行转发到物理网口(eth0)

root@VM:~# iptables -t nat -I POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE

允许来自tun0接口的请求:

root@VM:~# iptables -I INPUT -i tun0 -j ACCEPT

启用tun0(glorytun)和eth0(物理接口)之间的转发:

root@VM:~# iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT

root@VM:~# iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT

客户端配置

启动客户端,将服务端生成的gt.key保存到路径,然后执行:

root@VM:~# glorytun bind 0.0.0.0 to <SERVER_IP> 2914 dev tun0 keyfile gt.key chacha &

添加客户端ip到tun0,并指向服务端ip

root@VM:~# ifconfig tun0 10.0.1.2 pointopoint 10.0.1.1 up

设置最大速率,一般以客户端的最大上传与下载设置即可

root@VM:~# glorytun path up <LOCAL_IP> rate tx 1mbit rx 20mbit

注:

tx:上传

rx:下载

测试

root@VM:~# ping 10.0.1.1

PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data.

64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=10.954 ms

64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=11.024 ms

64 bytes from 10.0.1.1: icmp_seq=3 ttl=64 time=10.858 ms

64 bytes from 10.0.1.1: icmp_seq=4 ttl=64 time=10.966 ms

64 bytes from 10.0.1.1: icmp_seq=5 ttl=64 time=10.994 ms

64 bytes from 10.0.1.1: icmp_seq=6 ttl=64 time=11.246 ms

^C

至此,Glorytun隧道已经建立,更多用法请期待后续更新

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.