WireGuard VPN 安装和使用
草稿: 本文因某种原因尚未公开。
WireGuard VPN 安装和使用。WireGuard 是点对点网络,通过非对称加密实现安全通信。
安装
服务端和客户端安装方式相同
CentOS8
- Method 1: a signed module is available as built-in to CentOS’s kernel-plus:
$ sudo yum install yum-utils epel-release
$ sudo yum-config-manager --setopt=centosplus.includepkgs="kernel-plus, kernel-plus-*" --setopt=centosplus.enabled=1 --save
$ sudo sed -e 's/^DEFAULTKERNEL=kernel-core$/DEFAULTKERNEL=kernel-plus-core/' -i /etc/sysconfig/kernel
$ sudo yum install kernel-plus wireguard-tools
$ sudo reboot- Method 2: the easiest way is via ELRepo’s pre-built module:
$ sudo yum install elrepo-release epel-release
$ sudo yum install kmod-wireguard wireguard-tools- Method 3: users running non-standard kernels may wish to use the DKMS package instead:
$ sudo yum install epel-release
$ sudo yum config-manager --set-enabled PowerTools
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-toolsRedhat8
- Method 1: the easiest way is via ELRepo’s pre-built module:
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
$ sudo yum install kmod-wireguard wireguard-tools- Method 2: users running non-standard kernels may wish to use the DKMS package instead:
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-toolsCentOS7
- Method 1: a signed module is available as built-in to CentOS’s kernel-plus:
$ sudo yum install yum-utils epel-release
$ sudo yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
$ sudo sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
$ sudo yum install kernel-plus wireguard-tools
$ sudo reboot- Method 2: users wishing to stick with the standard kernel may use ELRepo’s pre-built module:
$ sudo yum install epel-release elrepo-release
$ sudo yum install yum-plugin-elrepo
$ sudo yum install kmod-wireguard wireguard-tools- Method 3: users running non-standard kernels may wish to use the DKMS package instead:
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
$ sudo yum install wireguard-dkms wireguard-toolsUbuntu
sudo apt update
sudo apt install wireguard服务端配置
开启转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sudo sysctl -pkey 生成
umask 077
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
wg genpsk > /etc/wireguard/sharekey- privatekey : 服务端私钥
- publickey : 服务端公钥
- sharekey : 预共享密钥(PresharedKey),在握手基础上额外增加一层对称加密以增强安全性(提供抗量子攻击防护)
配置文件
- 创建
/etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADEAddress逗号分隔,wg0地址ListenPortudp 需要在防火墙方向SERVER_PRIVATE_KEY从服务端(本机)cat /etc/wireguard/privatekey获取- 注意修改 ens3 为自己的网卡地址,可以通过命令
ip -o -4 route show to default | awk '{print $5}'获取
- 修改文件权限
sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}- 创建 wg0 接口
$ wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.1/24 dev wg0
[#] ip link set mtu 8921 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE- 查看接口状态
$ wg show wg0
interface: wg0
public key: NlQbgRFUCrM85ePjwZpjZ56gU78j2G3jvfw+dKxVfk4=
private key: (hidden)
listening port: 51820
$ ip a show wg0
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8921 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.8.0.1/24 scope global wg0
valid_lft forever preferred_lft forever- 使用 systemctl 管理
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0客户端
和服务端很像
key 生成
umask 077
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey- privatekey : 客户端私钥
- publickey : 客户端公钥
配置文件
- 创建
/etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1,8.8.8.8
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0Address逗号分隔,wg0地址CLIENT_PRIVATE_KEY从客户端cat /etc/wireguard/privatekey获取SERVER_PUBLIC_KEY从服务端cat /etc/wireguard/publickey获取SERVER_IP_ADDRESS是服务端公网 ip 地址AllowedIPs本地那些流程走 VPN 隧道,0.0.0.0/0表示所有流量
- 修改文件权限
sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}服务端操作
- 将客户端 IP 添加到服务器中
wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.8.0.2CLIENT_PUBLIC_KEY从客户端cat /etc/wireguard/publickey获取
创建 wg0 接口
客户端
$ wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n删除端口
$ wg-quick down wg0
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f
[#] iptables-restore -nFAQ
Error: Unknown device type
$ sudo ip link add dev wg0 type wireguard
Error: Unknown device type解决方法:
$ modprobe wireguard
$ lsmod | grep wireguard
wireguard 212992 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 20480 1 wireguardresolvconf: command not found
wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a wg0 -m 0 -x
/usr/bin/wg-quick: line 32: resolvconf: command not found
[#] ip link delete dev wg0解决方法:
apt install resolvconf容器安装
参考
最近更新
最新评论