Debian 命令行 WireGuard VPN 服务器搭建教程

一、环境说明

  • 系统:Debian(纯命令行模式,无桌面环境,节约资源)
  • 网卡名称:ens192
  • 静态IP:192.168.2.203/24(子网掩码:255.255.255.0)
  • 网关:192.168.2.1
  • WireGuard EndPoint:hayashiei.top:58888(域名需解析到服务器公网IP,仅局域网使用可忽略)
  • 管理工具:wireguard-ui(可视化配置,简化操作)
  • 自启方式:systemd 服务(解决重启丢规则、服务失效问题)

二、前置准备

1. 以 root 用户登录 Debian 纯命令行(远程登录可使用 Xshell、Putty 等工具);

2. 确保服务器临时能联网(用于下载依赖和软件,后续配置静态IP后永久联网);

3. 提前确认域名 hayashiei.top 已解析(若使用公网访问,无公网则跳过)。

三、分步搭建步骤

步骤 1:更新系统并安装基础依赖

执行以下命令,更新系统软件包,并安装后续操作所需的基础工具:

# 更新系统包

apt update && apt upgrade -y

# 安装WireGuard、curl、sudo、iptables等依赖

apt install -y wireguard wireguard-tools curl iptables sudo unzip

步骤 2:配置静态 IP(适配 ens192 网卡)

先备份原有网络配置,再写入静态IP配置(避免配置错误无法恢复):

1. 备份网络配置文件:

cp /etc/network/interfaces /etc/network/interfaces.bak

2. 写入静态IP配置(直接覆盖原有内容,适配192.168.2.203):

cat > /etc/network/interfaces << EOF

auto lo

iface lo inet loopback

# 配置 ens192 静态 IP

auto ens192

iface ens192 inet static

address 192.168.2.203/24  # 静态 IP(/24 等价于子网掩码 255.255.255.0)

 gateway 192.168.2.1       # 网关(路由器IP)

dns-nameservers 223.5.5.5 223.6.6.6  # 阿里云 DNS,确保解析正常

EOF

3. 重启网络服务,使静态IP生效:

systemctl restart networking

4. 验证静态IP是否生效:

ip a show ens192

验证标准:命令输出中能看到 “inet 192.168.2.203/24”,表示静态IP配置成功。

步骤 3:开启IP转发

# 临时开启(当前会话有效)

echo 1 > /proc/sys/net/ipv4/ip_forward

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

# 永久开启(重启后生效)

echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf

echo “net.ipv6.conf.all.forwarding=1” >> /etc/sysctl.conf

# 生效配置

sysctl -p

步骤 4:配置系统防火墙

# 放行58888 UDP端口(WireGuard)

iptables -A INPUT -p udp –dport 58888 -j ACCEPT

iptables -A FORWARD -i wg0 -j ACCEPT

iptables -A FORWARD -o wg0 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 保存iptables规则(防止重启失效)

apt install -y iptables-persistent

netfilter-persistent save

步骤 5:安装 wireguard-ui(可视化管理工具)

wireguard-ui 可简化服务器和客户端配置,无需手动编写复杂的 conf 文件:

1. 安装WireGuard-UI工具

# 创建存放目录

mkdir -p /opt/wireguard-ui

cd /opt/wireguard-ui

# 下载最新版wireguard-ui(适配amd64架构)

curl -L https://github.com/ngoduykhanh/wireguard-ui/releases/latest/download/wireguard-ui-linux-amd64.tar.gz -o wireguard-ui.tar.gz

tar xzf wireguard-ui.tar.gz

chmod +x wireguard-ui

2. 创建 wireguard-ui 系统服务(实现开机自启):

# 创建systemd服务(开机自启)

cat > /etc/systemd/system/wireguard-ui.service << EOF

[Unit]

Description=WireGuard UI

After=network.target

[Service]

User=root

WorkingDirectory=/opt/wireguard-ui

ExecStart=/opt/wireguard-ui/wireguard-ui –bind-address 0.0.0.0:5000

Restart=always

RestartSec=5

[Install]

WantedBy=multi-user.target

EOF

3. 设置WireGuard-UI开机自启动

# 启动并设置开机自启

systemctl daemon-reload

systemctl start wireguard-ui

systemctl enable wireguard-ui

验证 wireguard-ui 是否正常运行:

systemctl status wireguard-ui.service

验证标准:输出中显示 “active (running)”,表示 UI 服务启动成功。

步骤 6:通过 wireguard-ui 配置 WireGuard 服务器

UI 启动后,通过浏览器访问,可视化配置服务器参数:

1. 浏览器访问 UI 页面(仅局域网访问,公网访问需端口转发):

http://192.168.2.203:5000

2. 首次登录(默认账号密码,建议登录后立即修改):

账号:admin  密码:admin

如果出现登陆跳转登陆界面则:

# 假设数据目录在 /opt/wireguard-ui 或 /var/lib/wireguard-ui

# 先找到你的数据目录(看启动日志或配置)

# 示例:

chown -R root:root /opt/wireguard-ui

