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:35055Client_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:350552,由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:35055Gateway 本机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]]
最后更新于