linux IP 命令使用举例

linux IP 命令使用举例

作者

digoal

日期

2016-11-12

标签

Linux , ip , command


背景

ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。

还包括像net namespace的管理,在docker环境中结合veth net设备打通本地和container的网络很常见。

详细的使用见man ip

本文为转载文章

http://blog.csdn.net/radkitty/article/details/3022181

用法格式

ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]

主要参数

1. OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式。目前,ip支持如表1所示选项。

2. OBJECT是要管理者获取信息的对象。目前ip认识的对象见表2所示。

表1 ip支持的选项

-V,-Version 打印ip的版本并退出。
-s,-stats,-statistics 输出更为详尽的信息。如果这个选项出现两次或多次,则输出的信息将更为详尽。
-f,-family 这个选项后面接协议种类,包括inet、inet6或link,强调使用的协议种类。如果没有足够的信息告诉ip使用的协议种类,ip就会使用默认值inet或any。link比较特殊,它表示不涉及任何网络协议。
-4 是-family inet的简写。
-6 是-family inet6的简写。
-0 是-family link的简写。
-o,-oneline 对每行记录都使用单行输出,回行用字符代替。如果需要使用wc、grep等工具处理ip的输出,则会用到这个选项。
-r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址

3. COMMAND 设置针对指定对象执行的操作,它和对象的类型有关。

一般情况下,ip支持对象的增加(add)、删除(delete)和展示(show或list)。有些对象不支持这些操作,或者有其它的一些命令。

对于所有的对象,用户可以使用help命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法。

如果没有指定对象的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能列出,就会执行help命令。

4. ARGUMENTS 是命令的一些参数,它们倚赖于对象和命令。

ip支持两种类型的参数:flag和parameter。

flag由一个关键词组成;parameter由一个关键词加一个数值组成。

为了方便,每个命令都有一个可以忽略的默认参数。

例如,参数dev是ip link命令的默认参数,因此ip link ls eth0等于ip link ls dev eth0。

我们将在后面的详细介绍每个命令的使用,命令的默认参数将使用default标出。

4.1 ip link set --改变设备的属性. 缩写:set、s

示例1:up/down 起动/关闭设备。

# ip link set dev eth0 up

这个等于传统的 # ifconfig eth0 up(down)

示例2:改变设备传输队列的长度。

参数:txqueuelen NUMBER或者txqlen NUMBER

# ip link set dev eth0 txqueuelen 100

示例3:改变网络设备MTU(最大传输单元)的值。

# ip link set dev eth0 mtu 1500

示例4: 修改网络设备的MAC地址。

参数: address LLADDRESS

# ip link set dev eth0 address 00:01:4f:00:15:f1

4.2 ip link show --显示设备属性. 缩写:show、list、lst、sh、ls、l

-s选项出现两次或者更多次,ip会输出更为详细的错误信息统计。

示例:

# ip -s -s link ls eth0    

eth0: mtu 1500 qdisc cbq qlen 100    

link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff    

RX: bytes packets errors dropped overrun mcast    

2449949362 2786187 0 0 0 0    

RX errors: length crc frame fifo missed    

0 0 0 0 0    

TX: bytes packets errors dropped carrier collsns    

178558497 1783946 332 0 332 35172    

TX errors: aborted fifo window heartbeat    

0 0 0 332

这个命令等于传统的 ifconfig eth0

5.1 ip address add --添加一个新的协议地址. 缩写:add、a

示例1:为每个地址设置一个字符串作为标签。为了和Linux-2.0的网络别名兼容,这个字符串必须以设备名开头,接着一个冒号,

# ip addr add local 192.168.4.1/28 brd + label eth0:1 dev eth0

示例2: 在以太网接口eth0上增加一个地址192.168.20.0,掩码长度为24位(155.155.155.0),标准广播地址,标签为eth0:Alias:

# ip addr add 192.168.4.2/24 brd + dev eth1 label eth1:1

这个命令等于传统的: ifconfig eth1:1 192.168.4.2

5.2 ip address delete --删除一个协议地址. 缩写:delete、del、d

# ip addr del 192.168.4.1/24 brd + dev eth0 label eth0:Alias1

5.3 ip address show --显示协议地址. 缩写:show、list、lst、sh、ls、l

# ip addr ls eth0

5.4. ip address flush --清除协议地址. 缩写:flush、f

示例1 : 删除属于私网10.0.0.0/8的所有地址:

# ip -s -s a f to 10/8

示例2 : 取消所有以太网卡的IP地址

