作为一名网络工程师,我经常被问到:“如何在没有专用硬件的情况下快速搭建一个安全的远程访问通道?”答案是——使用 Shell 脚本配合 OpenVPN 或 WireGuard 等开源工具,实现轻量级、灵活可控的虚拟私人网络(VPN),本文将手把手教你用 Shell 脚本自动化部署一个基于 WireGuard 的简易但强大的 Shell VPN,适用于个人服务器、小型团队或开发测试环境。

确保你有一台运行 Linux 的服务器(如 Ubuntu 20.04+),并拥有 root 权限,我们选择 WireGuard 是因为它配置简洁、性能优异,且比 OpenVPN 更适合资源受限的场景,我们编写一个 Shell 脚本(setup-wg-vpn.sh)来完成以下任务:

  1. 安装 WireGuard
    使用包管理器一键安装:

    apt update && apt install -y wireguard iptables-persistent
  2. 生成密钥对
    自动为服务端和客户端生成公私钥,保存在 /etc/wireguard/ 目录下:

    wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
  3. 配置服务端接口
    编写 /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
  4. 创建客户端脚本
    提供一个 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
  5. 启用 IP 转发与防火墙规则
    在服务器上执行:

    echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
    sysctl -p
  6. 分发客户端配置
    客户端只需将生成的 .conf 文件导入 WireGuard 客户端(Windows/macOS/Linux 均支持),即可连接,所有流量将加密通过隧道传输,实现“安全远程办公”。

注意事项:

  • 安全第一:务必使用强密码保护私钥文件(chmod 600 /etc/wireguard/*)。
  • 防火墙:开放 UDP 51820 端口(云服务商需配置安全组)。
  • 日志监控:定期检查 journalctl -u wg-quick@wg0 查看连接状态。

通过这个 Shell 脚本方案,你可以快速复用模板,在多台服务器上批量部署,相比图形化工具,它更透明、可审计,适合技术爱好者和初级运维人员掌握,网络安全的核心是“最小权限 + 自动化 + 日志审计”——这正是 Shell 脚本能帮你做到的!

Shell VPN实战指南,从零搭建安全远程访问通道  第1张

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