服务端配置
在VPS,下载服务端:
wget https://github.com/wangyu-/udp2raw/releases/download/20200818.0/udp2raw_binaries.tar.gz
tar xvf udp2raw_binaries.tar.gz
解压出来的东西,除了udp2raw_amd64之外,所有其它解压出来的东西都可删除。
./udp2raw_amd64 -s -l 0.0.0.0:4096 -r 127.0.0.1:51820 -a -k mypassword --raw-mode faketcp &
(可用systemd把此命令运行为service)
此命令中的51820为服务器上的wireguard所监听的端口。
客户端配置(客户端机器为mac)
mkdir ~/udp2raw_mp_binaries
cd ~/udp2raw_mp_binaries
wget https://github.com/wangyu-/udp2raw-multiplatform/releases/download/20210111.0/udp2raw_mp_binaries.tar.gz
tar xvf udp2raw_mp_binaries.tar.gz
sudo ./udp2raw_mp_mac -c -l 0.0.0.0:3333 -r vps-public-ip:4096 -k mypassword --raw-mode easy-faketcp (不要关闭此窗口)
cat /etc/wireguard/wg2.conf
[Interface]
PrivateKey = 你的PrivateKey的值
Address = 17.0.0.2/24
DNS = 8.8.8.8
MTU = 1200
[Peer]
PublicKey = 你的PublicKey的值
Endpoint = 0.0.0.0:3333
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
其中,Endpoint的值要改为0.0.0.0:3333
然后运行wireguard:
sudo wg-quick up wg2
至此,即可用 wireguard翻墙。
https://github.com/wangyu-/udp2raw-multiplatform/wiki/%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8
https://github.com/wangyu-/udp2raw-multiplatform/wiki/%E4%B8%AD%E6%96%87%E6%96%87%E7%AB%A0
注意1:必须先运行udp2raw,后运行wireguard。顺序不可颠倒。
注意2: MTU的值要设置得低一点,比如1200,不要设为1300或1400.
这在https://github.com/wangyu-/udp2raw-tunnel/blob/master/doc/README.zh-cn.md里面有说明:“MTU设置(重要)
不论你用udp2raw来加速kcptun还是vpn(基于udp流量的vpn, 比如wireguard vpn),为了稳定使用,都需要设置合理的MTU(在kcptun/vpn的配置文件里设置,而不是在udp2raw里),建议把MTU设置成1200。client和server端都要设置。(设置为同一个值)“related post:
https://briteming.blogspot.com/2018/11/macwireguard.html
https://briteming.blogspot.com/2017/10/udp2raw-tunnel_23.html
-----------------------------------------------
Wireguard-anti-QOS
介绍
Wireguard走UDP协议,部分运营商会对UDP进行限速QOS处理使连接速度不理想或出现丢包情况。若串联udp2raw可将UDP流量伪装成TCP流量避免被运营商QOS。本项目脚本会在服务器搭建Wireguard和udp2raw服务,同时本地使用Tunsafe连接Wireguard时会自动运行大陆IP分流脚本和udp2raw程序。
本项目脚本根据Atrandys一键脚本修改,请支持原作者,项目地址:https://github.com/yobabyshark/wireguard
使用方法
bash <(curl -L -s https://raw.githubusercontent.com/lmc999/Wireguard-anti-QOS/master/wg-anti-qos.sh)
用Winscp等软件登入VPS,下载目录/etc/wireguard/中的client.conf到Tunsafe配置文件目录
下载Tunsafe用批处理文件文件: https://github.com/lmc999/Wireguard-anti-QOS/archive/master.zip
解压缩文件,并将文件夹内的所有文件解压到 D:\software\TunSafe\bat
本教程Tunsafe默认安装路径 D:\software\TunSafe,如果你的安装路径不一样请注意修改clien.conf中的批处理程序的路径.同时建议安装路径不要有空格。
用记事本打开start.bat,修改44.55.66.77为你Wireguard服务器ip
开启Tunsafe的Pre/Post命令功能。在"Option"选择"Allow Pre/Post Commands"
TunSafe选中client.conf, connect即可自动分流和串联udp2raw
from https://github.com/lmc999/Wireguard-anti-QOS
-----
WireguardForGame
介绍
Wireguard走UDP协议,部分运营商会对UDP进行限速QOS处理使连接速度不理想或出现丢包情况。若串联udp2raw可将UDP流量伪装成TCP流量避免被运营商QOS。另外同时再串联udpspeeder多倍发包可降低游戏丢包率。本项目脚本会在服务器搭建Wireguard、udp2raw、udpspeeder服务,同时本地使用Tunsafe连接Wireguard时会自动运行大陆IP分流脚本,udp2raw和udpspeeder程序。
本项目脚本根据Atrandys一键脚本修改,请支持原作者,项目地址:https://github.com/atrandys/wireguard
事前准备
电脑需安装好winpcap或npcap,下载地址请自行百度。
目前脚本支持centos7+, debian8+, ubuntu16+
使用方法
bash <(curl -L -s https://raw.githubusercontent.com/lmc999/WireguardForGame/master/wg-for-game.sh)
用Winscp等软件登入VPS,下载目录/etc/wireguard/中的client.conf到Tunsafe配置文件目录
下载Tunsafe用批处理文件文件master.zip
解压缩文件,并将文件夹内的所有文件解压到 D:\software\TunSafe\bat
本教程Tunsafe默认安装路径 D:\software\TunSafe,如果你的安装路径不一样请注意修改clien.conf中的批处理程序的路径.同时建议安装路径不要有空格。
用记事本打开start.bat,修改44.55.66.77为你Wireguard服务器ip
开启Tunsafe的Pre/Post命令功能。在"Option"选择"Allow Pre/Post Commands"
TunSafe选中client.conf, connect即可自动分流和串联udp2raw + udpspeeder
Wireguard配合游戏规则使用
本项目搭建成功后默认是大陆白名单模式,可以直接进行游戏。
但同时Wireguard的Windows客户端Tunsafe支持添加路由规则,指定具体路由走wireguard代理,原理与SSTAP的游戏规则相同。使用方法是往Tunsafe配置文件中的AllowIPs参数添加游戏路由表。这里以PUBG亚服规则为例子,请参考sample.conf
目前已有成熟的游戏规则项目,项目原本为SSTAP服务,但其实只需将该项目中的对应游戏规则添加到Wireguard中照样可正常使用。
项目传送门:https://github.com/FQrabbit/SSTap-Rule
from https://github.com/lmc999/WireguardForGame
---------------
RouterOS下,基于macvlan pppoe拨号的wireguard mtu问题
最近发现 git clone
github 上面稍微大一点的库的时候就会在下载到几百兆的时候报错断开。我一直以为是从 udp2raw 切换到 hysteria 才导致的线路不稳定。但是报错断开的同时观察 ping 数据,一直处于非常稳定的状态。最近这一次碰到的时候突然联想到了 mtu 。觉得可能和它有关系。就尝试调整了一下。
git clone
大致的报错如下:
remote: Enumerating objects: 222542, done.
remote: Counting objects: 100% (11400/11400), done.
remote: Compressing objects: 100% (466/466), done.
error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)
error: 6407 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
网络结构:
之前用的是 udp2raw + udpspeeder,来包裹 wireguard 协议。udpspeeder 好像会重新对包进行组装。所以没有遇到网络问题。
但由于 routeros 中的 container 没有 iptables 的权限。没有办法运行 udp2raw,所以换成了 hysteria 对 wireguard 协议进行包裹。运行了一段时间之后感觉稳定性也还不错。延迟似乎还更低了一些。从 github 拉一些不太大的库也没有碰到问题。
这次怀疑 mtu 问题也只是猜测而已。尝试过设置两边的 wg0 接口 mtu 值为 1480, 1460, 1420, 1280 都没有解决问题。错误的设置甚至会导致 git clone
操作卡死不动,直到 timeout。
最后测试下来发现下面的设置是有效的:
- 设置 macvlan mtu 为 1480
- pppoe 拨号后会自动设置 mtu 为 1472 (1480-8)
- 保持 routeros wg0 mtu 为默认的 1420
- server 端 wg0 保持为 1500
其它
中间加入了一层 macvlan 是因为给 pppoe 做单线多拨。
很早之前也遇到过 mtu 导致的网络问题,但通常都是在访问 http 服务的时候出现的,而且大部分网站都会遇到访问问题。这次的情况好像只有 github 出现问题。并且只是在 git clone
的时候出现问题。通过浏览器访问、下载都是正常的。其实这次出现问题我也没有发现设置上明显的错误。最后虽然解决了,但也只是通过猜测解决的。暂时先记录一下。继续观察看看。
2024-03-29 更新:
最近又出现了 github 不能 clone 仓库的问题了。应该还是 mtu 导致的问题。最后找到了解决方案。通过下面的命令设置 server 的 pmtu
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
并且设置:
- 还原 routeros 中 macvlan mtu 为 1500
- 设置 server 端 wg0 接口 mtu 为默认的 1420
No comments:
Post a Comment