# ip -4 addr flush label "eth0"

6. ip neighbour--neighbour/arp表管理命令

缩写 neighbour、neighbor、neigh、n

命令 add、change、replace、delete、fulsh、show(或者list)

6.1 ip neighbour add -- 添加一个新的邻接条目

ip neighbour change --修改一个现有的条目

ip neighbour replace --替换一个已有的条目

缩写:add、a;change、chg;replace、repl

示例1: 在设备eth0上,为地址10.0.0.3添加一个permanent ARP条目:

# ip neigh add 10.0.0.3 lladdr 0:0:0:0:0:1 dev eth0 nud perm

示例2:把状态改为reachable

# ip neigh chg 10.0.0.3 dev eth0 nud reachable

6.2.ip neighbour delete--删除一个邻接条目

示例1:删除设备eth0上的一个ARP条目10.0.0.3

# ip neigh del 10.0.0.3 dev eth0

6.3.ip neighbour show--显示网络邻居的信息. 缩写:show、list、sh、ls

示例1:

# ip -s n ls 193.233.7.254    

193.233.7.254. dev eth0 lladdr 00:00:0c:76:3f:85 ref 5 used 12/13/20 nud reachable

6.4.ip neighbour flush--清除邻接条目. 缩写:flush、f

示例1: (-s 可以显示详细信息)

# ip -s -s n f 193.233.7.254

7. 路由表管理

7.1. 缩写 route、ro、r

7.1. 路由表

从Linux-2.2开始,内核把路由归纳到许多路由表中,这些表都进行了编号,编号数字的范围是1到255。另外,

为了方便,还可以在/etc/iproute2/rt_tables中为路由表命名。

默认情况下,所有的路由都会被插入到表main(编号254)中。在进行路由查询时,内核只使用路由表main。

7.3. ip route add -- 添加新路由

ip route change -- 修改路由

ip route replace -- 替换已有的路由

缩写:add、a;change、chg;replace、repl

示例1: 设置到网络10.0.0/24的路由经过网关193.233.7.65

# ip route add 10.0.0/24 via 193.233.7.65

示例2: 修改到网络10.0.0/24的直接路由,使其经过设备dummy

# ip route chg 10.0.0/24 dev dummy

示例3: 实现链路负载平衡.加入缺省多路径路由,让ppp0和ppp1分担负载(注意:scope值并非必需,它只不过是告诉内核,

这个路由要经过网关而不是直连的。实际上,如果你知道远程端点的地址,使用via参数来设置就更好了)。

# ip route add default scope global nexthop dev ppp0 nexthop dev ppp1    

# ip route replace default scope global nexthop dev ppp0 nexthop dev ppp1

示例4: 设置NAT路由。在转发来自192.203.80.144的数据包之前,先进行网络地址转换,把这个地址转换为193.233.7.83

# ip route add nat 192.203.80.142 via 193.233.7.83

示例5: 实现数据包级负载平衡,允许把数据包随机从多个路由发出。weight 可以设置权重.

# ip route replace default equalize nexthop via 211.139.218.145 dev eth0 weight 1 nexthop via 211.139.218.145 dev eth1 weight 1

7.4. ip route delete-- 删除路由

缩写:delete、del、d

示例1:删除上一节命令加入的多路径路由

# ip route del default scope global nexthop dev ppp0 nexthop dev ppp1

7.5. ip route show -- 列出路由

缩写:show、list、sh、ls、l

示例1: 计算使用gated/bgp协议的路由个数

# ip route ls proto gated/bgp |wc    

1413 9891 79010

示例2: 计算路由缓存里面的条数,由于被缓存路由的属性可能大于一行,以此需要使用-o选项

# ip -o route ls cloned |wc    

159 2543 18707

示例3: 列出路由表TABLEID里面的路由。缺省设置是table main。TABLEID或者是一个真正的路由表ID或者是/etc/iproute2/rt_tables文件定义的字符串,

或者是以下的特殊值:

all -- 列出所有表的路由;

cache -- 列出路由缓存的内容。

ip ro ls 193.233.7.82 tab cache

示例4: 列出某个路由表的内容

# ip route ls table fddi153

示例5: 列出默认路由表的内容

# ip route ls

这个命令等于传统的: route

7.6. ip route flush -- 擦除路由表

示例1: 删除路由表main中的所有网关路由(示例:在路由监控程序挂掉之后):

# ip -4 ro flush scope global type unicast

示例2:清除所有被克隆出来的IPv6路由:

