本文最后更新于 613 天前,其中的信息可能已经有所发展或是发生改变。
介绍
WireGuard中继节点就是通过带公网IP的服务器对在net后面的客户端进行流量转发。
本文介绍的是在centos7下进行的部署和配置。
安装部署
1.下载WireGuard
官网推荐了三种方式,我这里采用了第二种。
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-tools
2.配置服务器转发
需要开启ipv4、ipv6的NET流量转发
sudo bash -c 'cat << EOF >> /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
EOF'
sudo sysctl -p
3.配置服务端文件
进入配置目录:
cd /etc/wireguard
生成服务端公私钥:
wg genkey | tee server_privatekey | wg pubkey > server_publickey
新建配置文件:
vim wg0.conf
配置内容参考:
[Interface]
# 服务器的虚拟VPN ip
Address = 192.168.198.1/24
SaveConfig = true
# 对数据进行转发 注意通过ifconfig查看对应的网卡替换eth0 一般默认都是eth0
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -A FORWARD -o wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -D FORWARD -o wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# 监听的UDP端口
ListenPort = 8888
# 上面生成的server_privatekey密钥文本 cat查看一下
PrivateKey = XXXXXXXXXXXXXXXXX
# 客户端1
[Peer]
# 客户端1公钥
PublicKey = XXXXXXXXXXXXXXXXXXXX
# 客户端的转发地址
AllowedIPs = 192.168.100.0/24,192.168.198.2/32,192.168.110.0/24
# 客户端2
[Peer]
# 客户端2公钥
PublicKey = XXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 192.168.198.3/32
4.开启masquerade
注意服务器和子网节点如果安装了firewalld, 还需要在firewalld中开启masquerade(不开启可能导致中继节点与peer之间能通,peer和peer之间无法联通):
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --reload
5.启动服务
wg-quick up wg0
或者
systemctl start wg-quick@wg0
6.设置开机启动
systemctl enbale wg-quick@wg0
7.其他指令
# 增加peer节点
wg set wg0 peer 节点公钥 allowed-ips 192.168.198.5/32
# 查看状态
wg
wg show
# 抓包指令 用于排查问题
tcpdump -i wg0 -nn icmp