Sky
HOME
HOME
  • linux

    • docker 安装脚本
    • docker 清除脚本
  • openWrt

    • openWrt - 安装
    • openWrt - 基本设置
  • docker

    • wg_easy 安装

wg-easy 安装

找目录添加 yml 文件 (nano /home/ljw/docker/wg-easy/docker-compose.yml)

# https://github.com/WeeJeWel/wg-easy
services:
  wg-easy:
    image: weejewel/wg-easy
    container_name: wg-easy
    restart: unless-stopped
    environment:
      - WG_HOST=8.134.xx.xx           # 自动填入的公网 IP
      - PASSWORD=xxxx  # 修改为你自己的管理密码
      - WG_DEFAULT_DNS=1.1.1.1
      - AllowedIPs=0.0.0.0/0
      - WG_PERSISTENT_KEEPALIVE=25
    ports:
      - "51820:51820/udp"   # WireGuard VPN 端口
      - "51821:51821/tcp"   # Web 管理面板端口
    volumes:
      - .:/etc/wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE

启动容器

docker compose up -d # -d 后台运行
# docker compose down # 停止容器
# docker logs -f wg-easy # 查看 wg-easy 日志

发现容器外,服务器无法 ping 通客户端

方法1

    network_mode: host   # ✅ 使用宿主机网络

方法2 (默认 bridge 网络)

然后在宿主机创建添加路由的脚本:

  1. 在 /usr/local/bin/ 下创建一个名为 add-vpn-route.sh 的脚本文件:

    • sudo nano /usr/local/bin/add-vpn-route.sh

    • 脚本内容:

          #!/bin/bash
      
          # 等待容器启动最多 60 秒
          for i in {1..30}; do
          CONTAINER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' wg-easy 2>/dev/null)
          if [[ "$CONTAINER_IP" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
              break
          fi
          sleep 2
          done
      
          # 如果没获取到 IP,退出并报错
          if [[ -z "$CONTAINER_IP" ]]; then
          echo "Failed to get wg-easy container IP"
          exit 2
          fi
      
          # 添加路由(忽略“已存在”的错误)
          # 这告诉宿主机:“如果你想访问 10.8.0.0/24 网段(VPN 客户端),请发给容器 wg-easy。”
          sudo ip route add 10.8.0.0/24 via "$CONTAINER_IP" 2>/dev/null || true
      
          # 打印确认
          echo "Route added to 10.8.0.0/24 via $CONTAINER_IP"
      
  2. 赋予脚本执行权限: sudo chmod +x /usr/local/bin/add-vpn-route.sh

  3. 添加到 systemd:

    • 创建一个新的 systemd 服务文件: sudo nano /etc/systemd/system/add-vpn-route.service

    • 在文件中添加以下内容:

          [Unit]
          Description=Add VPN route on startup
          After=network.target
      
          [Service]
          Type=oneshot
          ExecStart=/usr/local/bin/add-vpn-route.sh
          RemainAfterExit=true
      
          [Install]
          WantedBy=multi-user.target
      
  4. 启用和启动服务:(启用并启动这个服务,以确保它会在每次启动时运行)

        sudo systemctl enable add-vpn-route.service
        sudo systemctl start add-vpn-route.service
    
  5. 检查是否生效:(可以重启系统,看看是否成功添加了路由)

        sudo systemctl status add-vpn-route.service
        ip route show
    
最近更新: 2025/4/30 18:23
Contributors: liujw155@outlook.com