欢迎光临
我们一直在努力

服务器一键部署 WireGuard

        

        有时候,我们只是想安全地访问家里的设备,或者在外出时能放心地连上自己的服务器,不用担心公共网络上的“小眼睛”盯着。为了实现这种简单又安心的连接,我选择了 WireGuard —— 一款现代、轻量又高效的 VPN 工具。

        WireGuard是一款简单、快速且现代的VPN,采用先进加密技术,性能优于IPsec和OpenVPN。它跨平台支持(Linux、Windows、macOS、BSD、iOS、Android),设计轻量,适用于从嵌入式设备到超级计算机的多种场景,目前正积极开发,被视为最安全易用的VPN解决方案之一。

        接下来,我将分享如何在自己的服务器上一键部署 WireGuard,让搭建过程变得简单快捷,几步搞定,轻松拥有属于自己的加密通信隧道。

这里为了图方便我直接用的阿里的Alinux系统

步骤一:首先把系统源更新一下

sudo yum update -y
sudo yum install -y curl sudo

步骤二:下载安装脚本

curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh

这里会看到我的报错了(没有报错直接下一步)

因为我用的是Alinux,而 angristan 的脚本 只认这些系统 ID:debian, ubuntu, fedora, centos, almalinux, rocky, oracle, arch, raspbian, alpine但它不认识 alinux所以会报错退出。

对下载的 wireguard-install.sh 脚本稍作修改,添加对 alinux 的支持。

用 vi 、nano或者vim 编辑一下脚本:

vi wireguard-install.sh

在脚本找这个:

修改 OS="${ID}" 这一行,改成

OS="${ID}" && [[ "${OS}" == "alinux" ]] && OS=centos

然后保存退出,接着运行第三步。

步骤三:给脚本添加可执行权限

chmod +x wireguard-install.sh

步骤四:运行安装脚本

sudo ./wireguard-install.sh

运行完就会出来提示跟着他的提示走就行

IPv4 or IPv6 public address: 这里就写ip
Public interface: eth0  这里填网卡名一般都是eth0,不知道是啥的先退出(ctrl+c退出脚本程序)ip a看一下
WireGuard interface name (default: wg0):    回车就行
Server's private IPv4 address (/24): 10.66.66.1   回车就行
Server's private IPv6 address (optional):  回车就行

Allowed IPs for the client (e.g., 0.0.0.0/0, ::/0):填0.0.0.0/0让客户端“走代理上网(如果你想只访问服务器内网才走隧道,就填 10.66.66.0/24)

Client name: 给刚下的客户端起名字

几秒后会看到类似输出:

Your client config file is in /root/wg0-client-名字.conf
If you want to add more clients, you simply need to run this script another time!

WireGuard is running.
You can check the status of WireGuard with: systemctl status wg-quick@wg0
到这就完事了,安装完的配置文件一般目录是/root/wg0-client-名字.conf
看他就用cat /root/wg0-client-名字.conf,比如我刚刚起的名字是shy就是

cat /root/wg0-client-shy.conf

这就是配置文件,把这些复制下来保存到txt改一下conf后缀就能直接在电脑的WireGuard 导入配置连接了。

用手机连接的话二维码更方便,要先下载一个 qrencode

sudo yum install -y qrencode

运行下面命令就会生成一个二维码,手机扫码连接就好

qrencode -t ansiutf8 < /root/wg0-client-名字.conf

下面就是一些可能遇到的问题了

看状态命令:

sudo wg

interface: wg0
  public key: xxxxxxxxxx
  private key: hidden
  listening port: 51820

peer: yyyyyyyyyyy
  preshared key: (hidden)
  endpoint: 123.123.123.123:51234
  allowed ips: 10.66.66.2/32
  latest handshake: 1 minute ago
  transfer: 1.2 MB received, 1.5 MB sent
类似这种的,latest handshake 表示最近一次握手时间,说明客户端已连接。

添加一个新用户命令:

sudo ./wireguard-install.sh

如果wireguard有接收到流量,网速太慢的话就是端口被限速了,换个端口
停止当前服务
sudo systemctl stop wg-quick@wg0
编辑配置文件
sudo nano /etc/wireguard/wg0.conf
找到下面这个
ListenPort = 
改成443端口
ListenPort = 443   注意记得去云安全组放行新端口(443/UDP)
然后保存退出,重启服务:

sudo systemctl restart wg-quick@wg0

然后重新生成客户端配置:

sudo ./wireguard-install.sh

