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

问题浏览数Icon
48
问题创建时间Icon
2025-05-05 05:35:00
作者头像
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 脚本。

更多回答

作者头像
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输出的顺序)并测试回滚方案,避免因路由冲突导致断网。
作者头像
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。记得测试完保存配置,不然重启会丢!

作者头像
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隧道。
作者头像
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)并再次检查路由表。