珂珂的个人博客 - 一个程序猿的个人网站

easytier 部署

    最近网上看到这个组网工具,由于车机无ipv6 ,家里是ipv6 ,但有一台阿里云公网ipv4 服务器,以前用taiscale 和 zerotier 貌似没组成p2p,  这个easytier看起来部署还更简单,于是尝试下。

首先在阿里云服务器上安装,我这里尝试脚本一键安装因为网络墙问题没成功,所以换种方式。我的阿里云服务器ubuntu无gui,所以这里下载的cli ,是zip提供的easytier-linux-x86_64-v2.4.5.zip, 解压后上传到服务器,我这里上传到了/home目录

然后

./easytier-core --version

官方有有一键注册服务,但我使用的是systemd


将服务安装为 Linux Systemd 服务

创建新的服务文件 /etc/systemd/system/easytier.service,并根据需要修改 ExecStart 后面的命令行参数。

官方是这样的

但我这里可能由于之前跑了一键安装脚本,这个目录下是easytier@.service

我的内容如下

[Unit]
Description=EasyTier Service
Wants=network.target
After=network.target network.service
StartLimitIntervalSec=0

[Service]
Type=simple
WorkingDirectory=/opt/easytier
ExecStart=/opt/easytier/easytier-core -c /opt/easytier/config/default.conf
Restart=always
RestartSec=1s

[Install]
WantedBy=multi-user.target

启用服务

systemctl enable easytier.service  #我这里是easytier@default  ,下面同理

启动和停止

systemctl start easytier.service
systemctl stop easytier.service

/opt/easytier/config/default.conf 内容

instance_name = "default"
dhcp = true
listeners = [
    "tcp://0.0.0.0:11010",
    "udp://0.0.0.0:11010",
    "wg://0.0.0.0:11011",
    "ws://0.0.0.0:11011/",
    "wss://0.0.0.0:11012/",
]
exit_nodes = []
rpc_portal = "0.0.0.0:0"

[[peer]]
uri = "tcp://kecq.com:11010"

[network_identity]
network_name = "xxxxxx"
network_secret = "xxxxxx"

[flags]
default_protocol = "udp"
dev_name = "aliyun"    # 这个好像没用
enable_encryption = true
enable_ipv6 = true
mtu = 1380
latency_first = false
enable_exit_node = false
no_tun = false
use_smoltcp = false
foreign_network_whitelist = "*"
disable_p2p = false
p2p_only = false
relay_all_peer_rpc = false
disable_tcp_hole_punching = false
disable_udp_hole_punching = false
host_name = "aliyun-chengdu"  # 这个好像也不起作用  改成hostname 也不行?

此时服务器就部署好了,记得在阿里云官网打开防火墙。

家里ubuntu 也按照上面同理。但不知为何执行文件路径在/opt/easytier

/opt/easytier/config/default.conf 文件内容

instance_name = "default"
dhcp = true
listeners = [
    "tcp://0.0.0.0:11010",
    "udp://0.0.0.0:11010",
    "wg://0.0.0.0:11011",
    "ws://0.0.0.0:11011/",
    "wss://0.0.0.0:11012/",
]
exit_nodes = []
rpc_portal = "0.0.0.0:0"

[[peer]]
uri = "tcp://kecq.com:11010"  #阿里云地址

[network_identity]
network_name = "xxxxxx"   #填写上面阿里云服务器一样的
network_secret = "xxxxx"   #填写上面阿里云服务器一样的

[flags]
default_protocol = "tcp"
dev_name = "ubuntu-12900h"
enable_encryption = true
enable_ipv6 = true
mtu = 1380
latency_first = false
enable_exit_node = false
no_tun = false
use_smoltcp = false
foreign_network_whitelist = "*"
disable_p2p = false
p2p_only = false
relay_all_peer_rpc = false
disable_tcp_hole_punching = false
disable_udp_hole_punching = false

/etc/systemd/system/easytier@.service  文件内容

[Unit]
Description=EasyTier Service
Wants=network.target
After=network.target network.service
StartLimitIntervalSec=0

[Service]
Type=simple
WorkingDirectory=/opt/easytier
ExecStart=/opt/easytier/easytier-core -c /opt/easytier/config/%i.conf -n 192.168.31.0/24 --enable-quic-proxy --use-smoltcp  --hostname ubuntu12900h
Restart=always
RestartSec=1s

[Install]
WantedBy=multi-user.target

ExecStart  后面我加了一些参数。

然后就是注意打开下防火墙。

当然也可以在家里windows虚拟机上部署,家里ubuntu和windows 只需要部署一个就可以了,windows参照官网,可以直接使用gui的


然后说说在外面访问,我家里的成都电信宽带被拉入了限速Ip , 我其实并没有大流量上传也没跑pcdn ,这个后面准备投诉
在外面用手机流量直接防护家里Ipv6  ,上传是被限制的,而且我发现居然外面网家里直接用ipv6上传也是被限制的(用iperf3)....

