2020年11月3日星期二

笔记:WireGuard 隧道组建大内网和UDP转TCP

 

一、安装 WireGuard

最近我在使用 Ubuntu 18.04 LTS (Bionic),所以这边也是给出两种安装教程。

1、直接从软件仓库安装

执行下面的命令,从软件仓库安装 WireGuard:

sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get update
sudo apt-get install wireguard

二、生成公钥密钥对

在 Server 和 Client 上进入 /etc/wireguard/ 目录,然后执行下面的命令生成自己机器的公私钥对:

wg genkey | tee privateKey | wg pubkey > publicKey

这样在每台主机上都会有两个文件:privateKey 和 publicKey。


三、网络规划介绍

WireGuard 是通过创建一个虚拟接口的方式来转发流量的,这里我们暂停一下,明确一下我们的网络规划。
Host
wg0 Address
Wireguard 
内部使用
eth0 Address
服务商给的公网 IP
Server
10.0.0.1/24
1.1.1.1
Client
10.0.0.2/24
2.2.2.2

四、文件配置(基于上面的网络规划)

Server 上开放 51820 端口(或其他端口,可在Server配置文件中修改,但切记是 UDP)用于 Client 连接,在每台机器上 /etc/wireguard/ 目录下创建一个名为 wg0.conf 的文件,内容分别如下:

在 Server 上的 wg0.conf:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = < 这里填写 Server 上 privatekey 的内容 >

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

SaveConfig = true

 


# Client
[Peer]
PublicKey = < 这里填写 Client 上 publickey 的内容 >
AllowedIPs = 10.0.0.1/24

在 Client 上的 wg0.conf:

[Interface]
PrivateKey = < 这里填写 Client 上 privatekey 的内容 >
Address = 10.0.0.2/24

# Server
[Peer]
PublicKey = < 这里填写 Server 上 publickey 的内容 >
Endpoint = 1.1.1.1:51820
AllowedIPs = 10.0.0.1/24

然后在双方主机上各自 wg-quick up wg0 即可。

五、配置检验

通过 wg 指令即可查看目前接口使用情况。下面给出一个参考输出:

interface: wg0
  public key: < Client 上的 publicKey >
  private key: (hidden)
  listening port: 12345

peer: < Server 上的 publickey >
  preshared key: (hidden)
  endpoint: 1.1.1.1:51820
  allowed ips: 10.88.88.0/24
  latest handshake: 1 minute, 43 seconds ago
  transfer: 120.32 MiB received, 608.10 MiB sent

       此时隧道已经建立,双方主机已经可以通过内网 IP (这里的例子中是 10.0.0.1 和 10.0.0.2 )进行加密地通讯了。特别是当TCP在特定情况下受阻的情况下,可以使用 WireGuard UDP 方式在 Internet 上工作,有效的提升网络效率和稳定性。对于UDP QoS过分的地方,也可以试着加一个 udp2raw,整体上看效果会有不错的提升。

六、UDP受干扰转TCP

源码下载地址:https://github.com/wangyu-/udp2raw-tunnel/releases

工具运行

假设你的UDP已被屏蔽,假设你的服务器IP为44.55.66.77,你有一个服务在监听udp端口7777。

# Run at server side:
./udp2raw_amd64 -s -l0.0.0.0:4096 -r 127.0.0.1:7777    -k "passwd" --raw-mode faketcp -a

# Run at client side
./udp2raw_amd64 -c -l0.0.0.0:3333  -r44.55.66.77:4096  -k "passwd" --raw-mode faketcp -a
       此时,已成功通过TCP端口4096在客户端和服务器端之间建立了一条经过加密的通信隧道。在客户端通过UDP端口3333连接,等同于在服务器端连接端口7777

转载自:
https://www.xiaox.link/2019/12/wireguard-vps.html
https://nova.moe/deploy-wireguard-on-ubuntu-bionic/
https://www.freebuf.com/sectool/187069.html

没有评论:

发表评论