route路由命令、ip route命令、default默认路由(0.0.0.0 )

文章目录

  • 概述
  • [3. route语法](#3. route语法)
    • [3.1 查看路由表](#3.1 查看路由表)
      • [3.1 参数解释](#3.1 参数解释)
    • [3.2 添加路由记录](#3.2 添加路由记录)
      • [3.2.1 添加到达单个目标主机的路由](#3.2.1 添加到达单个目标主机的路由)
      • [3.2.2 添加到达目标网络的路由](#3.2.2 添加到达目标网络的路由)
      • [3.2.3 添加默认路由](#3.2.3 添加默认路由)
    • [3.3 删除路由记录](#3.3 删除路由记录)
  • [4. ip route](#4. ip route)
    • [4.1 查看路由](#4.1 查看路由)
      • [4.1.1 不带条件](#4.1.1 不带条件)
      • [4.1.2 带条件](#4.1.2 带条件)
      • [4.1.3 字段解释](#4.1.3 字段解释)
      • [4.1.3 字段解释](#4.1.3 字段解释)
    • [4.2 添加路由](#4.2 添加路由)
    • [4.3 删除路由](#4.3 删除路由)
    • [4.4 清空路由表:](#4.4 清空路由表:)

路由的基础概念:
【计算机网络】Linux下路由配置总结

概述

网络管理是一个复杂而庞大的体系,博主最近刚好学了一点关于网络的知识,就跟大家分享一下如何管理网卡、配置及查看ip地址和路由表。主要通过以下几个命令来演示一下。

现在一些旧的命令由于功能上有欠缺,已经逐渐被新命令取代。

旧命令 新命令
ifconfig ip addr
route ip route
ip link

3. route语法

通过man route查看详细语法

bash 复制代码
NAME
       route - show / manipulate the IP routing table

SYNOPSIS
       route [-CFvnNee] [-A family |-4|-6]

       route  [-v] [-A family |-4|-6] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]

       route  [-v] [-A family |-4|-6] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]

       route  [-V] [--version] [-h] [--help]
  • route add 和 route del 是主体命令

  • -net | -host 表示是 号段 | 单个ip,必选,二选一

    host类型时,单个地址,掩码 固定位255.255.255.255,也可以不填,自动补为255.255.255.255(ipv4时)

    net时,掩码必填

  • netmask 掩码,非必选

  • -4|-6 ,表示是 ip4 | ipv6,可以为空,默认是ipv4

  • -n 把专用字符 替换为数字形式的

    例如 default会自动替换为0.0.0.0

    bash 复制代码
    # route
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         gateway         0.0.0.0         UG    0      0        0 eth0
    
    # route -n
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         10.238.88.254   0.0.0.0         UG    0      0        0 eth0
  • target 表示想到达的目标网络或单个地址

  • gw 网关地址 ,即下一跳地址

    注意:这个网关不是随便填的,必须是一个真实存在的能通的,例如你的网卡必须有一个连接到某个3层路由的网线,否则会报 Network is unreachable

    网关地址概念参见 【计算机网络】集线器、网桥、交换机、路由器、网关(网关地址)大解析

  • dev ethxxx 目标网卡,非必选。若不指定所用的网卡设备,则会自动选择电脑上的第一个网卡(不包括 loopback)。也就是说当你环境上就一个非lo的网卡时,可以不指定,否则最好指定。

3.1 查看路由表

route 或route -n ,多用后者

这里的网关是指下一跳地址

默认是查看ipv4路由,如果想查看ipv6的:

dart 复制代码
route -n -6

3.1 参数解释

Flags标志说明:

  • U Up表示此路由当前为启动状态

  • H Host,表示此网关为单一主机地址 , 由 route add -host 命令创建的, 无需指掩码,自动为255.255.255.255(ipv4时)

    也就是说不带H参数时,表示是一个网段地址,即多个地址,此时route add -net 命令需指定掩码参数。有的文章说网段为对应的- Flags为N,可能是不同的linux版本。

  • G Gateway,表示此网关为一路由器

  • R Reinstate Route,使用动态路由重新初始化的路由

  • D Dynamically,此路由是动态性地写入

  • M Modified,此路由是由路由守护程序或导向器动态修改

3.2 添加路由记录

是临时添加的记录,重启network服务就失效

3.2.1 添加到达单个目标主机的路由

如果你想添加一个目标地址的话,可以采用这个方法,[]表示可选

bash 复制代码
 route add -host 目标主机 gw 网关 [ dev 接口 ]

比如 给eth0网卡添加一条到达10.1.111.111的路由记录,网关是10.2.111.111

bash 复制代码
 route add -host 10.1.111.111 gw 10.2.111.111 dev eth0

如果是ipv6,则 ip -6 add

3.2.2 添加到达目标网络的路由

如果你想把某个网络的全部地址都加入路由的话,可以采用这个方法

bash 复制代码
 route add -net 目标网络 netmask 子网掩码 gw 网关 dev 接口

或者 CIDR格式:

bash 复制代码
route add -net 目标网络/子网掩码 gw 网关 dev 接口

比如 给eth0网卡添加一条到达网络10.1.0.0/16的路由,网关是10.2.111.111

bash 复制代码
    route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.2.111.111 dev eth0

或者 CIDR格式:

bash 复制代码
  route add -net 10.1.0.0/16 gw 10.2.111.111 dev eth0

3.2.3 添加默认路由

默认路由作用参见 【计算机网络】0.0.0.0与127.0.0.1的区别、默认路由原理

语法:

bash 复制代码
 route add default gw 网关  [dev ethxxx]

比如给eth0添加一条默认路由,网关是10.2.111.111

bash 复制代码
 route add default gw 10.2.111.111  dev eth0 

等价于 :

bash 复制代码
#可以 default是一个网段 ,要以-net开头 
route add -net 0.0.0.0  netmask 0.0.0.0 gw 10.2.111.111  dev eth0 

3.3 删除路由记录

删除路由记录只需要把添加路由记录命令中的add改成del就可以了,不过删除路由记录可以省略接口

1)删除到达目标主机的路由记录

route del -host 主机名

2)删除到达目标网络的路由记录

route del -net 目标网络/子网掩码

3)删除默认路由

route del default 或 route del -net 0.0.0.0

4. ip route

ip route 的用法与route大同小异

bash 复制代码
 ip route { list | flush } SELECTOR   //查看路由
 ip route save SELECTOR
 ip route restore
 ip route showdump
 ip route get ADDRESS [ from ADDRESS iif STRING ]
                      [ oif STRING ] [ tos TOS ]
                      [ mark NUMBER ] [ vrf NAME ]
                      [ uid NUMBER ]
 ip route { add | del | change | append | replace } ROUTE   //添加路由、删除路由

SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]
            [ table TABLE_ID ] [ vrf NAME ] [ proto RTPROTO ]
            [ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
             [ table TABLE_ID ] [ proto RTPROTO ]
             [ scope SCOPE ] [ metric METRIC ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...
NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]
            [ dev STRING ] [ weight NUMBER ] NHFLAGS
FAMILY := [ inet | inet6 | ipx | dnet | mpls | bridge | link ]
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ]
           [ rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ]
           [ window NUMBER ] [ cwnd NUMBER ] [ initcwnd NUMBER ]
           [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
           [ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
           [ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
           [ pref PREF ] [ expires TIME ]
TYPE := { unicast | local | broadcast | multicast | throw |
          unreachable | prohibit | blackhole | nat }
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]          //scop 传播范围
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]    //proto  来源类型
PREF := [ low | medium | high ]
TIME := NUMBER[s|ms]
BOOL := [1|0]
FEATURES := ecn
ENCAPTYPE := [ mpls | ip | ip6 ]
ENCAPHDR := [ MPLSLABEL ]

4.1 查看路由

ip route { list | flush } SELECTOR ,查看路由

SELECTOR 是过滤的条件,可选参数,具体的条件参见SELECTOR ;

如果是Ipv6:

bash 复制代码
 ip -6 route -n   // -6 一定要跟在ip后面

4.1.1 不带条件

当SELECTOR 为空时,可以简写 ,以下均可以:

bash 复制代码
ip r
ip route
ip route show
ip route list

ip route显示的路由记录与route显示的格式不一样

4.1.2 带条件

例如过滤出 unicast类型的路由:

bash 复制代码
ip route list type unicast     

4.1.3 字段解释

表示默认路由,即当没有其他路由匹配时,数据包将会被发送到的地址。

4.1.3 字段解释

  • default:表示默认路由,即当没有其他路由匹配时,数据包将会被发送到的地址。

  • via xxx:后面跟随的IP地址是数据包应当被转发到的下一跳IP地址

  • dev xxxx:表示数据包应通过的出接口。

  • proto 路由的来源

    proto kernel 表示该路由条目是由内核自动创建的,通常用于处理本地流量或者路由决策是由内核模块(如策略路由或IPVS)做出的,而不是由用户手动添加的

    类似动态主机配置协议 DHCP ,会自动给我们的机器分配地址,同时能联网,即自动也添加了一条路由。 参见 DHCP是什么意思 路由器中DHCP服务器怎么设置?

    当你使用ip address add 命令,给网卡添加一个地址时,就会增加一条路由

    proto boot 表示由系统启动时从某些配置文件(如/etc/fstab)加载

  • scope 限定了转发范围。

    scope link 这意味着这些路由条目只适用于本地链路(local link),不会被转发到其他网络。

    local link

    是网络术语,指的是在同一物理或逻辑链路上的设备之间的通信。在数据链路层(第二层),局域网(LAN)和城域网(MAN)中的设备通常属于同一个局部链路。

    在TCP/IP模型中,局部链路层负责在同一局部链路内的直接点对点通信。这种通信不经过路由器,因为路由器的任务是将数据包从一个网络传输到另一个网络。

    因此,当您在Linux网络命令中看到 scope link 时,它表示该路由条目只适用于本地链路,不会被转发到其他网络。

    简单来说,路由是3层概念,link 降级了,改为2层,提高了效率。由于是2层,不带路由,则仅限于当前的局域网中,不会被转发出去

    scope host 主机路由,只适用于特定的主机

    scope global 全局路由,适用于所有的网络接口,通常通过路由协议(如RIP、OSPF等)学习到的路由

    scope site:站点路由,适用于同一站点内的所有网络接口

  • src 表示路由产生的源地址

4.2 添加路由

1)添加到达目标主机的路由记录

ip route add 目标主机 via 网关 dev ethxxx

2)添加到达网络的路由记录

ip route add 目标网络/掩码 via 网关 dev ethxxx

3)添加默认路由

ip route add default via 网关 dev ethxxx

下面只举一个例子说明一下。

比如增加一条到达主机10.2.111.112的路由,网关是10.1.111.112

bash 复制代码
ip route add 10.2.111.112 via 10.1.111.112   dev eth0

4.3 删除路由

ip route del 目标网络/掩码

ip route del default [via 网关]

4.4 清空路由表:

ip route flush

相关推荐
suifen_2 小时前
RK3229_Android9.0_Box 4G模块EC200A调试
网络
铁松溜达py2 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
衍生星球7 小时前
【网络安全】对称密码体制
网络·安全·网络安全·密码学·对称密码
掘根7 小时前
【网络】高级IO——poll版本TCP服务器
网络·数据库·sql·网络协议·tcp/ip·mysql·网络安全
友友马8 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http
2401_872514978 小时前
深入探究HTTP网络协议栈:互联网通信的基石
网络·网络协议·http
chenjingming6669 小时前
windows使用tcpdump.exe工具进行抓包教程
网络·测试工具·tcpdump
初黑子zzz9 小时前
rsync
网络
蜗牛学苑_武汉10 小时前
设计模式之代理模式
java·网络·java-ee·代理模式