Linux命令详解(2)ip命令

之前写的Linux必会100个命令中,ip命令看得人比价多。那就写个更详细的分享下。

ip命令格式:

ip options object {command | help}

options包括:

-V,显示版本

-h,符合人类阅读习惯显示输出

-f,-family {inet, inet6, link} 强制使用指定的协议族

-4,指定使用的网络层协议是IPv4协议
-6,指定使用的网络层协议是IPv6协议

-B,指定使用的网络层协议是Bridge协议

-D,指定使用的网络层协议是decnet协议

-M,指定使用的网络层协议是mpls协议

-0,指定使用的网络层协议是link协议

-i,指定使用的网络层协议是ipx协议

-d,输出更详细的信息

-o,-oneline,输出信息每条记录输出一行,即使内容较多也不换行显示

-r,-resolve,显示主机时,不使用IP地址,而使用主机的域名

-l,-loops,指定“ip地址刷新”的最大循环数。如果设置为0,那么将会一直尝试,直到所哟地址被移除。

-t,-timestamp,当使用监视器选项时,输出时间戳

-a,-all,执行指定命令给所有对象(如果命令支持这个选项)

-c,-color,使用颜色输出

ip command语法:

object包括:

        address:网络设备的IP(v4或者v6)地址信息

        link :网络设备信息

        maddress:多播地址

        mourte:组播路由缓存条目

        monitor:监控网络链接消息

        netns:管理网络命名空间

        ntable:管理邻居表缓存操作

        neighbour:邻居表

        route:路由表

        rule:IP策略

        tunnel:IP隧道

        tuntap:管理tun/tap设备

COMMAND包括:

        add:新增

        delete:删除

        show(or list):显示

        set:设置参数

----------------------------------------------------------------------------------------

address是最常用的option之一

ip address help 获得帮助信息

Linux命令详解(2)ip命令_第1张图片

 例1:显示当前IP地址信息

ip address  或  ip addr

 例2:给设备enp0s8设置ip地址
ip addr add 192.168.1.200/24 dev enp0s8

例3:给设备enp0s8移除ip地址

ip addr delete 192.168.1.200/24 dev enp0s8

Linux命令详解(2)ip命令_第2张图片

 link是针对设备设置的option

例子1:启动一个网络设备

ip link set enp0s8 up

Linux命令详解(2)ip命令_第3张图片

 如图,两块网卡设备,初始状态一个up,一个down。执行命令后,enp0s8状态改变为UP。

例子2:开启混杂模式

ip link set dev enp0s8 promisc on 

例子3:设置MTU值,即设置最大传输单元

ip link set enp0s8 mtu 1000

例子4:设置mac地址

ip link set enp0s8 address a0:0a:b0:0b:c0:0c Linux命令详解(2)ip命令_第4张图片

如图显示,mtu值和link/ether值发生了变化

 例子5:添加一对虚拟网卡

 ip link add  r1-inside type veth peer name r1-outside

Linux命令详解(2)ip命令_第5张图片

 如图,第4和第5个设备是新添加的2个虚拟网卡

route是设置路由相关信息的option

例子1:添加一个缺省网关

ip route add default via  10.0.3.254  dev enp0s8

Linux命令详解(2)ip命令_第6张图片

如图,添加一个新的网关。显示路由表做简要说明如下:

路由第一部分是一个IP或者IPv6地址,也可以跟着一个斜杠掩码长度(如:192.168.0.0/24)。如果没有掩码长度,ip命令就假定是一个单一ip 地址。

dev 是关键字,其后面是网卡的名字

via 关键字,其后面是下一跳路由器的地址。其实就是网关IP。

metric 关键字,其后面跟一个数字,定义路由的优先值。

src 关键字,其后面跟一个IP地址,在向目的发送数据包时,选择的源地址。

proto关键字,其后面是IP地址设置的方式,如:static、dhcp,比较特殊的是kernel。

 例子2:删除一个缺省网关

ip route deletedefault via  10.0.3.254  dev enp0s8

rule是策略路由相关的option

基于策略的路由比传统路由在功能上更强,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。

在linux系统中,一条路由策略rule主要包含三个信息,即rule的优先级条件路由表。其中rule的优先级数字越小表示优先级越高,然后是满足什么条件下由指定的路由表来进行路由。在linux系统启动时,内核会为路由策略数据库配置三条缺省的规则,即rule 0,rule 32766, rule 32767(数字是rule的优先级,0优先级最高),如下:

在linux系统中是按照rule的优先级顺序依次匹配。假设系统中只有优先级为0,32766及32767这三条规则。那么系统首先会根据规则0在本地路由表里寻找路由,如果目的地址是本网络,或是广播地址的话,在这里就可以找到匹配的路由;如果没有找到路由,就会匹配下一个不空的规则,在这里只有32766规则,那么将会在主路由表里寻找路由;如果没有找到匹配的路由,就会依据32767规则,即寻找默认路由表;如果失败,路由将失败。

有3个默认的规则,在/etc/iproute2/rt_table中存储。

255 :local 本地路由表存有本地接口地址,广播地址,已及NAT地址. local表由系统自动维护..管理员不能操作此表...。

254:main 主路由表 传统路由表,ip route若没指定表亦操作表254.一般存所有的路由.. 

253:default  默认路由表一般存放默认路由... 

进行路由时,正是根据路由规则来进行匹配,按优先级从高到低匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的..

语法如下图:

Linux命令详解(2)ip命令_第7张图片 

SELECTOR具体参数如下:

From — 源地址
To — 目的地址(这里是选择规则时使用,查找路由表时也使用)
Tos — IP包头的TOS(type of sevice)域
Dev — 物理接口
Fwmark — 防火墙参数
ACTION动作:

Table 指明所使用的表
Nat 透明网关
Action prohibit 丢弃该包,并发送 COMM.ADM.PROHIITED的ICMP信息
Reject 单纯丢弃该包
Unreachable丢弃该包, 并发送 NET UNREACHABLE的ICMP信息

策略路由一般手工添加路由表,路由表的添加只需编辑rt_tables文件,规定表序号,表名即可.. 

例子:

ip rule add from 192.168.1.112/32 [tos 0x10] table 202 pref 999 prohibit 
ip rule add to 192.168.1.2 pref 1000 table 201
ip rule add from 192.168.1.0/24 pref 1001 table 201
ip rule add [from 0/0] table test1 pref 1003 

写累了,以后再补充

你可能感兴趣的:(Linux(CentOS,Ubuntu),ip命令)