介绍

WireGuard中继节点就是通过带公网IP的服务器对在net后面的客户端进行流量转发。 本文介绍的是在centos7下进行的部署和配置。

一键脚本部署

一键脚本比较方便快捷,根据提示安装即可,推荐使用。

  • 01
  • 02
  • 03
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh chmod +x wireguard-install.sh ./wireguard-install.sh
https://github.com/angristan/wireguard-install

安装部署

1.下载WireGuard

官网推荐了三种方式,我这里采用了第二种。

shell
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
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流量转发

shell
  • 01
  • 02
  • 03
  • 04
  • 05
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

配置内容参考:

shell
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
[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之间无法联通):

shell
  • 01
  • 02
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.其他指令

shell
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
# 增加peer节点 注意重启会失效 建议修改配置文件!!! wg set wg0 peer 节点公钥 allowed-ips 192.168.198.5/32 # 查看状态 wg wg show # 抓包指令 用于排查问题 tcpdump -i wg0 -nn icmp # 删除peer节点 注意重启会失效 建议修改配置文件!!! wg set wg0 peer xxxxxxxx remove

参考

Wireguard笔记(一) 节点安装配置和参数说明WireGuard VPN