Files
IT-Docs/Debian 命令行 WireGuard VPN 服务器搭建教程(静态IP+域名+自启).md

202 lines
9.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Debian 命令行 WireGuard VPN 服务器搭建教程(静态IP+域名+自启)
## 一、环境说明
• 系统:Debian(纯命令行模式,无桌面环境,节约资源)
• 网卡名称:ens192
• 静态IP192.168.2.203/24(子网掩码:255.255.255.0
• 网关:192.168.2.1
• WireGuard EndPointhayashiei.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 Namewg0(默认即可,无需修改)
• Listen Port:51820(默认端口,若被占用可修改,需同步修改后续配置)
• Private Key/Public Key:系统自动生成,无需手动修改
• Address:填写 VPN 内网段(如 10.0.0.1/24,自定义即可,避免与局域网网段冲突)
• DNS Servers223.5.5.5, 223.6.6.6(与静态IP配置的DNS一致,确保客户端解析正常)
• EndPointhayashiei.top:58888(填写自己的域名+端口,无公网可留空)
PostUP和PostDown如果是外网VPN则什么都不用填。如果是异地组网则按照如下填写:
• PostUPiptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE; iptables -A FORWARD -i %i -o %i -j ACCEPT
• PostDowniptables -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-uiUI 无法访问时使用)
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 无法访问等问题;
所有服务均配置为开机自启,重启服务器后无需任何手动操作,客户端可直接连接,正常访问外网和局域网;
后续重装或迁移服务器时,可直接参考本教程,一步到位完成搭建,无需重复试错。