# ip -6 -s -s ro flush cache

示例3: 在gated程序挂掉之后,清除所有的BGP路由:

# ip -s ro f proto gated/bgp

示例4: 清除所有ipv4路由cache

# ip route flush cache    

*** IPv4 routing cache is flushed.

7.7 ip route get -- 获得单个路由 .缩写:get、g

使用这个命令可以获得到达目的地址的一个路由以及它的确切内容。

ip route get命令和ip route show命令执行的操作是不同的。ip route show命令只是显示现有的路由,而ip route get命令在必要时会派生出新的路由。

示例1: 搜索到193.233.7.82的路由

# ip route get 193.233.7.82    

193.233.7.82 dev eth0 src 193.233.7.65 realms inr.ac cache mtu 1500 rtt 300

示例2: 搜索目的地址是193.233.7.82,来自193.233.7.82,从eth0设备到达的路由(这条命令会产生一条非常有意思的路由,这是一条到193.233.7.82的回环路由)

# ip r g 193.233.7.82 from 193.233.7.82 iif eth0    

193.233.7.82 from 193.233.7.82 dev eth0 src 193.233.7.65 realms inr.ac/inr.ac    

cache <src-direct,redirect> mtu 1500 rtt 300 iif eth0

8. ip route -- 路由策略数据库管理命令

命令

add、delete、show(或者list)

注意:策略路由(policy routing)不等于路由策略(rouing policy)。

在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些域:源地址、IP协议、传输层端口甚至数据包的负载。

这就叫做:策略路由(policy routing)。

8.1. ip rule add -- 插入新的规则

ip rule delete -- 删除规则

缩写:add、a;delete、del、d

示例1: 通过路由表inr.ruhep路由来自源地址为192.203.80/24的数据包

ip ru add from 192.203.80/24 table inr.ruhep prio 220

示例2:把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144,并通过表1进行路由

ip ru add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320

示例3:删除无用的缺省规则

ip ru del prio 32767

8.2. ip rule show -- 列出路由规则

缩写:show、list、sh、ls、l

示例1:

# ip ru ls    

0: from all lookup local    

32762: from 192.168.4.89 lookup fddi153    

32764: from 192.168.4.88 lookup fddi153    

32766: from all lookup main    

32767: from all lookup 253

9. ip maddress -- 多播地址管理

缩写:show、list、sh、ls、l

9.1.ip maddress show -- 列出多播地址

示例1:

# ip maddr ls dummy

9.2. ip maddress add -- 加入多播地址

ip maddress delete -- 删除多播地址

缩写:add、a;delete、del、d

使用这两个命令,我们可以添加/删除在网络接口上监听的链路层多播地址。这个命令只能管理链路层地址。

示例1: 增加

# ip maddr add 33:33:00:00:00:01 dev dummy

示例2: 查看

# ip -O maddr ls dummy

2: dummy

link 33:33:00:00:00:01 users 2 static    

link 01:00:5e:00:00:01

示例3: 删除

# ip maddr del 33:33:00:00:00:01 dev dummy

10. ip mroute -- 多播路由缓存管理

10.1. ip mroute show -- 列出多播路由缓存条目

缩写:show、list、sh、ls、l

示例1:查看

# ip mroute ls    

(193.232.127.6, 224.0.1.39) Iif: unresolved    

(193.232.244.34, 224.0.1.40) Iif: unresolved    

(193.233.7.65, 224.66.66.66) Iif: eth0 Oifs: pimreg

示例2:查看

# ip -s mr ls 224.66/16    

(193.233.7.65, 224.66.66.66) Iif: eth0 Oifs: pimreg    

9383 packets, 300256 bytes

11. ip tunnel -- 通道配置

缩写

tunnel、tunl

ip tunnel add -- 添加新的通道    

ip tunnel change -- 修改现有的通道    

ip tunnel delete -- 删除一个通道

缩写:add、a;change、chg;delete、del、d

示例1:建立一个点对点通道,最大TTL是32

# ip tunnel add Cisco mode sit remote 192.31.7.104 local 192.203.80.1 ttl 32

11.1. ip tunnel show -- 列出现有的通道

缩写:show、list、sh、ls、l

示例1:

# ip -s tunl ls Cisco

12. ip monitor和rtmon -- 状态监视

ip命令可以用于连续地监视设备、地址和路由的状态。这个命令选项的格式有点不同,命令选项的名字叫做monitor,接着是操作对象:

ip monitor [ file FILE ] [ all | OBJECT-LIST ]

