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