然后尝试了ws 和wss协议,发现wss 被限制,ws貌似没有限制

如何强制使用ws协议,public server 貌似用tcp并不影响

是家里windows或ubuntu 启动时强制加上 -l ws:11011

.\easytier-core -d --network-name easytier-kecq --network-secret fangfang -p wss://kecq.com:11012 -n 192.168.31.0/24 --enable-quic-proxy --hostname winserver2025 -l ws:11011

并且外面客户端高级设置监听urls也只选ws

但发现外面用车机ipv4 的话p2p不容易打通,打通后会降级成udp

但外面手机卡ipv6 是可以打通,此时走ws协议,然后用分配的虚拟ip  跑iperf3 -c  家里局域网ip  -R  测试发现速度正常,相比来说ipv6 反而被限制。


至此如果使用车机ipv4,实在没搞定家里宽带限速问题,不折腾了。

另外用阿里云iperf3打流,发现阿里云下载带宽也没像上传带宽那样限制死3M ,至少能跑到70mbps 的。


2026.5.13

easytier web控制台

按官方的

./easytier-web-embed \
    --api-server-port 11211 \
    --api-host "http://127.0.0.1:11211" \
    --config-server-port 22020 \
    --config-server-protocol udp

然后在阿里云防火墙打开11211 

然后浏览器访问kecq.com:11211

会发现验证码打不开


点击Register注册一个账户,若刷新不出验证码则说明你--api-host设置有误

因为是用kecq.com 访问的,所以界面中api host   中应该改为http://kecq.com:11211

这里UI 就搭建好了,但实际上结束ssh 后就没有了,所以还需要加到systemctl服务中

创建 systemd 服务单元文件

vi /etc/systemd/system/easytier-web-embed.service

写入以下内容

[Unit]
Description=easytier-web-embed Service
After=network.target

[Service]
Type=simple
ExecStart=/opt/easytier/easytier-web-embed
User=root
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

加载服务

systemctl daemon-reload
systemctl enable easytier-web-embed --now

可以使用下面的命令查看服务状态和日志

systemctl status easytier-web-embed
journalctl -u easytier-web-embed -f

这里UI 就部署好了,上面ExecStart=/opt/easytier/easytier-web-embed   也没加参数就默认

然后就需要启动easytier-core 了,这里好像看起来应该是与命令行或服务启动的easytier-core冲突,这里的意思是接入UI,接下来在web上启动,选其一即可,因为在服务开启的状态下

启动下面命令貌似会报11010 端口已使用,所以停止掉easytier服务后用下面命令加入UI ,然后UI启动应该就可以,嗯,实践了下果然是这样

./easytier-core -w udp://127.0.0.1:22020/<你在自建web控制台上的用户名>

另外试了在easytier@.service 文件启动参数中加 -w udp://127.0.0.1:22020   貌似会报错

nginx 代理web ui

添加配置

vi /etc/nginx/conf.d/easytier-web.conf

内容如下

# HTTP 服务器块,用于重定向到 HTTPS
server {
    listen 80;
    server_name easytier.kecq.com; # 替换为你的域名

    # 强制将所有 HTTP 请求重定向到 HTTPS
    return 301 https://$host$request_uri;
}

# HTTPS 服务器块
server {
    listen 443 ssl;
    server_name easytier.kecq.com; # 替换为你的域名

    # SSL 证书配置
    ssl_certificate      /etc/letsencrypt/xxxxxx/xxxxxx.pem;
    ssl_certificate_key  /etc/letsencrypt/xxxxxxx/privkey.pem;

    # SSL 协议和加密套件配置(建议配置)
    ssl_protocols TLSv1.2 TLSv1.3; # 使用安全的协议版本
    ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; # 使用强密码套件
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 反向代理配置
    location / {
        # 代理到本地的 11211 端口
        proxy_pass http://localhost:11211;

        # 设置传递给后端服务器的请求头信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 可选:配置超时时间
        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
    }
}

然后

nginx -s reload

发现能访问网页,但登录不了,换了api host也不行,先不管它,可以直接用kecq.com:11211

然后/etc/systemd/system/easytier@.service

修改下

ExecStart=/opt/easytier/easytier-core --config-server udp://127.0.0.1:22020/上面ui注册的用户名

然后在web ui创建网络

在然后发现家里和阿里云通信使用默认tcp限速,只需要在家里启动的时候选 ws://kecq.com:11011  ,可以在阿里云上用 Iperf3 -c   xxxxx -R 验证下

另一个发现是外面车机wifi  surface连接后,使用192.168.31.x   没有直接使用  10.126.126.x 快,也可以外面用 Iperf3 -c   xxxxx -R 验证下

所以访问家里windows还需要在windows上再部署一个easytier  ,用10.126.126.x 访问jellyfin 使用1.5Mpbs  可以勉强流畅看电影,成都电信真辣鸡


上一篇:个人代码全部开源

下一篇:easytier 部署


0 评论

查看所有评论

给个评论吧