示例1: # rtmon file /var/log/rtmon.log

示例2: # ip monitor file /var/log/rtmon.log r

时间: 2024-08-31 14:18:36

linux IP 命令使用举例的相关文章

linux ip命令和ifconfig命令

From: http://blog.jobbole.com/97270/ From: https://linux.cn/article-3144-1.html From: http://chrinux.blog.51cto.com/6466723/1188108 From: http://www.linuxdiyf.com/linux/23935.html net-tools 和 iproute2 对比         如今很多系统管理员依然通过组合使用诸如ifconfig.route.arp和

linux wc命令应用举例

  在Linux下用wc进行计数.返回文件的行数.字数.字节数等. 例如: 代码如下: wc wc1.txt 3 5 16 wc1.txt 输出信息依次:行数 字数 字节数 文件名称.再具体点,单个统计. 复制代码 代码如下: #wc -m filename:显示一个文件的字符数 #wc -l filename:显示一个文件的行数 #wc -L filename:显示一个文件中的最长行的长度 #wc -w filename:显示一个文件的字数 注意:貌似wc统计的行算是用换行符来确定的.就是说最

试试Linux下的ip命令,ifconfig已经过时了

试试Linux下的ip命令,ifconfig已经过时了 linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了.iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一. Net tools vs Iproute2 要安装ip,请点击这里下载iproute2套装工具 .不过,大多数Linux发行版已经预装了ipr

基于iproute命令集配置Linux网络(ip命令)

iproute是Linux下一个网络管理工具包合集,用于取代先前的如ifconfig,route,ifup,ifdown,netstat等历史网络管理工具.该工具包功能强大,它通过网络链路套接字接口与内核进行联系.iproute的用户界面比net-tools的用户界面要更直观.对网络资源比如链路.IP地址.路由和隧道等用"对象"抽象进行了恰当的定义,因此可以使用一致的语法来管理不同的对象.本文主要描述使用该工具包的ip命令来配置Linux网络. 一.iproute工具包集 查看ipro

举例说明Linux diff 命令

在比较文件的时候,通常会用基于GUI的软件.很少有人真正会为了这个目的使用命令行工具.虽然说使用命令行来比较文件/目录并不像一件小事儿那样容易,但是如果你是一个Linux使用者,那么我想你应该知道如何通过命令行比较文件,因为一旦使用了它,你会认为它绝对是一个快速的方法. 在本篇中,我们将通过一些实例来学习如何使用diff命令. Linux diff 命令 让我们通过一些实际的例子理解diff命令. 假设我们有两个文件(file1 和 file2): $ cat file1 Hi, Hello,

Linux在命令行下列出本机IP地址,而不是得到网卡信息

Linux在命令行下列出本机IP地址,而不是得到网卡信息 ifconfig | grep "inet" | cut -c 0-36 | sed -e 's/[a-zA-Z: ]//g'hosthttp://www.aliyun.com/zixun/aggregation/11696.html">name - i

linux下ip命令用法

配置数据转发,可以通过 1.路由转发即用用路由器实现: 2.使用NAT转发: 简单的说: 路由表内的信息只是指定数据包在路由器内的下一个去处.并不能改变数据包本身的地址信息.即它只是"换条路而已,目的地不变": 而地址转换是把数据包来时的地址转换成可以上网的IP地址,这样才能通过验证使主机到INTERNET可达.即"换掉目的地": 设置和删除Ip地址 设置一个IP地址,可以使用下列ip命令: # ip addr add 192.168.0.193/24 dev wl

linux常用命令加实例大全

目  录引言    1一.安装和登录    2(一)    login    2(二)    shutdown    2(三)    halt    3(四)    reboot    3(五)    install    4(六)    mount    4(七)    umount    6(八)    chsh    6(九)    exit    7(十)    last    7(十一)    动手练习    7二.文件处理    9(一)    file    9(二)    mkd

你必须了解的基础的Linux网络命令

摘要:有抱负的 Linux 系统管理员和 Linux 狂热者必须知道的.最重要的.而且基础的 Linux 网络命令合集. 在 It's FOSS 我们并非每天都谈论 Linux 的"命令行方面".基本上,我更专注于 Linux 的桌面端.但你们读者中的一些人在内部调查(仅面向 It's FOSS newsletter 订阅者)中指出,你们也想学些命令行技巧.速查表也受大部分读者所喜欢和支持. 为此,我编辑了一个 Linux 中基础网络命令的列表.它并不是一个教你如何使用这些命令的教程,