Linux系统下安装并使用WireGuard
本文最后更新于 12 天前,其中的信息可能已经过时,如有错误请发送邮件到Pavilion_Cat@outlook.com

环境要求

  • 一台 Windows 或 Linux 设备充当服务器
  • 多台 Windows 或 Linux 或 Mac 或 Android 或 iOS 设备充当客户端
  • 作为 WireGuard 服务器的设备需要有公网 IP 或者能被客户端访问

1. 安装 WireGuard

首先,在你的 Linux 系统上安装 WireGuard。你可以通过 apt、dnf、yum 或其他包管理器进行安装,具体取决于你的发行版。

  • Debian/Ubuntu 系统:
sudo apt update
sudo apt install wireguard
  • CentOS/RHEL 系统:
  • 启用 EPEL 仓库并安装 WireGuard:
sudo yum install epel-release
sudo yum install wireguard-tools
  • 如果你的 CentOS/RHEL 系统使用的是 8 及以上版本,你可能需要额外的仓库支持:
sudo dnf install wireguard-tools
  • Fedora 系统:
sudo dnf install wireguard-tools
  • Arch Linux:
sudo pacman -S wireguard-tools

2.生成密钥对

WireGuard 使用公钥和私钥来进行加密通信。你可以通过以下命令生成密钥对:

wg genkey | tee privatekey | wg pubkey > publickey

这将在当前目录下生成 privatekeypublickey 文件。私钥为机密,不可共享给他人,公钥可以共享给其他 WireGuard 节点。

3. 配置 WireGuard

/etc/wireguard/ 目录下创建一个配置文件(例如 wg0.conf)。

sudo vim wg0.conf
  • 作为客户端

文件内容示例如下:

[Interface]
PrivateKey = <客户端私钥>  #修改时请将<>一并删去
Address = *.*.*.*/*   # 客户端的虚拟IP地址,服务器分配的ip

[Peer]
PublicKey = <服务器公钥>
Endpoint = <服务器IP地址>:51820 #端口为服务器设置的端口,51820为默认 WireGuard 端口
AllowedIPs = *.*.*.*/*  # 允许通过 VPN 网络的对端地址
PersistentKeepalive = 25  # 保持连接的频率

[Interface] 部分包含本机配置。你需要用你自己的私钥替换 <你的私钥>,并设置适当的 IP 地址

[Peer] 部分是对端的配置,<对端公钥> 是对方的公钥,AllowedIPs 是允许的 IP 范围

  • 作为服务器

文章内容示例如下:

[Interface]
Address = *.*.*.*/*  # 这是服务器的虚拟IP地址
ListenPort = 51820      # WireGuard 默认端口
PrivateKey = <服务器私钥>  # 服务器的私钥
 
[Peer]
PublicKey = <客户端公钥>   # 连接的客户端公钥
AllowedIPs = *.*.*.*/.*    # 客户端的虚拟IP地址
PersistentKeepalive = 25  # 保持连接的频率

Address:为服务器分配一个 IP 地址(通常选择 10.0.0.1/24)。

ListenPort:设置 WireGuard 监听的端口(默认是 51820)。

PrivateKey:填入你为服务器生成的私钥。

[Peer] 部分是客户端的配置,公钥需要在客户端生成并提供给服务器。

如果有多个客户端,可以在 [Peer] 部分添加多个 PublicKey 和 AllowedIPs 条目。

例如:

[Interface]
Address = *.*.*.*/*  # 这是服务器的虚拟IP地址
ListenPort = 51820      # WireGuard 默认端口
PrivateKey = <服务器私钥>  # 服务器的私钥
 
[Peer]
 
#D1
PublicKey = <客户端公钥>   # 连接的客户端公钥
AllowedIPs = *.*.*.*/*    # 客户端的虚拟IP地址
PersistentKeepalive = 25  # 保持连接的频率
 
#D2
PublicKey = <客户端公钥>   # 连接的客户端公钥
AllowedIPs = *.*.*.*/*    # 客户端的虚拟IP地址
PersistentKeepalive = 25  # 保持连接的频率

保存并退出编辑器。

4.启动 WireGuard 服务

使用以下命令启动 WireGuard 接口:

sudo wg-quick up wg0

这将启用 wg0 配置文件中的设置并启动 VPN 服务。

5.配置自动启动

为了让 WireGuard 在系统启动时自动启动,使用以下命令启用服务:

sudo systemctl enable wg-quick@wg0

6.配置防火墙

确保防火墙允许 WireGuard 的 UDP 端口(默认是 51820)

  • 使用 UFW
sudo ufw allow 51820/udp
sudo ufw enable
  • 使用 iptables
sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT

如果你使用 iptables,确保保存规则,否则它们会在重启后丢失。

7.启用 IP 转发(仅服务器)

如果你希望通过 VPN 连接进行路由,需启用 IP 转发:

  • 打开 /etc/sysctl.conf 文件:
sudo nano /etc/sysctl.conf
  • 添加以下行以启用 IPv4 和 IPv6 转发:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
  • 使更改生效:
sudo sysctl -p

8.配置 NAT(仅服务器)

如果你想通过 VPN 为客户端提供 Internet 访问,还需要配置 NAT。假设你使用的是 eth0 网络接口(根据实际网络接口名称调整):

  • 使用 iptables 配置 NAT:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • 保存 iptables 规则(根据你的 Linux 发行版选择适当方法):
  • Debian/Ubuntu
sudo iptables-save > /etc/iptables/rules.v4
  • CentOS/RHEL
sudo service iptables save

9.测试连接

确保客户端可以成功连接到服务器

  • 使用 ping 命令测试:(从客户端 ping 服务器的虚拟 IP)
ping *.*.*.* 

文中未提及的常用命令

  • 你可以使用以下命令查看 WireGuard 接口的状态:
sudo wg
  • wg-quick up <interface>

启动 WireGuard 接口,并应用相应的配置。

sudo wg-quick up wg0
  • wg-quick down <interface>

停止 WireGuard 接口,并关闭 VPN 连接。

sudo wg-quick down wg0
  • 查看接口的传输数据
sudo wg show wg0
作者:Pavilion_Cat
本文链接:https://blog.pavilioncat.com/install-setup-wireguard-linux.html
免责声明:本文内容仅供参考,不代表任何法律或专业建议。
作品采用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权,若想转载,请标明来源
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