作为一名网络工程师,我经常被问到:“如何在没有专用硬件的情况下快速搭建一个安全的远程访问通道?”答案是——使用 Shell 脚本配合 OpenVPN 或 WireGuard 等开源工具,实现轻量级、灵活可控的虚拟私人网络(VPN),本文将手把手教你用 Shell 脚本自动化部署一个基于 WireGuard 的简易但强大的 Shell VPN,适用于个人服务器、小型团队或开发测试环境。
确保你有一台运行 Linux 的服务器(如 Ubuntu 20.04+),并拥有 root 权限,我们选择 WireGuard 是因为它配置简洁、性能优异,且比 OpenVPN 更适合资源受限的场景,我们编写一个 Shell 脚本(setup-wg-vpn.sh)来完成以下任务:
-
安装 WireGuard
使用包管理器一键安装:apt update && apt install -y wireguard iptables-persistent
-
生成密钥对
自动为服务端和客户端生成公私钥,保存在/etc/wireguard/目录下:wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
-
配置服务端接口
编写/etc/wireguard/wg0.conf文件,设置监听地址(如0.0.1/24)、端口(默认51820)及允许的客户端 IP 段:[Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = <你的私钥> PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE -
创建客户端脚本
提供一个add-client.sh脚本,用于动态添加新用户(如客户 A):#!/bin/bash CLIENT_NAME=$1 wg genkey | tee "/etc/wireguard/${CLIENT_NAME}.private" | wg pubkey > "/etc/wireguard/${CLIENT_NAME}.public" echo "[Peer] PublicKey = $(cat /etc/wireguard/${CLIENT_NAME}.public) AllowedIPs = 10.0.0.2/32" >> /etc/wireguard/wg0.conf systemctl restart wg-quick@wg0 -
启用 IP 转发与防火墙规则
在服务器上执行:echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf sysctl -p
-
分发客户端配置
客户端只需将生成的.conf文件导入 WireGuard 客户端(Windows/macOS/Linux 均支持),即可连接,所有流量将加密通过隧道传输,实现“安全远程办公”。
注意事项:
- 安全第一:务必使用强密码保护私钥文件(
chmod 600 /etc/wireguard/*)。 - 防火墙:开放 UDP 51820 端口(云服务商需配置安全组)。
- 日志监控:定期检查
journalctl -u wg-quick@wg0查看连接状态。
通过这个 Shell 脚本方案,你可以快速复用模板,在多台服务器上批量部署,相比图形化工具,它更透明、可审计,适合技术爱好者和初级运维人员掌握,网络安全的核心是“最小权限 + 自动化 + 日志审计”——这正是 Shell 脚本能帮你做到的!

VPN加速器|半仙VPN加速器-免费VPN梯子首选半仙VPN

