WireGuard + udp2raw 组网实施方案

前言

因前段时间去市场监督局把企业注销了，导致使用了企业备案的域名也被工信部撤销了备案登记，网站也因此不能在继续访问，直接把网站停了但看着还有几台 3 年后的服务器就觉得很可惜，便决定使用 oracle 的免费小机来实现中转跳过备案，说干就干！WireGuard 组网一把梭，发现到了高峰期对 udp 协议的干扰阻断特别严重，而且还被 mtu 值的大小坑了好久，对此气急败坏的我只能上 GitHub 找找有没有什么好用的项目，还真让我找到了 udp2raw 项目，服务一跑... over!

wireguard 与 udp2raw

wireguard
一款被 Linux 创始人称做艺术品的组网神器
官网：https://www.wireguard.com/

udp2raw
跨平台版 udp2raw, 简称 udp2raw_mp (mp=multiplatform), 支持 windows/mac/bsd/linux.
项目地址：https://github.com/wangyu-/udp2raw-multiplatform
中文文档：https://github.com/wangyu-/udp2raw-multiplatform/wiki/%E4%B8%AD%E6%96%87%E6%96%87%E7%AB%A0

实现原理

配置

wireguard 配置

在 server 机器上，添加一个 Interface，监听 4321 端口，接收转发过来的流量。

Copy
[Interface]
PrivateKey = # 私钥
Address = 10.2.0.1/24

PostUp = iptables -A FORWARD -i wg2 -j ACCEPT; iptables -A FORWARD -o wg2 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg2 -j ACCEPT; iptables -D FORWARD -o wg2 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 4321
DNS = 8.8.8.8
MTU = 1200

[Peer]
PublicKey = # 机器 B 的公钥
AllowedIPs = 10.2.0.2/32

在 client 机器上，也添加 Interface，设置 Endpoint 为 127.0.0.1:3333，流入 udp2raw 的入站。

Copy
[Interface]
PrivateKey = # 私钥
Address = 10.2.0.2/24
DNS = 8.8.8.8
MTU = 1200

[Peer]
PublicKey = # 机器 A 的公钥
Endpoint = 127.0.0.1:3333
AllowedIPs = 10.2.0.0/24

配置完成，更多详细命令参考文章底部相关文档。

udp2raw 配置

server 后台运行命令：

Copy
nohup ./udp2raw_x86 -s -l0.0.0.0:54321 -r 127.0.0.1:4321 -a -k "passwd" --raw-mode faketcp > udp2raw.log 2>&1 &

需开发服务器的 54321 端口
client 后台运行命令：

Copy
nohup ./udp2raw_x86 -c -l0.0.0.0:3333 -r 175.178.196.126:54321 -k "passwd" --raw-mode easy-faketcp > udp2raw.log 2>&1 &

配置完成。

相关文档