之前写的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 获得帮助信息
例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
link是针对设备设置的option
例子1:启动一个网络设备
ip link set enp0s8 up
如图,两块网卡设备,初始状态一个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
如图显示,mtu值和link/ether值发生了变化
例子5:添加一对虚拟网卡
ip link add r1-inside type veth peer name r1-outside
如图,第4和第5个设备是新添加的2个虚拟网卡
route是设置路由相关信息的option
例子1:添加一个缺省网关
ip route add default via 10.0.3.254 dev enp0s8
如图,添加一个新的网关。显示路由表做简要说明如下:
路由第一部分是一个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 默认路由表一般存放默认路由...
进行路由时,正是根据路由规则来进行匹配,按优先级从高到低匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的..
语法如下图:
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
写累了,以后再补充