配置
1.WireGuard 的主端配置
首先我们创建一个 WireGuard 配置文件
1 | vim /etc/wireguard/wg0.conf |
1 | [Interface] |
然后我们需要创建一个网卡配置文件(此配置等价于移动客户端的 Interface 配置)
1 | vim /etc/sysconfig/network-scripts/ifcfg-wg0 |
1 | DEVICE=wg0 |
接着我们需要创建一个网卡路由文件(由于对方存在 172.16.12.0/24 这个 IP 地址段的前提下)
1 | vim /etc/sysconfig/network-scripts/route-wg0 |
1 | 172.16.12.0/24 via 172.16.1.12 dev wg0 |
最后我们需要允许本机的 NAT 转换,并允许系统进行 IPV4 转发
1 | firewall-cmd --add-masquerade --zone=public --permanent |
2.WireGuard 的对端配置
在对端设备,我们依然需要创建一个 WireGuard 配置文件
1 | vim /etc/wireguard/wg0.conf |
1 | [Interface] |
然后我们需要创建一个网卡配置文件
1 | vim /etc/sysconfig/network-scripts/ifcfg-wg0 |
1 | DEVICE=wg0 |
接着我们需要创建一个网卡路由文件(假设对方存在 172.16.11.0/24 这个 IP 地址段的前提下)
1 | vim /etc/sysconfig/network-scripts/route-wg0 |
1 | 172.16.11.0/24 via 172.16.1.11 dev wg0 |
最后我们需要允许本机的 NAT 转换,并允许系统进行 IPV4 转发
1 | firewall-cmd --add-masquerade --zone=public --permanent |
3.WireGuard 的自动启动
第一种方案你需要编辑并添加开机启动项(手动模式推荐)
1 | vim /etc/rc.local |
1 | ip link add dev wg0 type wireguard |
注意 CentOS7 默认此文件没有执行权限,你需要赋予执行权限
1 | chmod +x /etc/rc.local |
做完操作后你可以使用开机启动项的三条命令直接启用 WireGuard 进程
第二种方案则是需要在 Interface 里写入以下信息(注意替换 eth0 为你的互联网出口网卡,并且如果使用 wg-quick 则不需要本例 PostUp 和 PostDown 两个 iptables 命令)
1 | Address = 172.16.11.0/24 |
注意这样启动后网卡本身是没有防火墙区域的,你需要手动绑定一个区域
1 | firewall-cmd --zone=work --add-interface=wg0 --permanent |
然后设置 systemd 自动启动即可
1 | systemctl enable NetworkManager-wait-online.service |
WireGuard 配置说明
1 | [Interface] |
在上方基础上,额外要注意的是
1、如果你存在多个 [Peer] ,则在下面直接增加一个新的 [Peer] 栏目
2、如果多个 Peer 存在不同的 IP,请不要让 AllowedIPs 存在重叠的 IP 地址段(比如配置多个相同/24 只有一个生效)
3、Endpoint 既支持以域名的方式访问,也支持以 IP 的方式访问。
4、会话链接的建立只要保证两端数据在一台设备上成功协商,即使有一端 IP 地址后期变更过也不会影响 VPN 的稳定性。
5、使用命令 wg 可以看到当前服务的运行情况。
6、如果你是本来打算连服务器的移动端,则在配置中你需要将移动端的 “AllowedIPs =” 补写一条内容 0.0.0.0/0,::0 以允许所有流量
7、前面标注 # 的三条内容,作为 iproute2 的使用方式,通过指定路由条目的 table 与 ip rule 联动控制策略流量转发。
8、PreUp,PostUp,PreDown,PostDown 这四个命令参数,是作为 wg-quick 快速设置/删除接口之前/之后由 bash(1)执行的四条命令,常用于配置自定义 DNS 或防火墙规则。 特殊字符串 %i 作为变量替代所控制的 INTERFACE 配置名。 每个命令参数都支持多条命令,参数内的多条命令将按前后顺序依次执行。
WireGuard 的快速启动配置文件
1 | vim /etc/wireguard/myserver.conf |
1 | [Interface] |
此配置完毕后 配置文件名为 myserver ,可以直接输入 wg-quick up myserver 启动进程
(如果启动失败可以先 down 一次再 up 一次)
(如果你是 iptables 则使用两条 iptables 命令,去掉前面的#并记得修改 eth0 为当前系统公网网卡即可)
然后将新设备绑定到指定区域中,并配置好地址转换
1 | firewall-cmd --zone=external --add-interface=myserver --permanent |
最后一样配置开机启动即可(注意命令加入的位置,在此将标准配置版的 WireGuard 进程予以注释,如果同时使用请删掉 # 字符。)
1 | systemctl enable NetworkManager-wait-online.service |