服务器:Ubuntu 2020 x64
客户端:manjaro 21.0
请确保linux 内核版本5.6以上,否则按此升级
一、服务器端安装配置
1、添加WireGuard仓库到apt包管理器中
sudo apt-add-repository universe
更新下系统
sudo apt update
2、安装wireguard-tools
sudo apt install wireguard-tools
安装成功后可以查看wireguard的版本
wg version
3、生成服务端私钥和密钥
cd /etc/wireguard
umask 077
wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey
4、配置wireguard服务端配置文件 /etc/wireguard/wg0.conf
[Interface]
# 虚拟网卡的IP地址 (可以自己设定)
Address = 10.0.0.1/24,
# 设为true表示配置文件在有新的peer接入时自动更新
SaveConfig = true
# 在虚拟网卡启动后的动作。这里将接受所有的客户端共享服务端的IP地址,并写入路由表中
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
# 在虚拟网卡断开后的动作。这里将客户端共享服务端IP地址的规则从路由表中删除
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
# 服务端的通讯端口,后面客户端配置的时候需要用到
ListenPort = 51820
# 上面产生的私钥
PrivateKey = <服务器私钥>
将eth0换成你服务器上相应的名称
5、配置防火墙
sudo ufw allow 22/tcp
sudo ufw allow 51820/udp
sudo ufw enable
sudo ufw status
6、设置允许IP转发
vi /etc/sysctl.conf
# 找到下面这一行,去掉注释来允许IP转发
net.ipv4.conf.default.rp_filter=1
退出编辑后,通过下面命令使其生效
sysctl -p
echo 1 > /proc/sys/net/ipv4/ip_forward
这个如果不做的话,你会发现即便wireguard建立的虚拟网可以ping通,但是客户端无法通过服务端上网
7、启动服务端wireguard
sudo wg-quick up wg0
检查下是否正常
sudo wg show
会出现以下类似消息
interface: wg0
public key: vD2blmqeKsV0OU0GCsGk7NmVth/+FLhLD1xdMX5Yu0I=
private key: (hidden)
listening port: 51820
运行命令ifconfig wg0,会出现如下类似信息
ifconfig wg0
wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1420
inet 10.0.0.1 netmask 255.255.255.0 destination 10.0.0.1
inet6 fd86:ea04:1115::1 prefixlen 64 scopeid 0x0<global>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
二、客户端安装配置
1、安装wireguard
sudo pacman -S wireguard-tools
2、生成密钥
cd /etc/wireguard
umask 077
wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey
3、编辑客户端配置文件 /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <客户端私钥>
# 这里的客户端IP需要跟服务器端的IP同一网段,服务器端的网卡地址是10.0.0.1
Address = 10.0.0.10/32
DNS = 8.8.8.8,1.1.1.1
[Peer]
PublicKey = <服务端公钥>
Endpoint = <服务端公网IP>:51820
# 0.0.0.0/0为允许所有IP地址通讯,如果是多个客户端的话,可以省去一个个配置之繁琐
AllowedIPs = 0.0.0.0/0
# 每21秒检查一下连接。如果IP有变化,也是通过这个进行自动更新
PersistentKeepalive = 25
4、将客户端对等方添加到服务器中
最后一步是将客户端的公钥和IP地址添加到服务器,有2种方法。
(1)服务器端编辑配置文件/etc/wireguard/wg0.conf,加入客户端公钥及IP
[Peer]
PublicKey = <Client Public Key>
AllowedIPs = 10.0.0.10/32
(2)直接在服务器上运行以下命令
sudo wg set wg0 peer <Client Public Key> allowed-ips 10.0.0.10/32
5、启动客户端wireguard
sudo wg-quick up wg0
使用以下方法检查连接
sudo wg show
这时应该可以ping通服务端的虚拟IP,及其它网站了。如果不行尝试重启一下wireguard。还不行的话,检查一下防火墙和IP转发的配置。
关闭Interface
设置自动启动
systemctl enable wg-quick@wg0
WARP 是 Cloudflare 提供的一项基于 WireGuard 的网络流量安全及加速服务,能够让你通过连接到 Cloudflare 的边缘节点实现隐私保护及链路优化。若想给你的VPS服务器配置Cloudflare WARP服务,额外添加 IPv4 或 IPv6 网络获得“原生”IP,参考这里。
评论
发表评论