126 lines
3.8 KiB
Bash
126 lines
3.8 KiB
Bash
#!/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 ""
|