WireGuard

#代理 #网络

软件介绍

WireGuard是一个易于配置、快速且安全的开源VPN,它利用了最新加密技术。目的是提供一种更快、更简单、更安全的通用VPN。并且从2020年1月开始,它已并入了Linux内核5.6版本。

安装及使用示例

CentOS 7

安装软件

内核版本要大于3.10

# 先更新一下内核
[root@TEST-06 ~]# uname -a
Linux TEST-06 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


yum install yum-utils epel-release -y
yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
yum install kernel-plus wireguard-tools -y
reboot

如果内核版本大于上面这个版本,则用下面的方式安装即可

yum install epel-release elrepo-release -y
yum install yum-plugin-elrepo -y
yum install kmod-wireguard wireguard-tools -y

配置并启动服务

# 生成私钥
wg genkey > private

# 生成公钥
wg pubkey < privte

基本初始配置

# 创建一个新的wg0网上,并配置IP
ip link add dev wg0 type wireguard
ip addr add 10.0.0.1/24 dev wg0	# 不同服务器IP地址不能相同
wg set wg0 private-key ./private
ip link set wg0 up

# 查看网卡信息是否添加成功
ip addr

# 查看服务信息
wg

临时启动

# 互相连接
# wg set wg0 peer 目标公钥 allowed-ips 允许连接的IP或网段 endpoint 目标服务器网卡真实地址及端口
wg set wg0 peer PEzN8I9vtj6Wg5I7FV4A7qH2yldMKYsoFcnA/IvWQWI= allowed-ips 10.0.0.2/32 endpoint 192.168.1.2:51820

# 临时关闭
ip link set wg0 down

使用 wg-quick来管理

# 将配置写入配置文件中,以方便管理,文件名中的wg0为接口名称
vi > /etc/wireguard/wg0.conf

[Interface]
ListenPort = 35055	# 本机监听端口
PrivateKey = 6BncZcIw0QPfA2rfdacg5rOclSDhSOo6vuaj2REw0Fo=	# 私钥
Address = 10.0.0.1/24	# 本机wg0的IP和网段
# 以下配置可配可不配
DNS = 1.1.1.1,8.8.8.8	# 指定DNS
Table = off|auto		# 子网路由表
MTU = 1500				# mtu值
PreUP = /sh/file.sh		# 启动前运行的命令或脚本,可以指定多个,依次执行
PostUP = sh /file.sh	# 启动后运行的命令或脚本,同上
PreDown = sh /file_2.sh # 停止前运行的命令或脚本,同上
PostDon = sh /file3.sh  # 停止后运行的命令或脚本,同上

# 节点配置
[Peer]
PublicKey = PEzN8I9vtj6Wg5I7FV4A7qH2yldMKYsoFcnA/IvWQWI=

## ===以下配置三选一===
# 做客户端
AllowedIPs = 10.0.0.2/32	# 节点的IP
# 做一定范围的中继
AllowedIPs = 192.168.0.0/24	# 可访问的网段,可转发流量到该网段下的节点
# 允许所有,则是代理服务器,可中继所有
AllowdIPs = 0.0.0.0/0,::/0  # 中继所有。注意,使用此配置会改变网络默认路由信息,可能会导致网络无法连接,请谨慎使用
## ===

# 目标IP/域名和端口
Endpoint = 172.23.210.27:55649	

# 如果是从位于NAT后面访问某个节点,则需要定时发一个ping包来检查连通性,单位秒
PersistentKeepalive = 25 

服务控制

wg-quick [up|down] wg0

部分配置参考自

Ubuntu 16+

安装

sudo apt install wireguard

配置

跟CentOS系统一样配置

连接

Windows 图形化连接配置


配置示例

1,直连 配置思路:Client_A/B直接在Peer配置块中填写对方的公钥、wg0网卡IP和真实网卡IP端口信息即可 Client_A 本机IP 2.168 wg0网卡IP 10.0.0.3

[Interface]
PrivateKey = CHclD6bQ9KmdRFUI0nWEtlSxeaIaRtqRyiTtROUNinQ=
ListenPort = 35055
Address = 10.0.0.3/24

[Peer]
PublicKey = 1LSs7SGdrEJze5Qq1IHvRFQv1dUoR/yuLEJgaTvyxXk=
AllowedIPs = 10.0.0.1/32, 10.0.0.2/32
Endpoint = 172.23.210.27:35055

Client_B 本机IP 210.27 wg0网卡IP 10.0.0.2

[Interface]
ListenPort = 35055
PrivateKey = ID+oLywTm7Xs3HI9936pjByEvm0E4QO3BkTJGDbfgUc=
Address = 10.0.0.2/24

[Peer]
PublicKey = 1LSs7SGdrEJze5Qq1IHvRFQv1dUoR/yuLEJgaTvyxXk=
AllowedIPs = 10.0.0.3/32
Endpoint = 172.23.2168:35055

2,由Gateway服务器中转 配置思路:Gateway服务器分别配置Client_A/B的Peer连接配置,Client_A/B的AllowedIPs除了要配置Gateway的wg0网卡IP,还要添加Client_A/B的wg0网卡IP。如果Client在NAT后面,建议加上PersistentKeepalive = 15配置进行保持连接

Client_A 本机IP 2.168 wg0网卡IP 10.0.0.3

[Interface]
PrivateKey = CHclD6bQ9KmdRFUI0nWEtlSxeaIaRtqRyiTtROUNinQ=
ListenPort = 35055
Address = 10.0.0.3/24

[Peer]
PublicKey = 1LSs7SGdrEJze5Qq1IHvRFQv1dUoR/yuLEJgaTvyxXk=
AllowedIPs = 10.0.0.1/32, 10.0.0.2/32
Endpoint = 172.23.210.28:35055

Gateway 本机IP 210.28 wg0网卡IP 10.0.0.1

[Interface]
ListenPort = 35055
PrivateKey = 6BncZcIw0QPfA2rfdacg5rOclSDhSOo6vuaj2REw0Fo=
Address = 10.0.0.1/24

[Peer]
PublicKey = PEzN8I9vtj6Wg5I7FV4A7qH2yldMKYsoFcnA/IvWQWI=
AllowedIPs = 10.0.0.2/32
Endpoint = 172.23.210.27:35055
[Peer]
PublicKey = QP05dL6UJXEljqgSIMSxEP4gOJ11wqvcZK+DBP2BSFQ=
AllowedIPs = 10.0.0.3/32
Endpoint = 172.23.2.128:35055

Client_B 本机IP 210.27 wg0网卡IP 10.0.0.2

[Interface]
ListenPort = 35055
PrivateKey = ID+oLywTm7Xs3HI9936pjByEvm0E4QO3BkTJGDbfgUc=
Address = 10.0.0.2/24

[Peer]
PublicKey = 1LSs7SGdrEJze5Qq1IHvRFQv1dUoR/yuLEJgaTvyxXk=
AllowedIPs = 10.0.0.1/32,10.0.0.3/32
Endpoint = 172.23.210.28:35055

错误处理

1、执行ip link add wg0 type wireguard 。错误信息RTNETLINK answers: Operation not supported

问题原因:Linux内核版本过低, 解决方法:更新内核版本或更换内核版本更高的系统即可(3.10.0-1160.45.1.el7 有效,建议等于或大于这个版本)

其它

tailscale是一款基于WireGuard的“网络互联”软件平台。免费用户可以最多接入20个终端。可以用于个人在不同网络、不同设备之间访问某些内网服务(例如:RDP,SSH等服务)。 类似的控制工具还有[[Netmaker]]

最后更新于