Anye
Anye
Published on 2025-01-18 / 225 Visits
1
0

云厂 200Mbps 小鸡,家里云的希望

前言

1月13日,阿里云推出首款全新升级的轻量应用服务器“通用型实例”,峰值带宽 200Mbps,虽然是共享带宽, 但实际上高峰期也能保持个 50Mbps 左右的速度,在家里云普遍上传超不过 70Mbps,各家纷纷回收公网 IP 的今天,无疑还是够用的,价格相对来说还算能够接受,成为了家里云穿透的最佳首选。

https://www.aliyun.com/minisite/goods?userCode=td6jqc1c

1月17日,腾讯云也推出了轻量应用服务器“锐驰型套餐”限量内测,同样峰值带宽 200Mbps,部分地域还支持开启 ipv6,价格性能更具竞争力,进一步丰富了市场选择。

https://curl.qcloud.com/Tkb1BeLp

脚本部署 Wirguard 内网穿透

一键安装

你可以通过以下命令直接运行远程脚本,无需克隆仓库:

curl -sSL https://git.anye.xyz/Anye/wg-piercing/raw/branch/main/wg-piercing.sh | bash

脚本功能

脚本提供了以下功能:

  1. 一键安装:自动安装 WireGuard 和相关依赖,生成密钥对,配置服务端和客户端,并启动 WireGuard 服务。

  2. 停止服务:停止 WireGuard 服务并清理相关配置。

  3. 退出:退出脚本。

使用步骤

  1. 运行脚本后,选择 1) 一键安装 选项。

  2. 脚本会自动生成客户端配置和二维码,请妥善保存这些信息。

  3. 使用生成的客户端配置连接到 WireGuard 服务器,享受内网穿透服务。

注意事项

  • 脚本会记录日志到 /var/log/wireguard_setup.log,方便排查问题。

  • 客户端配置和二维码仅显示一次,请务必妥善保存。

  • 如果需要停止服务,可以选择 2) 停止服务 选项。

脚本示例

#!/bin/bash

set -e

# 日志记录函数
log() {
  echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> /var/log/wireguard_setup.log
}

# 获取服务器 IP
get_server_ip() {
  SERVER_IP=$(ip addr show $(ip route | grep default | awk '{print $5}') | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)
}

# 安装必要的软件包
install_wireguard() {
  log "正在安装 WireGuard 和相关依赖..."
  apt update && apt install -y wireguard qrencode curl || { log "安装失败"; exit 1; }
}

# 获取公网服务器 IP
get_public_ip() {
  log "获取公网 IP..."
  PUBLIC_IP=$(curl -s 4.ipw.cn)
  if [ -z "$PUBLIC_IP" ]; then
    log "无法获取公网 IP,请检查网络连接。"
    exit 1
  fi
  log "公网 IP: $PUBLIC_IP"
}

# 生成密钥对
generate_keys() {
  log "生成服务器私钥和公钥..."
  SERVER_PRIVATE_KEY=$(wg genkey)
  SERVER_PUBLIC_KEY=$(echo "$SERVER_PRIVATE_KEY" | wg pubkey)

  log "生成客户端私钥和公钥..."
  CLIENT_PRIVATE_KEY=$(wg genkey)
  CLIENT_PUBLIC_KEY=$(echo "$CLIENT_PRIVATE_KEY" | wg pubkey)
}

# 配置服务端
configure_server() {
  log "配置服务端..."
  WG_CONFIG="/etc/wireguard/wg0.conf"
  cat > "$WG_CONFIG" <<EOF
[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVATE_KEY
ListenPort = 65535

[Peer]
PublicKey = $CLIENT_PUBLIC_KEY
AllowedIPs = 10.9.0.2/32
EOF
  chmod 600 "$WG_CONFIG"
}

# 配置客户端并生成二维码
configure_client() {
  log "配置客户端并生成二维码..."
  CLIENT_CONFIG=$(cat <<EOF
[Interface]
Address = 10.9.0.2/24
DNS = 119.29.29.29, 223.6.6.6
PrivateKey = $CLIENT_PRIVATE_KEY

[Peer]
PublicKey = $SERVER_PUBLIC_KEY
Endpoint = $PUBLIC_IP:65535
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
  )

  # 输出提示信息
  echo "============================================================"
  echo "以下客户端配置和二维码仅显示一次,请妥善保存!"
  echo "============================================================"

  # 输出客户端配置
  echo "客户端配置: "
  echo "$CLIENT_CONFIG"

  # 生成二维码
  echo "客户端配置二维码: "
  echo "$CLIENT_CONFIG" | qrencode -t ansiutf8

  # 再次提示
  echo "============================================================"
  echo "以上客户端配置和二维码仅显示一次,请妥善保存!"
  echo "============================================================"
}

# 启动 WireGuard 服务
start_wireguard() {
  log "启动 WireGuard 服务..."
  wg-quick up wg0 || { log "启动失败"; exit 1; }

  log "启用 IP 转发..."
  sysctl -w net.ipv4.ip_forward=1

  log "配置 iptables..."
  get_server_ip
  iptables -t nat -I PREROUTING -p udp --dport 65535 -j ACCEPT
  iptables -t nat -A PREROUTING -d $SERVER_IP -j DNAT --to-destination 10.9.0.2
  iptables -t nat -A POSTROUTING -j MASQUERADE
}

# 停止 WireGuard 服务
stop_wireguard() {
  log "停止 WireGuard 服务..."
  wg-quick down wg0 || { log "停止失败"; exit 1; }

  log "禁用 IP 转发..."
  sysctl -w net.ipv4.ip_forward=0

  log "移除 iptables 规则..."
  get_server_ip
  iptables -t nat -D PREROUTING -p udp --dport 65535 -j ACCEPT
  iptables -t nat -D PREROUTING -d $SERVER_IP -j DNAT --to-destination 10.9.0.2
  iptables -t nat -D POSTROUTING -j MASQUERADE
}

# 主菜单
echo "WireGuard 管理脚本"
echo "1) 一键安装"
echo "2) 停止服务"
echo "3) 退出"

read -p "请选择一个选项: " option

case $option in
  1)
    install_wireguard
    get_public_ip
    generate_keys
    configure_server
    configure_client
    start_wireguard
    ;;
  2)
    stop_wireguard
    ;;
  3)
    exit 0
    ;;
  *)
    echo "无效选项"
    exit 1
    ;;
esac


Comment