CentOS7 需要安装内核模块补丁
CentOS7 安装 Wireguard 前需要安装 wireGuard 模块,官方给出来了3种安装方式,任选一种即可:
系统:centos 7.x
内核要求:> 3.10 (uname -r)
### 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
安装完成后重启服务器。
利用 docker 安装 WireGuard-easy
version: '3.5'
services:
wireguard:
image: weejewel/wg-easy
restart: unless-stopped
ports:
- 51820:51820/udp
- 51821:51821/tcp
environment:
- WG_HOST=wg.host.com
- PASSWORD=password
# - WG_PORT=51820
# - WG_DEFAULT_ADDRESS=10.8.0.x
- WG_DEFAULT_DNS=114.114.114.114
# - WG_MTU=1420
- WG_ALLOWED_IPS=10.8.0.0/24
- WG_PERSISTENT_KEEPALIVE=30
# - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
# - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
# - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
# - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt
volumes:
- ./data:/etc/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
# 参考:https://raw.githubusercontent.com/WeeJeWel/wg-easy/master/docker-compose.yml
将以上内容保存为 docker-compose.yml 文件,并执行 docker-compose up -d
启动服务。在浏览器中输入服务器地址(内网端口 51821
)登录管理界面。
注意:
- 通常服务位于路由或防火墙后面,
WG_PORT
是外网访问端口(与 ports
可能不同,视路由映射而定),WG_HOST
是外网访问地址(可以是域名/IP,也可以是DDNS,但注意不会自动更新解析)。
WG_ALLOWED_IPS
如果设为 0.0.0.0
,那客户端的所有流量都会走 VPN,所以应该仅设置需要代理的 IP 域。
异地组网
ubuntu 安装wireguard
sudo apt-get install -y openresolv wireguard
从 wireguard-easy 中添加一个 client ,并下载配置,将内容添加到组网电脑的此文件中: /etc/wireguard/wg0.conf
启动网卡:sudo wg-quick up wg0
查看状态:sudo wg show wg0
或 ip a show wg0
自动启动:sudo systemctl enable wg-quick@wg0
激活和保活
- wg0 创建后不会主动连接,意味着服务器不知道有主机上线,需要向服务器发送数据请求才行。可行的方法是,编辑
/etc/wireguard/wg0.conf
,在 [Interface]
中添加以下行:PostUp = ping -c 1 10.8.0.1
。此参数不能自动生成,需要手动添加。
- 超过10分钟没有数据交互,连接会被断开,同样编辑
/etc/wireguard/wg0.conf
,在 [Perer]
中添加以下行: PersistentKeepalive = 30
。在部署 wirewuard 服务器时添加 WG_PERSISTENT_KEEPALIVE=30
参数,可以在下载的配置中直接附带此参数。