14
2019
05
12:50:41

ip route 命令详解

ip route 命令详解

linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。

Net tools vs Iproute2

Net tools vs Iproute2

要安装ip,请点击这里下载iproute2套装工具 。不过,大多数Linux发行版已经预装了iproute2工具。

你也可以使用git命令来下载最新源代码来编译:


  1. git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/shemminger/iproute2.git

iproute2 git clone

iproute2 git clone

设置和删除Ip地址

要给你的机器设置一个IP地址,可以使用下列ip命令:


  1. sudo ip addr add 192.168.0.193/24 dev wlan0

请注意IP地址要有一个后缀,比如/24。这种用法用于在无类域内路由选择(CIDR)中来显示所用的子网掩码。在这个例子中,子网掩码是255.255.255.0。

在你按照上述方式设置好IP地址后,需要查看是否已经生效。


  1. ip addr show wlan0

set ip address

set ip address

你也可以使用相同的方式来删除IP地址,只需用del代替add。


  1. sudo ip addr del 192.168.0.193/24 dev wlan0

delete ip address

delete ip address

列出路由表条目

ip命令的路由对象的参数还可以帮助你查看网络中的路由数据,并设置你的路由表。第一个条目是默认的路由条目,你可以随意改动它。

在这个例子中,有几个路由条目。这个结果显示有几个设备通过不同的网络接口连接起来。它们包括WIFI、以太网和一个点对点连接。


  1. ip route show

ip route show

ip route show

假设现在你有一个IP地址,你需要知道路由包从哪里来。可以使用下面的路由选项(译注:列出了路由所使用的接口等):


  1. ip route get 10.42.0.47

ip route get

ip route get

更改默认路由

要更改默认路由,使用下面ip命令:


  1. sudo ip route add default via 192.168.0.196

default route

default route

显示网络统计数据

使用ip命令还可以显示不同网络接口的统计数据。

ip statistics all interfaces

ip statistics all interfaces

当你需要获取一个特定网络接口的信息时,在网络接口名字后面添加选项ls即可。使用多个选项-s会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。


  1. ip --link ls p2p1

ip link statistics

ip link statistics

ARP条目

地址解析协议(ARP)用于将一个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使用ip命令的neigh或者neighbour选项,你可以查看接入你所在的局域网的设备的MAC地址。


  1. ip neighbour

ip neighbour

ip neighbour

监控netlink消息

也可以使用ip命令查看netlink消息。monitor选项允许你查看网络设备的状态。比如,所在局域网的一台电脑根据它的状态可以被分类成REACHABLE或者STALE。使用下面的命令:


  1. ip monitor all

ip monitor all

ip monitor all

激活和停止网络接口

你可以使用ip命令的up和down选项来激某个特定的接口,就像ifconfig的用法一样。

在这个例子中,当ppp0接口被激活和在它被停止和再次激活之后,你可以看到相应的路由表条目。这个接口可能是wlan0或者eth0。将ppp0更改为你可用的任意接口即可。


  1. sudo ip link set ppp0 down

  2.  

  3. sudo ip link set ppp0 up

ip link set up and down

ip link set up and down

获取帮助

当你陷入困境,不知道某一个特定的选项怎么用的时候,你可以使用help选项。man页面并不会提供许多关于如何使用ip选项的信息,因此这里就是获取帮助的地方。

比如,想知道关于route选项更多的信息:


  1. ip route help

ip route help

ip route help

小结

对于网络管理员们和所有的Linux使用者们,ip命令是必备工具。是时候抛弃ifconfig命令了,特别是当你写脚本时。






linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。

Net tools vs Iproute2

Net tools vs Iproute2

要安装ip,请点击这里下载iproute2套装工具 。不过,大多数Linux发行版已经预装了iproute2工具。

你也可以使用git命令来下载最新源代码来编译:


  1. git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/shemminger/iproute2.git

iproute2 git clone

iproute2 git clone

设置和删除Ip地址

要给你的机器设置一个IP地址,可以使用下列ip命令:


  1. sudo ip addr add 192.168.0.193/24 dev wlan0

请注意IP地址要有一个后缀,比如/24。这种用法用于在无类域内路由选择(CIDR)中来显示所用的子网掩码。在这个例子中,子网掩码是255.255.255.0。

在你按照上述方式设置好IP地址后,需要查看是否已经生效。


  1. ip addr show wlan0

set ip address

set ip address

你也可以使用相同的方式来删除IP地址,只需用del代替add。


  1. sudo ip addr del 192.168.0.193/24 dev wlan0

delete ip address

delete ip address

列出路由表条目

ip命令的路由对象的参数还可以帮助你查看网络中的路由数据,并设置你的路由表。第一个条目是默认的路由条目,你可以随意改动它。

在这个例子中,有几个路由条目。这个结果显示有几个设备通过不同的网络接口连接起来。它们包括WIFI、以太网和一个点对点连接。


  1. ip route show

ip route show

ip route show

假设现在你有一个IP地址,你需要知道路由包从哪里来。可以使用下面的路由选项(译注:列出了路由所使用的接口等):


  1. ip route get 10.42.0.47

ip route get

ip route get

更改默认路由

要更改默认路由,使用下面ip命令:


  1. sudo ip route add default via 192.168.0.196

default route

default route

显示网络统计数据

使用ip命令还可以显示不同网络接口的统计数据。

ip statistics all interfaces

ip statistics all interfaces

当你需要获取一个特定网络接口的信息时,在网络接口名字后面添加选项ls即可。使用多个选项-s会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。


  1. ip --link ls p2p1

ip link statistics

