如何通过命令行在 Rocky Linux 中检查并更改路由策略?

问题浏览数Icon
48
问题创建时间Icon
2025-05-05 05:35:00
作者头像
firehua33

在Rocky Linux中,通过ip route命令可查看路由表(ip route show),添加路由(ip route add 目标网段 via 网关 dev 接口),删除路由(ip route del 目标网段)。

延伸知识点:策略路由(Policy-Based Routing) 策略路由允许基于源IP、端口等条件选择不同路由表。实现步骤:

  1. 创建自定义路由表:在/etc/iproute2/rt_tables中添加如200 custom_table
  2. 添加路由规则:ip route add default via 网关 dev 接口 table custom_table
  3. 定义策略规则:ip rule add from 源IP段 lookup custom_table priority 100
  4. 持久化:将命令写入/etc/rc.local或NetworkManager脚本。此功能常用于多出口网络分流,例如让特定IP走VPN隧道。

更多回答

作者头像
coolduo233

在Rocky Linux中检查及调整路由策略,建议通过ip命令结合策略路由(Policy Routing)实现。步骤如下:

  1. 检查当前路由表ip route showip route list查看主路由表,ip rule list查看策略规则优先级。
  2. 查看策略路由表:若使用多路由表(如自定义表100),执行ip route show table 100
  3. 添加策略路由:通过ip rule add from <源IP> lookup <表名>定义策略(如ip rule add from 192.168.1.10 lookup 100),再在对应表中添加路由(如ip route add default via 10.0.0.1 dev eth0 table 100)。
  4. 持久化配置:将命令写入/etc/sysconfig/network-scripts/route-<接口>或使用nmcli配置NetworkManager(Rocky 8+推荐)。 注意:临时调试可直接操作,但生产环境需验证规则优先级(ip rule输出的顺序)并测试回滚方案,避免因路由冲突导致断网。
作者头像
moonhawk88
  1. 检查当前路由表

    ip route show
    # 或
    route -n
  2. 添加临时路由(重启失效):

    sudo ip route add <目标网络>/<子网掩码> via <网关IP> dev <接口名>
    # 示例:sudo ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0
  3. 永久添加路由

    sudo nmcli connection modify <连接名称> +ipv4.routes "<目标网络>/<子网掩码> <网关IP>"
    sudo nmcli connection down <连接名称> && sudo nmcli connection up <连接名称>
  4. 删除路由

    sudo ip route del <目标网络>/<子网掩码> via <网关IP>
  5. 策略路由检查

    ip rule list
    ip route show table <表ID或名称>
  6. 添加策略路由(如基于源IP):

    sudo ip rule add from <源IP/网段> table <自定义表ID>
    sudo ip route add default via <网关IP> dev <接口名> table <自定义表ID>

注:永久策略路由需编辑 /etc/iproute2/rt_tables 并配置 systemd-networkd 或 NetworkManager 脚本。

作者头像
shadowlight9
  1. 检查当前路由表

    ip route show   # 或使用缩写 ip r
    • 输出示例:default via 10.0.0.1 dev eth0 表示默认路由通过网关10.0.0.1
  2. 添加静态路由

    sudo ip route add 192.168.1.0/24 via 10.0.0.1 dev eth0
    • 将目标网络192.168.1.0/24通过网关10.0.0.1和接口eth0路由
  3. 删除指定路由

    sudo ip route del 192.168.1.0/24 via 10.0.0.1
    • 需与添加时的参数完全一致
  4. 修改默认网关

    sudo ip route replace default via 10.0.0.2 dev eth0
    • 将默认网关从原地址替换为10.0.0.2
  5. 持久化配置

    • 编辑接口配置文件(如eth0):
      sudo vi /etc/sysconfig/network-scripts/route-eth0
    • 添加格式:192.168.1.0/24 via 10.0.0.1 dev eth0
    • 重启网络服务:sudo systemctl restart network

注意

  • 使用ip route命令的变更仅临时生效,重启后失效
  • 确认网卡名称(如eth0)与实际环境一致
  • 操作前建议备份网络配置文件
作者头像
shanguang77

在Rocky Linux中检查并管理路由策略时,我通常通过以下流程操作,并结合实战中积累的注意事项:

1. 路由检查阶段

ip route show  # 查看主路由表
ip rule list    # 显示策略规则优先级(含local/main/default表)
route -n       # 传统net-tools方式查看

特别注意隐藏的32766优先级规则,该规则控制默认路由选择。当多网卡存在时,我曾遇到因metric值未正确设置导致路由漂移的情况。

2. 策略路由配置 创建自定义路由表(如vpn_tab):

echo '200 vpn_tab' >> /etc/iproute2/rt_tables
ip route add 10.8.0.0/24 dev tun0 table vpn_tab
ip rule add from 192.168.1.100 lookup vpn_tab

在SD-WAN部署中,曾因规则优先级顺序错误导致VPN流量未按预期转发。建议使用ip rule add priority 100显式指定顺序。

3. 持久化挑战 通过nmcli connection modify集成策略路由更可靠,例如:

nmcli con mod eth0 +ipv4.routing-rules "priority 100 from 192.168.1.100 table vpn_tab"
nmcli con up eth0

在KVM虚拟化场景中,遇到NetworkManager与自定义systemd-networkd配置冲突,最终采用network-scripts下创建route-ethX文件实现多路径负载均衡。

4. 故障排查要点

  • 使用tcpdump -nn -i any host <target_ip>验证流量路径
  • 检查rp_filter设置:sysctl net.ipv4.conf.all.rp_filter
  • 通过curl --interface eth1 ifconfig.co强制指定出口网卡测试

实践中发现,当策略路由与firewalld共存时,需特别注意MASQUERADE规则与策略路由的匹配顺序,否则会导致NAT失效。建议在复杂网络拓扑中使用NetworkManager的keyfile格式配置,避免服务重启时配置回滚。

作者头像
quickflame9

查路由策略的话,用ip rule list看当前规则。改的话比如加新规则,可以sudo ip rule add from 你的IP优先级动作这种格式,比如sudo ip rule add from 192.168.1.100 lookup 100。改默认路由用ip route,比如改网关就sudo ip route replace default via 新网关IP。记得测试完保存配置,不然重启会丢!

作者头像
ptfly66

在Rocky Linux中检查并管理路由策略,可通过以下步骤实现:

  1. 检查当前路由表

    ip route show    # 或使用传统命令 route -n
  2. 添加静态路由(临时生效)

    sudo ip route add <目标网络>/<掩码> via <网关IP> dev <接口名>
    # 示例:sudo ip route add 192.168.2.0/24 via 10.0.0.1 dev eth0
  3. 删除路由

    sudo ip route del <目标网络>/<掩码>  # 示例:sudo ip route del 192.168.2.0/24
  4. 持久化路由配置

    • 传统方式:编辑接口配置文件
      sudo vi /etc/sysconfig/network-scripts/route-<接口名>  # 如 route-eth0
      # 格式:192.168.3.0/24 via 10.0.0.1 dev eth0
    • NetworkManager方式(推荐):
      sudo nmcli connection modify <连接名> +ipv4.routes "<目标网络>/<掩码> <网关>"
      sudo nmcli connection down <连接名> && sudo nmcli connection up <连接名>
  5. 高级策略路由(基于规则表):

    # 创建自定义路由表
    echo "200 custom_table" | sudo tee -a /etc/iproute2/rt_tables
    # 添加路由规则
    sudo ip rule add from <源IP> table custom_table
    sudo ip route add default via <网关IP> dev <接口名> table custom_table

验证:执行后重启网络服务(systemctl restart NetworkManager)并再次检查路由表。