您的当前位置:首页正文

linux命令总结之ip命令

2023-09-26 来源:好走旅游网
linux命令总结之ip命令

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

要安装ip,请下载iproute2套装⼯具 。不过,⼤多数Linux发⾏版已经预装了iproute2⼯具。你也可以使⽤git命令来下载最新源代码来编译:

$ git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/shemminger/iproute2.git设置和删除Ip地址

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

[root@Gin scripts]# ip addr add 192.168.17.30/24 dev eth0[root@Gin scripts]# ip addr

1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:84:0c:21 brd ff:ff:ff:ff:ff:ff

inet 192.168.17.129/24 brd 192.168.17.255 scope global eth0 inet 192.168.17.30/24 scope global secondary eth0 inet6 fe80::20c:29ff:fe84:c21/64 scope link valid_lft forever preferred_lft forever

请注意IP地址要有⼀个后缀,⽐如/24。这种⽤法⽤于在⽆类域内路由选择(CIDR)中来显⽰所⽤的⼦⽹掩码。在这个例⼦中,⼦⽹掩码是255.255.255.0。

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

[root@Gin scripts]# ip addr del 192.168.17.30/24 dev eth0[root@Gin scripts]# ip addr

1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:84:0c:21 brd ff:ff:ff:ff:ff:ff

inet 192.168.17.129/24 brd 192.168.17.255 scope global eth0 inet6 fe80::20c:29ff:fe84:c21/64 scope link valid_lft forever preferred_lft forever列出路由表条⽬

ip命令的路由对象的参数还可以帮助你查看⽹络中的路由数据,并设置你的路由表。第⼀个条⽬是默认的路由条⽬,你可以随意改动它。在这个例⼦中,有⼏个路由条⽬。这个结果显⽰有⼏个设备通过不同的⽹络接⼝连接起来。它们包括WIFI、以太⽹和⼀个点对点连接。[root@Gin scripts]# ip route show

192.168.17.0/24 dev eth0 proto kernel scope link src 192.168.17.129 169.254.0.0/16 dev eth0 scope link metric 1002 default via 192.168.17.2 dev eth0

假设现在你有⼀个IP地址,你需要知道路由包从哪⾥来。可以使⽤下⾯的路由选项(译注:列出了路由所使⽤的接⼝等):[root@Gin scripts]# ip route get 192.168.17.130192.168.17.130 dev eth0 src 192.168.17.129 cache mtu 1500 advmss 1460 hoplimit 64更改默认路由

要更改默认路由,使⽤下⾯ip命令:

[root@Gin scripts]# ip route add default via 192.168.17.3显⽰⽹络统计数据

使⽤ip命令还可以显⽰不同⽹络接⼝的统计数据

[root@Gin scripts]# ip -s link

1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped overrun mcast 0 0 0 0 0 0

TX: bytes packets errors dropped carrier collsns 0 0 0 0 0 0

2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:84:0c:21 brd ff:ff:ff:ff:ff:ff

RX: bytes packets errors dropped overrun mcast 135268 1134 0 0 0 0

TX: bytes packets errors dropped carrier collsns 134830 960 0 0 0 0

当你需要获取⼀个特定⽹络接⼝的信息时,在⽹络接⼝名字后⾯添加选项ls即可。使⽤多个选项-s会给你这个特定接⼝更详细的信息。特别是在排除⽹络连接故障时,这会⾮常有⽤。$ ip -s -s link ls p2p1

ARP条⽬

地址解析协议(ARP)⽤于将⼀个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使⽤ip命令的neigh或者neighbour选项,你可以查看接⼊你所在的局域⽹的设备的MAC地址。[root@Gin scripts]# ip neighbour

192.168.17.1 dev eth0 lladdr 00:50:56:c0:00:08 DELAY监控netlink消息

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

[root@Gin scripts]# ip monitor all

[NEIGH]192.168.17.2 dev eth0 lladdr 00:50:56:f3:2d:50 REACHABLE[NEIGH]192.168.17.1 dev eth0 lladdr 00:50:56:c0:00:08 REACHABLE激活和停⽌⽹络接⼝

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

在这个例⼦中,当ppp0接⼝被激活和在它被停⽌和再次激活之后,你可以看到相应的路由表条⽬。这个接⼝可能是wlan0或者eth0。将ppp0更改为你可⽤的任意接⼝即可。$ ip link set eth0 down

$ ip link set eth0 up获取帮助

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

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

[root@Gin scripts]# ip route help

Usage: ip route { list | flush } SELECTOR

ip route get ADDRESS [ from ADDRESS iif STRING ] [ oif STRING ] [ tos TOS ]

ip route { add | del | change | append | replace | monitor } ROUTESELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ] [ table TABLE_ID ] [ 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 := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGSOPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ 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 ]TYPE := [ unicast | local | broadcast | multicast | throw | unreachable | prohibit | blackhole | nat ]

TABLE_ID := [ local | main | default | all | NUMBER ]SCOPE := [ host | link | global | NUMBER ]FLAGS := [ equalize ]

MP_ALGO := { rr | drr | random | wrandom }NHFLAGS := [ onlink | pervasive ]

RTPROTO := [ kernel | boot | static | NUMBER ]TIME := NUMBER[s|ms]⼩结

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

因篇幅问题不能全部显示,请点此查看更多更全内容