ip link statistics

ARP条目

地址解析协议(ARP)用于将一个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使用ip命令的neigh或者neighbour选项,你可以查看接入你所在的局域网的设备的MAC地址。


  1. ip neighbour

ip neighbour

ip neighbour

监控netlink消息

也可以使用ip命令查看netlink消息。monitor选项允许你查看网络设备的状态。比如,所在局域网的一台电脑根据它的状态可以被分类成REACHABLE或者STALE。使用下面的命令:


  1. ip monitor all

ip monitor all

ip monitor all

激活和停止网络接口

你可以使用ip命令的up和down选项来激某个特定的接口,就像ifconfig的用法一样。

在这个例子中,当ppp0接口被激活和在它被停止和再次激活之后,你可以看到相应的路由表条目。这个接口可能是wlan0或者eth0。将ppp0更改为你可用的任意接口即可。


  1. sudo ip link set ppp0 down

  2.  

  3. sudo ip link set ppp0 up

ip link set up and down

ip link set up and down

获取帮助

当你陷入困境,不知道某一个特定的选项怎么用的时候,你可以使用help选项。man页面并不会提供许多关于如何使用ip选项的信息,因此这里就是获取帮助的地方。

比如,想知道关于route选项更多的信息:


  1. ip route help

ip route help

ip route help

小结

对于网络管理员们和所有的Linux使用者们,ip命令是必备工具。是时候抛弃ifconfig命令了,特别是当你写脚本时。


出处:https://blog.csdn.net/kevin3101/article/details/52368860


补充:


问题抛出

有三台主机: 
A1(双网卡192.168.99.50 &&192.168.106.231) 
A2(单网卡192.168.106.230) 
B (单网卡192.168.100.68) 
网络连通状况: 
A2—-A1 可以互访,因为是在同一局域网192.168.106.0/24。 
A2—-B可以互访,两台主机都是单网卡,走默认路由。 
192.168.99.0/24网段和192.168.100.0/24网段网络不连通。 
192.168.106.0/24和192.168.100.0/24网段可以通过192.168.200.0网络互通。

问题来了:A1和A2都在同一网段192.168.106.0/24,为何A2和B可以互访,而A1和B主机不能互访?


问题分析

先看各主机路由信息:

A1:

[root@dras-test mycat]# netstat -rKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.99.0    *               255.255.255.0   U     1      0        0 em1192.168.25.0    *               255.255.255.0   U     1      0        0 p3p1192.168.106.0   *               255.255.255.0   U     1      0        0 em2default         192.168.99.250  0.0.0.0         UG    0      0        0 em1
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

A2:

[root@localhost bin]# netstat -rKernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Ifacedefault         gateway         0.0.0.0         UG        0 0          0 em1192.168.106.0   0.0.0.0         255.255.255.0   U         0 0          0 em1192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

B:

[root@localhost local]# netstat -rKernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Ifacedefault         gateway         0.0.0.0         UG        0 0          0 ens192192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 ens192192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

A1ping不通B的原因:

在主机A1 ping 主机B时,因为没有指定目的地为192.168.100.0的路由信息,所以A1执行ping 192.168.100.68时走默认路由192.168.99.250,而99.0/24网段和100.0/24网段是不通的,所以A1ping 主机B 失败。

A2可以ping通B的原因:

在主机A2 ping 主机B时,也没有指定目的地为192.168.100.0的路由信息,所以A2执行ping 192.168.100.68时走默认路由em1网络接口(即192.168.106.0),而192.168.106.0/24和192.168.100.0/24网段可以通过192.168.200.0网络互通,所以A2ping 主机B 可以成功。

因此可得解决办法:

在192.168.99.50主机上为目的地为主机192.168.100.68(或者网络192.168.100.0/24)添加静态路由,使其走网络接口em2,即可ping通192.168.100.68。

如下,在主机A2上执行:

[root@dras-test mycat]# route add -net 192.168.100.0/24 dev em2[root@dras-test mycat]# [root@dras-test mycat]# [root@dras-test mycat]# routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.100.0   *               255.255.255.0   U     0      0        0 em2192.168.99.0    *               255.255.255.0   U     1      0        0 em1192.168.25.0    *               255.255.255.0   U     1      0        0 p3p1192.168.106.0   *               255.255.255.0   U     1      0        0 em2default         192.168.99.250  0.0.0.0         UG    0      0        0 em1[root@dras-test mycat]# ping 192.168.100.68PING 192.168.100.68 (192.168.100.68) 56(84) bytes of data.64 bytes from 192.168.100.68: icmp_seq=1 ttl=61 time=2.86 ms64 bytes from 192.168.100.68: icmp_seq=2 ttl=61 time=0.828 ms
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

到此问题解决。 
以下总结今天学到的添加静态路由的方法。

添加静态路由方法:

一:使用route 命令添加

【 注: 使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了 】

方法:

添加到主机的路由,2种方法

# route add –host 192.168.1.11 dev eth0# route add –host 192.168.1.12 gw 192.168.1.1
  • 1

  • 2

  • 3

添加到网络的路由,3种方法

# route add –net 192.168.1.11 netmask 255.255.255.0 dev eth0# route add –net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1# route add –net 192.168.1.0/24 dev eth1
  • 1

  • 2

  • 3

添加默认网关

# route add default gw 192.168.2.1
  • 1

//删除路由

# route del –host 192.168.1.11 dev eth0
  • 1

二、使用ip命令来添加、删除路由

ip route add default via 172.16.10.2 dev eth0ip route add 172.16.1.0/24 via 172.16.10.2 dev eth0




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/716.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: