Linux下使用route配置路由

命令笔记 · 2023-07-25

Route(Linux)

查看路由表

  • 打印当前内核路由表,默认打印ipv4,加-4-6参数可以指定v4、v6

    root@ubuntu:~# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         OpenWrt         0.0.0.0         UG    0      0        0 ens18
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 ens18

    -n参数不解析主机名

    root@ubuntu:~# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 ens18
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 ens18

添加路由

  • 添加一条路由规则,目的是192.168.2.2主机,网关192.168.1.238,走ens18网卡

    route add -host 192.168.2.2 gw 192.168.1.238 dev ens18
  • 添加一条路由规则,目的是192.168.2.0网段,网关192.168.1.238,走ens18网卡

    route add -net 192.168.2.0/24 gw 192.168.1.238 dev ens18

    也可以使用netmask的写法

    route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.238 dev ens18
  • 添加默认路由

    route add default gw 192.168.1.1 dev ens18
  • 和Windows一样,Linux也可以通过设置跃点数的方法来决定路由优先级

    route add -host 223.5.5.5/32 gw 192.168.50.1 dev eth0 metric 1

删除路由

  • 删除目的为192.168.51.2主机的路由规则

    route del -host 192.168.2.2
  • 删除目的为192.168.51.0网段的路由规则

    route del -net 192.168.2.0/24

    同样也可以使用netmask的写法

    route del -net 129.168.2.0 netmask 255.255.255.0
  • 删除默认路由

    route del default

路由持久化

不同的发行版使用不同的网络管理工具来管理路由表,需要按实际情况查询相关文档进行操作

  • Ubuntu使用netplan来管理网络,实现路由持久化需要修改/etc/netplan/*.conf文件来实现

    root@ubuntu:~# cat /etc/netplan/00-installer-config.yaml 
    # This is the network config written by 'subiquity'
    network:
    ethernets:
      ens18:
        addresses:
        - 192.168.1.237/24
        nameservers:
          addresses:
          - 192.168.1.1
          search: []
        routes:
        - to: default
          via: 192.168.1.1
        - to: 192.168.2.0/24
          via: 192.168.1.238
    version: 2

    如上所示,添加了到192.168.2.0的路由规则

  • CentOS/RHEL使用NetworkManager来管理网络,实现路由持久化需要通过nmcli命令来实现

    nmcli connection modify eth0 +ipv4.routes "192.168.2.0/24 192.168.1.238"

    也可以设置接口对应默认路由的跃点数

    nmcli connection modify eth0 ipv4.route-metric 1

    设置完成后需要重启会话

    nmcli connection up eth0
Theme Jasmine by Kent Liao