#!/bin/bash #=============================================================================== # 服务器网络路由配置脚本 # # 配置双网卡路由,确保 Claude API 请求通过专用出口 IP # # 服务器配置: # - 14.215.128.96: 对外服务网卡 (用户访问入口) # - 154.84.135.121: 专用出口网卡 (用于连接 Claude API) # - 67.223.119.33: Claude API 服务器 # # 使用前请根据实际情况修改网卡名称和网关 #=============================================================================== set -e # 配置变量 (请根据实际情况修改) PUBLIC_IP="14.215.128.96" # 对外服务 IP OUTBOUND_IP="154.84.135.121" # Claude API 出口 IP CLAUDE_API_SERVER="67.223.119.33" # Claude API 服务器 # 网卡名称 (需要根据实际情况修改) # 使用 ip addr 查看网卡名称 PUBLIC_INTERFACE="eth0" # 对外服务网卡 OUTBOUND_INTERFACE="eth1" # Claude API 出口网卡 # 网关 (需要根据实际情况修改) # 使用 ip route 查看默认网关 OUTBOUND_GATEWAY="" # 出口网卡的网关 #=============================================================================== # 检查是否为 root #=============================================================================== if [ "$EUID" -ne 0 ]; then echo "请使用 root 权限运行此脚本" exit 1 fi #=============================================================================== # 显示当前网络配置 #=============================================================================== echo "当前网络配置:" echo "============================================" echo "" echo "网卡信息:" ip addr show echo "" echo "路由表:" ip route show echo "" #=============================================================================== # 配置路由 #=============================================================================== if [ -z "$OUTBOUND_GATEWAY" ]; then echo "错误: 请设置 OUTBOUND_GATEWAY 变量" echo "" echo "使用以下命令查看网关:" echo " ip route | grep default" echo "" echo "然后编辑此脚本,设置 OUTBOUND_GATEWAY 变量" exit 1 fi echo "配置 Claude API 路由..." echo " 目标: $CLAUDE_API_SERVER" echo " 出口 IP: $OUTBOUND_IP" echo " 出口网卡: $OUTBOUND_INTERFACE" echo " 网关: $OUTBOUND_GATEWAY" echo "" # 删除已存在的路由 (如果有) ip route del "$CLAUDE_API_SERVER" 2>/dev/null || true # 添加路由规则 ip route add "$CLAUDE_API_SERVER" via "$OUTBOUND_GATEWAY" dev "$OUTBOUND_INTERFACE" src "$OUTBOUND_IP" echo "路由配置完成!" echo "" #=============================================================================== # 验证配置 #=============================================================================== echo "验证路由配置:" ip route get "$CLAUDE_API_SERVER" echo "" #=============================================================================== # 持久化配置 #=============================================================================== echo "保存路由配置到 /etc/rc.local..." # 创建 rc.local 如果不存在 if [ ! -f /etc/rc.local ]; then cat > /etc/rc.local << 'RCLOCAL' #!/bin/bash # rc.local - 开机自动执行的脚本 exit 0 RCLOCAL chmod +x /etc/rc.local fi # 检查是否已添加 if ! grep -q "Claude API" /etc/rc.local; then # 在 exit 0 之前插入路由命令 sed -i "/^exit 0/i # Claude API 出口路由\nip route add $CLAUDE_API_SERVER via $OUTBOUND_GATEWAY dev $OUTBOUND_INTERFACE src $OUTBOUND_IP 2>/dev/null || true\n" /etc/rc.local echo "已添加到 /etc/rc.local" else echo "路由配置已存在于 /etc/rc.local" fi echo "" echo "============================================" echo "网络配置完成!" echo "" echo "测试连接:" echo " curl -v --interface $OUTBOUND_IP https://api.anthropic.com/v1/messages" echo ""