金山云主机添加开机路由

金山云下面的专有网络, 内部只有两台机器绑定弹性公网IP, 其中有公网IP的主机可以直接访问公网, 而没有公网IP的主机, 需要通过指定的主机(例如 10.1.1.200)作为网关才能访问公网.

尝试过通过金山云后台给子网添加路由, 但是这个路由会影响到 10.1.1.200 自身, 和阿里云不一样. 所以只能在每台内网机器上手工设置使用root执行命令添加默认网关

bash 复制代码
route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.1.1.200

检查是否存在这个路由用route -n命令, 下面第二第三条是系统自带的

bash 复制代码
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.1.200      0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.1.1.1        0.0.0.0         UG    0      0        0 eth0
10.1.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

要确保 gateway 10.1.1.200 这条在 10.1.1.1 之上, 或者 metric 更小, metric 值越小权重越高, 如果要调整 metric, 可以用命令

bash 复制代码
sudo ip route replace 0.0.0.0/0 via 10.1.1.200 metric 1

方案一: 通过 systemctl

添加到服务后, 重启后可以自动应用

创建文件 /etc/systemd/system/add-route.service

复制代码
[Unit]
Description=Add default route
After=network.target
Wants=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ip route replace 0.0.0.0/0 via 10.1.1.200 metric 0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

添加到系统服务

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable add-route.service
sudo systemctl start add-route.service

但是这种方法, 在主机的DHCP网络产生变化后, 容易丢失路由

方案二: 添加到DHCP hook脚本

创建文件 /etc/dhcp/dhclient-enter-hooks.d/add-default-route

内容为

bash 复制代码
#!/bin/bash

log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') [dhclient-hook] $1"
}

# 只在特定事件时执行
case "${reason:-}" in
    BOUND|RENEW|REBIND|REBOOT|EXPIRE|FAIL|RELEASE|STOP)
        log "DHCP event: $reason for interface ${interface:-unknown}"

        # 等待网络稳定
        sleep 2

        # 添加默认路由
        log "Setting default route via 10.1.1.200
        /usr/bin/ip route replace 0.0.0.0/0 via 10.1.1.200 metric 0

        # 提高优先级,防止被覆盖
        sleep 1
        /usr/bin/ip route change default via 10.1.1.200 metric 0

        log "Route set successfully"
        ;;
    *)
        # 其他事件不处理
        ;;
esac

将其设置为可执行, 启动后, 会随dhcp变化自动执行, 查看日志

bash 复制代码
sudo journalctl|grep dhclient-hook
# or
sudo journalctl|grep 10.1.1.200

可以看到类似这样的内容

复制代码
Feb 05 22:06:50 vm10-0-0-4 ifdown[6585]: 2026-02-05 22:06:50 [dhclient-hook] Setting default route via 10.1.1.200
相关推荐
Decay__9 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
麦麦麦当劳大王9 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
starzy199010 小时前
深入理解Scala Map:从实现原理到工程实践
开发语言·后端·scala
只睡四小时11 小时前
Three.js Sub-tick:漏判 60.7%→0
开发语言·javascript·性能优化·ecmascript·游戏开发·three.js·碰撞检测
码农小河6611 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
anew___13 小时前
《从零手写操作系统 (63):安全与加固——从内核保护到沙箱隔离》
网络·安全
Lzg_na13 小时前
VXLAN:背景、机制、报文字段与主机转发流程
网络
东鹏特饮13 小时前
系统运维(传统/通用运维)面试题
开发语言·php
今天要早睡_13 小时前
C++01_入门基础复习
开发语言·c++
天远API14 小时前
零信任架构实战:基于天远运营商三要素详版V即时版构建自动化消费电子大促电商平台高价值权益秒杀与优惠券防羊毛高并发实名核验网关
运维·人工智能·架构·自动化