然后调整 MTU,WireGuard 默认 MTU 是 1420,但在某些网络环境下会导致分包、重传,降低速度
阿里云 + 国内用户    1360 或 1300
高延迟国际线路    1280
本地高速网络    1420
编辑 /root/wg0-client-shy.conf:
[Interface]
PrivateKey = xxxxxx
Address = 10.66.66.2/32
DNS = 1.1.1.1
MTU = 1360   👈 添加这一行

重新生成二维码(让手机扫码更新)
 

qrencode -t ansiutf8 < /root/wg0-client-新用户的名字.conf

如果改成443没流量能接收可能是防火墙或端口冲突
检查是否有服务占用了 443 端口:sudo ss -tulnp | grep ':443' 或者 sudo netstat -tulnp | grep ':443'
如果显示 nginx、caddy、httpd 等,说明 Web 服务占用了 443,那就是冲突
如果没有往下看
检查 WireGuard 是否在监听 443        打这个   sudo wg
看输出中是否有:listening port: 443  如果没有,说明配置没生效 。检查配置文件:

sudo nano /etc/wireguard/wg0.conf

确认有:
[Interface]
PrivateKey = xxxxxx
Address = 10.66.66.1/24
ListenPort = 443   # 必须是 443不是就改了
保存后重启服务:

sudo systemctl restart wg-quick@wg0

客户端必须使用新端口,你改了服务端端口,但客户端配置没更新,手机还在连原来的端口。

运行

sudo ./wireguard-install.sh

     选1) Add a new user 起一个名字
它会自动生成一个使用 443 端口的配置文件:

/root/wg0-client-新用户名字.conf

运行命令生成二维码:

qrencode -t ansiutf8 < /root/wg0-client-新用户名字.conf

手机连接成功后,在服务器上运行:
 

sudo wg

你会看到类似输出:
interface: wg0
  public key: ABCDEFG…=
  private key: (hidden)
  listening port: 443

peer: HIJKLMN…=
  preshared key: (hidden)
  endpoint: 123.123.123.123:51234
  allowed ips: 10.66.66.2/32
  latest handshake: 1 minute ago
  transfer: 1.2 MB received, 800 KB sent   ← 看这里有数据了
如果看到 transfer 有数据,说明:连接成功 流量正在通过
虽然现在能连上了,但可能还是慢。我们加上 MTU 优化。
编辑新配置文件:

sudo nano /root/wg0-client-名字.conf

在 [Interface] 下添加:MTU = 1360

就是下面这样:
[Interface]
PrivateKey = xxxxxx
Address = 10.66.66.2/32
DNS = 1.1.1.1,1.0.0.1
MTU = 1360   # 添加这一行

[Peer]
PublicKey = yyyyyy
PresharedKey = zzzzzz
Endpoint = 47.236.56.62:443
AllowedIPs = 0.0.0.0/0,::/0

保存后,重新生成二维码:

qrencode -t ansiutf8 < /root/wg0-client-名字.conf

如果还是没网就检查一下刚刚生成的客户端配置文件 /root/wg0-client-shy3.conf 里的 Endpoint
如果端口还是52539自己改一下
问题根源就是wireguard-install.sh 脚本在生成客户端配置时,会读取服务端配置中的 ListenPort。
你可能先运行了脚本添加用户后修改了 /etc/wireguard/wg0.conf 的 ListenPort = 443导致脚本“记住”的还是 原端口所以它生成的客户端配置仍然是原端口。
手动改一下这个文件:

sudo nano /root/wg0-client-名字.conf

找到这一行:Endpoint = xxxxxx:52539 改成443
在 [Interface] 部分,取消注释并设置 MTU:MTU = 1360
类似下面这个
[Interface]
PrivateKey = 
Address = 10.66.66.4/32,fd42:42:42::4/128
DNS = 1.1.1.1,1.0.0.1
MTU = 1360   #  添加这一行

重新生成二维码:

qrencode -t ansiutf8 < /root/wg0-client-名字.conf

下次如果你想换端口,建议:
先停服务

sudo systemctl stop wg-quick@wg0

修改 /etc/wireguard/wg0.conf 的 ListenPort = 443
保存后,再运行安装脚本添加用户:

sudo ./wireguard-install.sh

有防火墙问题吗?
安全方案:不重启、不停服务,只添加防火墙规则 :sudo firewall-cmd –add-port=443/udp –permanent
然后刷新防火墙规则:sudo firewall-cmd –reload
验证防火墙是否放行:sudo firewall-cmd –list-ports | grep 443  如果看到输出:443/udp  说明防火墙已放行 UDP 443
 

赞(0)
未经允许不得转载:171主机测评 » 服务器一键部署 WireGuard
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址