在 Ubuntu 部署 VPN 隧道 WireGuard

热门标签

, , , , , , , , , , , , , , , , , ,
admin

发表文章数:3228

首页 » 网络资源 » Linux » 正文

关于 WireGuard

WireGuard 是简单、快速、高效并且安全的开源 VPN 软件,它采用先进的加密协议,基于 Linux 内核实现。

WireGuard 项目官方网站 https://www.wireguard.com/

WireGuard 源代码由开发者自我托管,代码仓库 https://git.zx2c4.com/WireGuard/

WireGuard 源代码在 GitHub 的镜像仓库 https://github.com/WireGuard

在服务器端部署 WireGuard

WireGuard 跨平台,参照官方给出的快速安装指南 https://www.wireguard.com/install/


服务器环境以 Ubuntu 系统为例

生成公钥、私钥、共享密钥

sudo mkdir -p /etc/wireguard && sudo chmod 0777 /etc/wireguard && cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey | wg genpsk > presharedkey

打印输出私钥

cat privatekey
+Cr59JzbCKz9rESqimHGi5C2QfIRYZ5xVMssiTAEqV4=

打印输出公钥

cat publickey
bco6xIgfp++iFBj6vmDr27tAXfgYsppn/wyUJRcFgUc=

打印输出共享密钥(可以不生成,配置文件中不是必须的)

cat presharedkey
Vv0MdBNolqbnsBPQPf0ttJecOw2QC8QqWBVieNtvoIo=

编辑并保存 wg0 配置文件 wg0.conf

sudo vi wg0.conf

wg0.conf 配置文件内容如下:

ListenPort = 监听端口 1194

PrivateKey = 服务器私钥

PrivateKey = 连接节点公钥(由客户端生成)

AllowedIPs = VPN 隧道的内网 IP 段

[Interface]
ListenPort = 1194
PrivateKey = +Cr59JzbCKz9rESqimHGi5C2QfIRYZ5xVMssiTAEqV4=

[Peer]
PublicKey = 1lq23n/oNwYosnf0xMadtrIcC+droND9fg/wiS0aEhw=
AllowedIPs = 10.100.0.1/24

设置服务器的 NAT 流量转发

sudo vi /etc/sysctl.conf

找到这一行 #net.ipv4.ip_forward = 1 去掉注释符 “#”

net.ipv4.ip_forward = 1

执行 sysctl 并生效

sudo sysctl -p

在服务器端添加虚拟网卡 wg0,设置隧道 IP 和 iptables 规则

sudo ip link add dev wg0 type wireguard
sudo ip address add dev wg0 10.100.0.1/24
sudo ip link set wg0 up
sudo wg setconf wg0 /etc/wireguard/wg0.conf
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o ens4 -j MASQUERADE

检查 wg 设置是否正常

sudo wg show

正常情况应该输出以下内容:

interface: wg0
  public key: 1lq23n/oNwYosnf0xMadtrIcC+droND9fg/wiS0aEhw=
  private key: (hidden)
  listening port: 1194

peer: 8+9jGlxuwyGUWtUk8/NZMAl1Ax577KAvnXJY0EeuNkQ=
  endpoint: 12.34.56.78:61353
  allowed ips: 10.100.0.0/24
  latest handshake: 0 days, 8 minutes, 19 seconds ago
  transfer: 0.60 GiB received, 0.93 GiB sent

服务器端设置完成。


设置客户端

客户端系统 Ubuntu/Debian/ArchLinux 参照官方给出的快速安装指南 https://www.wireguard.com/install/

sudo mkdir -p /etc/wireguard && sudo chmod 077 /etc/wireguard && cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey

打印输出私钥

cat privatekey
SHBjWA3uAYAZc+TUvr6PcTA5SVQnt+aSVkdlZhlg1Hk=

打印输出公钥

cat publickey
8+9jGlxuwyGUWtUk8/NZMAl1Ax577KAvnXJY0EeuNkQ=

编辑并保存 wg0 配置文件 wg0.conf

sudo vi wg0.conf

wg0.conf 配置文件内容如下:

ListenPort = 监听端口 1194

PrivateKey = 本地客户端私钥

PrivateKey = 服务器端公钥(由服务器端生成)

AllowedIPs = VPN 隧道的内网 IP 段

Endpoint = 远程服务器公网 IP 和端口

PersistentKeepalive = 连接心跳包的唤醒间隔

[Interface]
ListenPort = 1194
PrivateKey = SHBjWA3uAYAZc+TUvr6PcTA5SVQnt+aSVkdlZhlg1Hk=

[Peer]
PublicKey = bco6xIgfp++iFBj6vmDr27tAXfgYsppn/wyUJRcFgUc=
AllowedIPs = 0.0.0.0/0
Endpoint = 12.34.56.78:1194
PersistentKeepalive = 25

在本地客户端

在客户端,添加虚拟网卡 wg0 并设置 IP 和路由

sudo ip link add dev wg0 type wireguard
sudo ip address add dev wg0 10.100.0.101/24
sudo ip link set wg0 up
sudo wg setconf wg0 /etc/wireguard/wg0.conf
sudo ip route add 12.34.56.78 via 192.168.1.1
sudo ip route del default
sudo ip route add default dev wg0

客户端设置完成,Ping 测试 VPN 隧道

ping 10.100.0.1

ping 输出如下

PING 10.100.0.1 (10.100.0.1) 56(84) bytes of data.
64 bytes from 10.100.0.1: icmp_seq=1 ttl=44 time=103.50 ms
64 bytes from 10.100.0.1: icmp_seq=2 ttl=44 time=103.50 ms
64 bytes from 10.100.0.1: icmp_seq=3 ttl=44 time=103.50 ms
64 bytes from 10.100.0.1: icmp_seq=4 ttl=44 time=103.50 ms
64 bytes from 10.100.0.1: icmp_seq=5 ttl=44 time=103.50 ms
64 bytes from 10.100.0.1: icmp_seq=6 ttl=44 time=103.50 ms
64 bytes from 10.100.0.1: icmp_seq=7 ttl=44 time=103.50 ms
64 bytes from 10.100.0.1: icmp_seq=8 ttl=44 time=103.50 ms
^C
--- 10.100.0.1 ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 828ms
rtt min/avg/max/mdev = 103.50/103.50/103.50/0.00 ms

说明 VPN 隧道已通

用 curl 命令测试隧道的流量转发状态

curl ifconfig.me

显示 IP 为服务器的公网 IP

12.34.56.78

curl 获取到了服务器的公网 IP,流量转发成功


Disable WireGuard,禁用 WireGuard

删除添加的虚拟网卡、IP 和路由,或者重启系统,将恢复默认设置

服务器端

sudo ip link del dev wg0

本地客户端

sudo ip link del dev wg0
sudo ip route del 12.34.56.78 via 192.168.1.1
sudo ip route del default
sudo ip route add default via 192.168.1.1

未经允许不得转载:作者:admin, 转载或复制请以 超链接形式 并注明出处 夜河资源网
原文地址:《在 Ubuntu 部署 VPN 隧道 WireGuard》 发布于2019-12-25

分享到:
赞(0) 打赏

评论 抢沙发

7 + 9 =


撰写不易~如果您觉得文章对您有帮助的话可以打赏我哦~谢谢亲亲~

支付宝扫一扫打赏

微信扫一扫打赏

外服网游加速器破解版
包含腾讯网游加速器、海豚网游加速器等八款知名加速器,可加速外服游戏,永久包售后包更新,不定时添加新款破解版加速器!
切换注册

登录

忘记密码 ?

切换登录

注册