chmod -R 700 /opt/wireguard-ui

然后重启服务。

systemctl daemon-reload

systemctl restart wireguard-ui

3. 配置服务器核心参数(进入「Server」页面):

  • Interface Name:wg0(默认即可,无需修改)
  • Listen Port:51820(默认端口,若被占用可修改,需同步修改后续配置)
  • Private Key/Public Key:系统自动生成,无需手动修改
  • Address:填写 VPN 内网段(如 10.0.0.1/24,自定义即可,避免与局域网网段冲突)
  • DNS Servers:223.5.5.5, 223.6.6.6(与静态IP配置的DNS一致,确保客户端解析正常)
  • EndPoint:hayashiei.top:58888(填写自己的域名+端口,无公网可留空)

PostUP和PostDown如果是外网VPN则什么都不用填。如果是异地组网则按照如下填写:

  • PostUP:iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE; iptables -A FORWARD -i %i -o %i -j ACCEPT
  • PostDown:iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens192 -j MASQUERADE; iptables -D FORWARD -i %i -o %i -j ACCEPT

4. 点击「Save Config」保存配置,系统会自动生成 /etc/wireguard/wg0.conf 文件(核心配置文件)。

下面是验证是否正常。

# 查看WireGuard接口状态

wg show

# 查看wireguard-ui服务状态

systemctl status wireguard-ui

# 查看端口监听(确认58888 UDP端口已监听)

ss -ulnp | grep 58888

5. 配置 WireGuard 开机自启

通过 systemd 服务,让 wg0 接口开机自动加载:

1. 启用自启:

systemctl enable wg-quick@wg0.service

2. 启动 wg0 接口:

wg-quick up wg0

3. 验证 WireGuard 状态:

wg show wg0

验证标准:能看到 wg0 接口的 IP、监听端口,即表示启动成功。

步骤 7:添加客户端(通过 wireguard-ui)

客户端需导入配置文件才能连接 VPN,通过 UI 快速生成:

1. 回到 wireguard-ui 页面,点击左侧「Clients」→「Add Client」;

2. 填写客户端名称(如 “iPhone”、“Windows”,自定义,便于区分);

3. 其他参数默认(系统自动生成密钥和 IP),点击「Save」;

4. 生成后,点击客户端右侧「Download」,下载 .conf 配置文件;

5. 将配置文件导入客户端 WireGuard 软件(手机/电脑均可,下载对应系统的 WireGuard 客户端)。

步骤 8:功能验证(确保所有配置正常)

客户端导入配置并连接 VPN 后,进行以下测试:

1. 访问外网:打开浏览器访问百度、谷歌等,能正常加载即表示外网连通;

2. 访问局域网:访问 192.168.2.x 网段的设备(如路由器、其他电脑),能正常访问即表示局域网连通;

3. 重启验证:执行 reboot 重启服务器,重启后无需手动操作,再次测试客户端连接和访问功能,均正常即表示所有配置永久生效。

四、常用运维命令(收藏备用)

# 查看 wireguard-ui 服务状态(是否运行)

systemctl status wireguard-ui.service

# 重启 wireguard-ui(UI 无法访问时使用)

systemctl restart wireguard-ui.service

# 查看 WireGuard 接口状态(客户端连接情况、流量等)

wg show wg0

# 重启 WireGuard 接口(客户端无法连接时使用)

wg-quick down wg0 && wg-quick up wg0

# 查看 NAT 转发服务状态

systemctl status wg-nat.service

# 验证静态 IP 是否正常

ip a show ens192

# 验证 IP 转发是否开启

cat /proc/sys/net/ipv4/ip_forward

# 重启服务器

Reboot

#添加了客户端但是没有生效

# 先停止旧接口,再启动新配置 wg-quick down wg0 && wg-quick up wg0 # 验证修改是否生效 wg show wg0

五、注意事项

1. 域名使用说明:若需通过公网域名 hayashiei.top 连接 VPN,需确保:

域名已正确解析到服务器公网 IP;

路由器需转发 58888端口(UDP 协议)到服务器 192.168.2.203;

2. 端口冲突:若 58888 端口被占用,需修改 wireguard-ui 中的「Listen Port」,并同步修改路由器端口转发和客户端配置;

3. 命令行模式:无需安装桌面环境,保持纯命令行即可,节约服务器资源;

4. 密码修改:首次登录 wireguard-ui 后,建议立即修改 admin 密码(进入「Settings」页面修改),提升安全性;

5. 配置备份:建议备份 /etc/wireguard/ 目录下的所有 .conf 文件,以及 /etc/network/interfaces 文件,便于后续恢复。

六、总结

本教程完全适配本人服务器环境,核心解决了 Debian 命令行模式下:静态 IP 配置、WireGuard 重启失效、NAT 转发规则丢失、wireguard-ui 无法访问等问题;

所有服务均配置为开机自启,重启服务器后无需任何手动操作,客户端可直接连接,正常访问外网和局域网; 后续重装或迁移服务器时,可直接参考本教程,一步到位完成搭建,无需重复试错。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注