基本
server, 以ubuntu为例
$ wget https://raw.githubusercontent.com/hongwenjun/vps_setup/master/ubuntu_wireguard_install.sh | bash
|
之后拷贝生成的 client.conf 内容
client, 以mac为例
brew install wireguard-tools
|
udp加速
server
# 一键安装 udp2raw/udpspeed & kcptun # 该脚本由 https://github.com/hongwenjun 提供, 建议自行查看该脚本内容, 了解原理 $ wget https://raw.githubusercontent.com/hongwenjun/WinKcp_Launcher/master/wg_udp2raw.sh | bash
|
安装完成后, 会输出如下内容:
请访问 https://git.io/winkcp 下载Windows客户端; https://git.io/sskcp.sh OpenWRT或KoolShar脚本
按以下实际信息填充 服务器IP: [服务器ip]
WG+SPEED+UDP2RAW 原端口: 20713 ; UDP2RAW伪装TCP后端口: 2999 ; 转发密码: 324f83
SS+KCP+UDP2RAW加速: UDP2RAW伪装TCP后端口: 1999 ; SS密码: 324f83 加密协议 aes-256-gcm
手机SS+KCP加速方案: KCPTUN端口: 4000 ; KCP插件设置参数 mode=fast2;key=324f83;mtu=1300
client
下载 udp2raw 与 udpspeed
https://github.com/wangyu-/udp2raw-tunnel/releases
https://github.com/wangyu-/UDPspeeder/releases
其中, 可能需要安装额外的依赖, 参见:安装pcap和libnet
放置到/etc/wireguard目录
sudo /etc/wireguard/udp2raw_mp -c -l127.0.0.1:20712 -r155.138.138.10:2999 -k 324f83 --raw-mode easy-faketcp
sudo /etc/wireguard/speederv2 -c -l127.0.0.1:20713 -r127.0.0.1:20712 -k 324f83 -f20:10 --mode 0
sudo wg-quick up wg1
|
todo: 可参考 https://github.com/atrandys/luci-udptools/blob/master/src/etc/init.d/udptools , 配置上面这两个命令的一键启动(未完成)
注意: 在wireguard中, endpoint的流量会走老的网关出去. 但是此时我们需要将endpoint指向127.0.0.1:20713(speederv2服务), 此时127.0.0.1的流量就会错误地走老的网关出去(而不是本机转发).
因此, 建议在 PostUp 里, 将 127.0.0.1 重新指向 -blackhole (或简单地直接移除 route delete 127.0.0.1
)
wg1.conf
[Interface] PrivateKey = PRIVATE_KEY Address = 10.0.0.2/24 DNS = 8.8.8.8 MTU = 1200 PostUp = export PRIORITY=1024; source /etc/wireguard/udp-up PreDown = export PRIORITY=1024; source /etc/wireguard/udp-down
[Peer] PublicKey = PUBLIC_KEY Endpoint = 127.0.0.1:20713 AllowedIPs = 0.0.0.0/0, ::0/0 PersistentKeepalive = 25
|
udp-up
#!/bin/sh export PATH="/bin:/sbin:/usr/sbin:/usr/bin"
OLDGW=`netstat -nr | grep '^default' | grep -v 'ppp' | sed 's/default *\([0-9\.]*\) .*/\1/' | awk '{if($1){print $1}}'`
if [ ! -e /tmp/pptp_oldgw ]; then echo "${OLDGW}" > /tmp/pptp_oldgw fi echo "${OLDGW}"
dscacheutil -flushcache
route add 10.0.0.0/8 "${OLDGW}" route delete 127.0.0.1 route add <YOU_SERVER_IP> "${OLDGW}"
|
udp-down
#!/bin/sh #!/bin/sh export PATH="/bin:/sbin:/usr/sbin:/usr/bin"
if [ ! -e /tmp/pptp_oldgw ]; then exit 0 fi
OLDGW=`cat /tmp/pptp_oldgw`
route delete 10.0.0.0/8 "${OLDGW}" route delete 155.138.138.10 "${OLDGW}"
|
客户端分流
分流主要依靠 chnroutes 项目实现, 参考wireguard-configuration: issue mac如何分流
cd /etc/wireguard git clone https://github.com/fivesheep/chnroutes.git cd chnroutes ./chnroutes -p mac
|
PostUp = export PRIORITY=1024; source /etc/wireguard/ip-up PreDown = export PRIORITY=1024; source /etc/wireguard/ip-down
|
存在问题
8.8.8.8 覆盖了公司内网dns, 导致内部网站无法访问
是否添加了公司内部的网关
考虑udp2raw之后tcp阻断的替代方案
参考资料
- WireGuard wg-quick PostUp的高级玩法
- 树莓派上安装WireGuard
- 下一代VPN协议 - WireGuard
- 基于chnroutes实现的Mac下的VPN国内外网络分流技术
- WireGuard 配置和上网流量优化