lala.im:WireGuard+UDPspeeder+Udp2raw-tunnel

運維技術·lala.im · 2019-03-22 · 111 人浏览

原文地址:https://lala.im/5273.html,請支持原作者!該處僅作轉載。

WireGuard是UDP数据包,ISP有QoS,所以用Udp2raw-tunnel把UDP伪装成TCP,绕过ISP的限制,接着因为线路质量的问题,再套上UDPspeeder实现多倍发包加速。大致上就是这样。。。
安装wireguard:

yum -y install wget curl nano net-tools supervisor
curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
yum -y install epel-release
yum -y install kernel-headers-$(uname -r) kernel-devel-$(uname -r)
yum -y install wireguard-dkms wireguard-tools

下载UDPspeeder和Udp2raw-tunnel:

mkdir -p /opt/udp2raw && mkdir -p /opt/udpspeeder
cd /opt/udp2raw && wget https://github.com/wangyu-/udp2raw-tunnel/releases/download/20181113.0/udp2raw_binaries.tar.gz
cd /opt/udpspeeder && wget https://github.com/wangyu-/UDPspeeder/releases/download/20190121.0/speederv2_binaries.tar.gz
tar -xzvf /opt/udp2raw/udp2raw_binaries.tar.gz
tar -xzvf /opt/udpspeeder/speederv2_binaries.tar.gz
rm -rf /opt/udp2raw/udp2raw_binaries.tar.gz && rm -rf /opt/udpspeeder/speederv2_binaries.tar.gz

我是在一条极其辣鸡的线路上部署的这个,有明显的加速效果,但因为每个软件的配置参数很灵活,我的这套配置不一定能在你那边达到最佳的效果,所以实际还是要根据自身的网络情况去调整一些参数。
一些参数配置参考这里:
https://github.com/wangyu-/UDPspeeder/wiki/%E4%BD%BF%E7%94%A8%E7%BB%8F%E9%AA%8C
https://github.com/wangyu-/UDPspeeder/wiki/mode%E5%92%8Cmtu%E9%80%89%E9%A1%B9
我这边直接用supervisor把服务端都丢到后台去运行:

nano /etc/supervisord.d/udp.ini

写入:

[supervisord]
nodaemon=false

[program:udp2raw]
user=root
directory=/opt/udp2raw
command=/opt/udp2raw/udp2raw_amd64 -s -l 0.0.0.0:50001 -r 127.0.0.1:50000 --raw-mode faketcp -a -k moon5
autorestart=true

[program:udpspeeder]
user=root
directory=/opt/udpspeeder
command=/opt/udpspeeder/speederv2_amd64 -s -l 0.0.0.0:50000 -r 127.0.0.1:50002 -f 2:10 --mode 1 --mtu 1400
autorestart=true

设置一下开机自启:

systemctl start supervisord
systemctl enable supervisord

配置wireguard:

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p
mkdir -p /etc/wireguard
wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
wg genkey | tee /etc/wireguard/clientprivatekey | wg pubkey > /etc/wireguard/clientpublickey

新建服务端配置文件:

nano /etc/wireguard/wg0.conf

写入如下配置(注意MTU):

[Interface]
PrivateKey = 服务端私钥
Address = 192.168.0.1/24
ListenPort = 50002
DNS = 8.8.8.8
MTU = 1200

[Peer]
PublicKey = 客户端公钥
AllowedIPs = 192.168.0.0/24

启动WireGuard:

wg-quick up wg0
systemctl enable wg-quick@wg0

防火墙设置:

systemctl restart firewalld
systemctl enable firewalld
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 masquerade'
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT
firewall-cmd --permanent --add-port=50000/udp
firewall-cmd --permanent --add-port=50001/tcp
firewall-cmd --permanent --add-port=50002/udp
firewall-cmd --reload

UDPspeeder客户端
Udp2raw-tunnel客户端
假设你把客户端都下载到如下目录,使用PowerShell进入到下面的目录:

cd C:\Users\LALA\Desktop\udp

使用下面的参数启动UDPspeeder:

./speederv2 -c -l 0.0.0.0:12315 -r 127.0.0.1:12316 -f 2:10 --mode 1 --mtu 1400 --report 10

Udp2raw-tunnel:

./udp2raw_mp_nolibnet -c -l 127.0.0.1:12316 -r vpsip:50001 --raw-mode easyfaketcp -k moon5

注:按作者说的话,这里这个easyfaketcp的性能没有faketcp的性能好,如果需要用faketcp的话,可以看这个说明修改
WireGuard的客户端配置文件:

[Interface]
PrivateKey = 客户端私钥
Address = 192.168.0.2/24
DNS = 8.8.8.8
MTU = 1200

[Peer]
PublicKey = 服务端公钥
Endpoint = 127.0.0.1:12315
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25

记一下需要注意的地方:
1.UDPspeeder的参数需要调整,尤其是-f发包的倍率,这个要根据实际的网络环境去调整,我这个线路特别烂,所以我这篇文章里面这个参数设置的比较暴力。。。
2.WireGuard内的MTU改为1200,不然Udp2raw-tunnel一直报huge packet mtu什么的。。。
搞不动了,差不多就这样吧。。。
参考文献:
https://github.com/wangyu-/UDPspeeder/wiki/UDPspeeder%E5%92%8Cudp2raw%E4%B8%B2%E8%81%94%E5%8A%A0%E9%80%9FOpenVPN
有JB

範例

運維技術 lala.im
Theme Jasmine by Kent Liao