如何配置wireguard服务端及客户端
source link: https://y2k38.github.io/posts/how-to-setup-wireguard-vpn-server/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
如何配置wireguard服务端及客户端
发表于
2020-04-05 更新于 2020-04-06从19年开始,ss流量已经能被gfw识别并屏蔽,原本打算切换到v2ray,但配置混淆需要域名反而会暴露出更多信息,此外,网上一篇文章指出v2ray开发者失联的同时一项v2ray流量识别的专利被注册,因此决定放弃v2ray并转向另一个被linus盛赞的wireguard。
wireguard是非常简单、现代化、快速的vpn,使用最新的加密技术,udp传输,支持ip漫游等。wireguard没有服务端、客户端的区分,每一台设备都是一个peer
。
添加wireguard的PPA源
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt update
sudo apt install wireguard
wireguard作为linux内核模块方式加载,内核更新wireguard也会自动重新编译,重启系统或使用modprobe
开启模块
sudo modprobe wireguard
检查wireguard模块是否成功加载,成功输出与下面类似
vagrant@bionic:~$ lsmod | grep wireguard
wireguard 221184 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 16384 1 wireguard
生成keys
wireguard提供了两个命令行工具wg
以及wg-quick
,使用wg
生成公钥和私钥
umask 077
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
类似ssh,需要为每台设备生成一对publickey/privatekey
我们需要生成一个虚拟网卡,名称可以按个人喜好选择,这里选择用wg0
,IP网段使用10.10.0.1/24
,确保该网段没有被你的家庭或公司网络使用,编辑文件/etc/wireguard/wg0.conf
[Interface]
PrivateKey = <your server private key here>
Address = 10.10.0.1/24
Address = fd86:ea04:1111::1/64
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
ListenPort = 51820
PrivateKey
填上一步生成的私钥,填入你选择的Address
,这里配置了两个IP4/6的地址,enp0s3
是你服务器主要的网络设备,使用ifconfig
或ip a
查看你的主设备名,ListenPort
默认为51820,建议修改
要注意的是SaveConfig
设置,wireguard配置后不需要restart
或reload
,使用wg
命令添加peer
即可立即生效。但是,这些操作都是直接写入到内存中而不是磁盘,因此如果你重启系统或服务,那么你就会失去添加的配置,所以这里设置为true
,自动保存配置。但这个配置有时候也会让人非常困扰,你可能添加配置后重启服务,然后你发现添加的配置不见了,需要先停止服务再添加配置最后重启。
添加网络配置,使得内核可以正确路由我们的NAT流量
sudo bash -c 'cat << EOF >> /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
EOF'
sudo sysctl -p
运行命令,开启wg0设备
sudo wg-quick up wg0
如果一切顺利,那么运行下面命令你将看到类似的输出
vagrant@bionic:~$ sudo wg
interface: wg0
public key: Td4IBZg2s2bMSjewD0h4oBhlbaJteygxjT83xeM7uTY=
private key: (hidden)
listening port: 51820
客户端配置
客户端配置与服务端类似
[Interface]
Address = 10.10.0.2/32
Address = fd86:ea04:1111::2/128
SaveConfig = true
PrivateKey = <your client private key here>
DNS = 8.8.8.8
[Peer]
PublicKey = <your server public key here>
Endpoint = <your server public ip>:51820
AllowedIPs = 0.0.0.0/0, ::/0
填写服务器的publickey、ip、端口,配置0.0.0.0/0, ::/0
将所有流量传输到服务端
在服务端添加客户端配置
sudo wg set wg0 peer <client-public-key> allowed-ips 10.10.0.2/32,fd86:ea04:1111::2/128
以上的操作针对的是linux系统,官方推出了可用的iOS/MacOS/Android/Windows图形界面软件,其中有一个选项要注意的是On-Demand
,有Ethernet
和Wi-Fi
选项,如果勾选,那么会在选中网络中会自动开启vpn
设置开机启动
如果你的系统使用systemd,如ubuntu,设置wireguard开机启动命令如下
systemctl enable wg-quick@wg0
开放防火墙
sudo ufw allow 51820/udp
WireGuard: fast, modern, secure VPN tunnel
How to setup your own VPN server using WireGuard on Ubuntu
Setting Up PiHole, Wireguard VPN server and Client (Ubuntu Server)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK