linux · 2021-05-27 0

linux的route、traceroute、nmcli命令使用

一、route 使用

route 命令用于显示和操作IP路由表

执行 route 命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了

IP地址与掩码做按位与,可以得到网络号

路由表,根据配置文件 IPADDR 和 NETMAS,生成的自己的局域网路由条目;根据配置文件 GATEWAY,生成默认网关条目

路由表 用来支持下一跳的

1.命令

route [add|del] [-net|-host] target [netmask] [gw] [[dev] If]

其中:

  • add : 添加一条路由规则
  • del : 删除一条路由规则
  • -net : 目的地址是一个网络
  • -host : 目的地址是一个主机
  • target : 目的网络或主机
  • netmask : 目的地址的网络掩码
  • gw : 路由数据包通过的网关
  • dev : 为路由指定的网络接口

2.显示路由表

route -n

route 命令的输出项说明

  • Destination 目标网段或者主机
  • Gateway 网关地址
  • Genmask 网络掩码
  • Flags 标记。一些可能的标记如下:
    U — 路由是活动的
    H — 目标是一个主机
    G — 路由指向网关
    R — 恢复动态路由产生的表项
    D — 由路由的后台程序动态地安装
    M — 由路由的后台程序修改
    ! — 拒绝路由
  • Iface 该路由表项对应的输出接口

结果:

/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:35 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4416 (4.3 KiB)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

Destination 为 0.0.0.0,表示没有明确制定的意思,即默认路由。路由匹配会按照掩码长度由长到短开始匹配。所以,一般默认路由的目标子网掩码为 0.0.0.0,表示最后才匹配的意思。同时 Flags 中的 G 标志,表示使用路由。

Gateway 为 0.0.0.0,表示没有,无效的意思。即,本条路由不经网关。换句话说,命中网关是 0.0.0.0 的报文,它的目标是可能是同一网络下的其它目标地址。这时候走的是二层直连,需要发起 ARP 请求换取 MAC 地址进行发送。

3.添加主机路由

route add -host 192.168.1.2 dev eth0
route add -host 192.168.1.3 gw 172.17.0.1

对于主机路由可以不用指定netmask,因为其默认是255.255.255.255
而网关不指定的话,则默认为0.0.0.0

4.删除主机路由

route del -host 192.168.1.2
route del -host 192.168.1.3

5.添加网络路由

route add -net 192.168.3.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.4.0 netmask 255.255.255.0 gw 172.17.0.1

6.删除网络路由

route del -net 192.168.3.0 netmask 255.255.255.0
route del -net 192.168.4.0 netmask 255.255.255.0 gw 172.17.0.1

7.添加默认网关

route add default gw 172.17.0.1

8.删除默认网关

route del default gw 172.17.0.1

9.添加拒绝路由

route add -host 192.168.5.1 reject
route add -net 192.168.6.0 netmask 255.255.255.0 reject

10.删除拒绝路由

route del -host 192.168.5.1 reject
route del -net 192.168.6.0 netmask 255.255.255.0 reject

结果:

/ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
192.168.1.2     0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.1.3     172.17.0.1      255.255.255.255 UGH   0      0        0 eth0
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.4.0     172.17.0.1      255.255.255.0   UG    0      0        0 eth0
192.168.5.1     0.0.0.0         255.255.255.255 !H    0      0        0 *
192.168.6.0     0.0.0.0         255.255.255.0   !     0      0        0 *

二、traceroute 使用

traceroute 指令让你追踪网络数据包的路由途径,预设数据包大小是 40Byte

安装 traceroute:

apt-get install inetutils-traceroute
# traceroute www.baidu.com
traceroute to www.a.shifen.com (180.101.50.242), 64 hops max
  1   172.17.0.1  0.009ms  0.008ms  0.014ms 
  2   192.168.1.1  8.497ms  1.945ms  2.558ms 
  3   192.168.0.1  2.644ms  4.299ms  5.390ms 
  4   192.168.1.1  2.927ms  2.886ms  2.482ms 
  5   115.205.64.1  18.101ms  7.742ms  29.013ms 
  6   *  *  *

三、nmcli 使用

nmcli 命令赋予你直接在 Linux 命令行操作 NetworkManager 工具的能力

安装 nmcli:

apt install network-manager

检查设备状态:

zxm@zxm-pc:~$ nmcli device status
DEVICE           TYPE      STATE   CONNECTION      
wlp1s0           wifi      已连接  danger_wifi 1   
docker0          bridge    已连接  docker0 

显示设备详情:

zxm@zxm-pc:~$ nmcli device show wlp1s0
GENERAL.DEVICE:                         wlp1s0
GENERAL.TYPE:                           wifi
GENERAL.HWADDR:                         E4:AA:EA:D0:1C:99
GENERAL.MTU:                            1500
GENERAL.STATE:                          100(已连接)
GENERAL.CONNECTION:                     danger_wifi 1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/8
IP4.ADDRESS[1]:                         192.168.1.105/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 600
IP4.ROUTE[2]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 600
IP4.ROUTE[3]:                           dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]:                             192.168.0.1
IP4.DNS[2]:                             192.168.1.1
IP6.ADDRESS[1]:                         fe80::d23:93de:8e39:5146/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 600

四、IP、Netmask、Gateway

1.IP

IP地址的长度为32位(共有2^32个IP地址),分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。

IP地址可分两部分组成,一部分为网络地址,另一部分为主机地址。

IP地址有:

A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255

网络号是网段中的第一个地址, 广播地址是网段中的最后一个地址,这两个地址是不能配置在计算机主机上的。

主机号全为1时表示该网络 广播地址,全为0时表示该网络的 网络号。

例如在192.168.0.0,255.255.255.0这样的 网段中,网络号是192.168.0.0, 广播地址是192.168.0.255。
主机地址就只有192.168.0.1至192.168.0.254可以配置在计算机上了。

2.Netmask

子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成 网络地址和 主机地址两部分。

子网掩码的长度也是32位,左边是网络位,用 二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。

对于A类地址来说,默认的子网掩码是255.0.0.0;
对于B类地址来说默认的子网掩码是255. 255.0.0;
对于C类地址来说默认的子网掩码是255.255.255.0。

3.Gateway

网关(Gateway)就是一个网络连接到另一个网络的“关口”。

一个用于 TCP/IP 协议的 配置项,是一个可直接到达的 IP 路由器的 IP 地址。
默认 网关的意思是一台 主机如果找不到可用的网关,就把 数据包发给默认指定的 网关,由这个网关来处理数据包。

现在 主机使用的网关,一般指的是默认网关。

比如有网络A和网络B,网络A的IP 地址范围为 "192.168.1.1~192. 168.1.254", 子网掩码为 255.255.255.0;网络B的IP地址范围为 “192.168.2.1~192.168.2.254”,子网掩码为 255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台 交换机(或 集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的 主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过 网关。

如果网络A中的 主机发现 数据包的目的主机不在本地网络中,就把数据包转发给它自己的 网关,再由 网关转发给网络B的 网关,网络B的网关再转发给网络B的某个主机。

网关的IP地址是具有 路由功能的设备的IP地址,具有路由功能的设备有 路由器、启用了 路由协议的服务器(实质上相当于一台路由器)、 代理服务器(也相当于一台路由器)。

如果没有匹配就使用 default(0.0.0.0)。