码迷,mamicode.com
首页 > 系统相关 > 详细

linux网络概述

时间:2018-11-12 11:26:36      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:proc   网络   uil   映射   纠正   高速缓存   org   rap   ali   

一、TCP/IP协议栈和OSI协议栈

摘抄和参考博文地址:
参考博文地址1
参考博文地址2
参考博文地址3
参考博文地址4

1.1、OSI协议栈

  OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
请看下面几幅图:
技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

  • 物理层(Physical Layer)
    传输数据格式:比特(bit)流;
    主要功能和连接方式:建立、维护和取消物理连接;
    典型设备:光纤、同轴电缆、双绞线、网卡、中继器、集线器等;
    说明:在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。物理层的主要功能是,利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。"透明传送比特流"表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

  • 数据链路层(Data Link Layer)
    传输数据格式: 将比特信息封装成数据帧(Frame);
    主要功能和连接方式:在物理层上建立、撤销、标识逻辑链接和链路复用 以及差错校验等功能。通过使用接收系统的硬件地址或物理地址来寻址;
    典型设备:网桥、交换机;
    说明:数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路。该层的主要功能是通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
    该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
    MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;
    LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
    数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。

  • 网络层(Network Layer)
    传输数据格式:分割和重新组合数据包(Packet);
    主要功能和连接方式:基于网络层地址(IP地址)进行不同网络系统间的路径选择
    典型设备:网关、路由器;
    说明:网络层(Network Layer)是OSI模型的第三层,它是OSI参考模型中最复杂的一层。其主要任务是通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。
    在实现网络层功能时,需要解决的主要问题如下:
    寻址:数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)。
    交换:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术。
    路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。
    连接服务:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。

  • 传输层(Transport Layer)
    传输数据格式:数据组织成数据段(Segment);
    主要功能和连接方式: 用一个寻址机制来标识一个特定的应用程序(端口号);
    典型设备:终端设备(PC、手机、平板等);
    说明:OSI下3层的主要任务是数据通信,上3层的任务是数据处理。而传输层(Transport Layer)是OSI模型的第4层。因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。该层的主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。
    传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。综上,传输层的主要功能详解:
    传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。
    处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。
    监控服务质量。

  • 会话层(Session Layer)
    传输数据格式:数据DTPU;
    主要功能和连接方式:会话层连接到传输层的映射;会话连接的流量控制;数据传输;会话连接恢复与释放;会话连接管理、差错控制;
    典型设备:终端设备(PC、手机、平板等);
    说明:会话层(Session Layer)是OSI模型的第5层,是用户应用程序和网络之间的接口,主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。用户可以按照半双工、单工和全双工的方式建立会话。当建立会话时,用户必须提供他们想要连接的远程地址。而这些地址与MAC(介质访问控制子层)地址或网络层的逻辑地址不同,它们是为用户专门设计的,更便于用户记忆。域名(DN)就是一种网络上使用的远程地址。会话层的具体功能详解:
    会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。
    会话流量控制:提供会话流量控制和交叉会话功能。
    寻址:使用远程地址建立会话连接。l
    出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等类型的高级错误。

  • 表示层(Presentation Layer)
    传输数据格式:数据PTPU;
    主要功能和连接方式:数据表示、数据安全、数据压缩;
    典型设备:终端设备(PC、手机、平板等);
    说明:表示层(Presentation Layer)是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。表示层的具体功能如下:
    数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
    数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
    压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
    数据的加密和解密:可以提高网络的安全性。

  • 应用层(Application Layer)
    传输数据格式:数据ATPU;
    主要功能和连接方式:网络服务与使用者应用程序间的一个接口;
    典型设备:终端设备(PC、手机、平板等);
    说明:应用层(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
    应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。应用层的主要功能如下:
    用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
    实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。

总结:
OSI七层模型太过于理想化,现实的生产环境下比较少用上,大部分实际应用都是按照TCP/IP协议栈来设计实现。
在7层模型中,每一层都提供一个特殊的网络功能。从网络功能的角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。

1.2、TCP/IP协议栈

TCP/IP协议栈,有些人理解为5层,有些人理解为4层。其实这两种理解都不为错,本身TCP/IP协议分层接口就不太规范,是比较实用的一种规范。请看对应图解:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

具体对应层的实现功能可以参照OSI的模型。简单来说TCP/IP就分为4层,第一层最底层是物理层,第二层是网络层,第三层是传输层,第四层是应用层。就其通信细节来讲,物理层实现底层的细节控制,网络层主要用来标识网络主机,设备网络地址(逻辑地址,ipv4,ipv6),一个ip可以用来标识一个主机。而传输层,主要是用来做传输控制,比如可靠传输,高效传输,重点是可以标识进程地址(识别端口),这样一来结合网络层的ip和应用层的端口就可以用来标识一个特定主机特定服务的进程地址,而应用层就是具体的应用协议的实现。

1.3、5类ipv4地址

IP地址是一种逻辑地址,它与MAC地址有所不同。它的构成:
IP(Internet protocol)地址:网络号+主机号
Ipv4由32位组成,而且每8位为一段,构成4段8位,每段通常用对应二进制的十进制数字表示,所以通常ipv4地址的格式也叫"点分十进制格式"。如果8位二进制,其取值范围为00000000~11111111,其对应十进制表示为0~255.
所以电分十进制范围为:
0.0.0.0~255.255.255.255

不过为了规范使用地址,对地址应用做来分类,分为5类,分别是A类,B类,C类,D类,E类。
A类:
第一段为网络号,后三段为主机号
网络号:
0 000 0000 - 0 111 1111:1-127
网络数量:126,127
每个网络中的主机数量:2^24-2
默认子网掩码:255.0.0.0,/8
用于与IP地址按位进行“与”运算,从而取出其网络地址;
1.3.2.1/255.0.0.0 = 1.0.0.0
1.3.2.1/255.255.0.0= 1.3.0.0
私网地址:10.0.0.0/255.0.0.0
B类:
前两段为网络号,后两段为主机号
网络号:
10 00 0000 - 10 11 1111:128-191
网络数:2^14
每个网络中的主机数量:2^16-2
默认子网掩码:255.255.0.0,/16
私网地址:172.16.0.0-172.31.0.0
C类:
前三段为网络号,最后一段为主机号
网络号:
110 0 0000 - 110 1 1111:192-223
网络数:2^21
每个网络中的主机数量:2^8-2
默认子网掩码:255.255.255.0, /24
D类:组播
1110 0000 - 1110 1111:224-239
E类:科研
240-255

示例:使用until和while分别实现192.168.56.0/24 网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"

[root@localhost ~]# cat while.sh 
#! /bin/bash
string=192.168.56
i=1
while [ $i -le 255 ]
do
    if ping -b -c 2 ${string}.${i} &>/dev/null;then
        echo "[${string}.${i}]: success!"
    else
        echo "[${string}.${i}]: fail!"
    fi
    let i++
done
[root@localhost ~]# cat until.sh 
#! /bin/bash
string=192.168.56
i=1
until [ $i -gt 255 ]
do
    if ping -b -c 2 ${string}.${i} &>/dev/null;then
        echo "[${string}.${i}]: success!"
    else
        echo "[${string}.${i}]: fail!"
    fi
    let i++
done

[root@localhost ~]# sh while.sh 
[192.168.56.1]: success!
[192.168.56.2]: success!
[192.168.56.3]: fail!
[192.168.56.4]: fail!
[192.168.56.5]: fail!
[192.168.56.6]: fail!
[192.168.56.7]: fail!
[192.168.56.8]: fail!
[192.168.56.9]: fail!
[192.168.56.10]: fail!
[192.168.56.11]: fail!
[192.168.56.12]: fail!
[192.168.56.13]: fail!
[192.168.56.14]: fail!
[192.168.56.15]: fail!
[192.168.56.16]: fail!
[192.168.56.17]: fail!
[192.168.56.18]: fail!
[192.168.56.19]: fail!
......

[root@myserver ~]# sh until.sh 
[192.168.56.1]: success!
[192.168.56.2]: success!
[192.168.56.3]: fail!
[192.168.56.4]: fail!
[192.168.56.5]: fail!
[192.168.56.6]: fail!
[192.168.56.7]: fail!
[192.168.56.8]: fail!
[192.168.56.9]: fail!
[192.168.56.10]: fail!
[192.168.56.11]: fail!
[192.168.56.12]: fail!
[192.168.56.13]: fail!
[192.168.56.14]: fail!
[192.168.56.15]: fail!
[192.168.56.16]: fail!
[192.168.56.17]: fail!
[192.168.56.18]: fail!
[192.168.56.19]: fail!
[192.168.56.20]: fail!
......

二、ifcfg家族和iproute家族

2.1、网络接口命名方式

  • 传统命名:
    (1) 以太网:ethX, [0,oo),例如eth0, eth1, ...
    (2) PPP网络:pppX, [0,...], 例如,ppp0, ppp1, ...

  • 可预测命名方案(CentOS):
    支持多种不同的命名机制:Fireware, 拓扑结构
    (1) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1, eno2, ...
    (2) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1, ens2, ...
    (3) 如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0, ...
    (4) 如果用户显式定义,也可根据MAC地址命名,例如enx122161ab2e10, ...
    上述均不可用,则仍使用传统方式命名;

  • 命名格式的组成:
    en:ethernet
    wl:wlan
    ww:wwan

  • 名称类型:
    o<index>:集成设备的设备索引号;
    s<slot>:扩展槽的索引号;
    x<MAC>:基于MAC地址的命名;
    p<bus>s<slot>:基于总线及槽的拓扑结构进行命名;

2.2、ifcfg家族常用工具

ifcfg家族的工具来自于软件包net-tools,默认最小化安装CentOS 6.x系列有安装,而CentOS 7.x最小化安装没有安装,主要原因是ifcfg家族的工具已经要被替换了,不过因为历史原因,这些工具广为人知,所以目前在安装盘的base仓库还有提供。
(1) ifconfig工具

ifconfig - configure a network interface
ifconfig是配置网络接口的一个工具;
用法:
ifconfig [interface]
ifconfig interface [aftype] options | address ...
    ifconfig  interface  IP/MASK  [up|down]
    ifconfig  interface  IP  netmask  NETMASK 

ifconfig -a:查看所有网卡信息;
ifconfig interface IP/MASK [up|down]
ifconfig interface IP netmask NETMASK
上面这两种形式可以设置指定接口的ip地址以及子网掩码信息。

为了演示效果,我以CentOS 6.x为例,安装了双网卡:
a. 查看所有接口信息

[root@localhost ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6302 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3633 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7691888 (7.3 MiB)  TX bytes:270052 (263.7 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

b. 查看指定网卡信息

[root@localhost ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6335 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3663 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7694940 (7.3 MiB)  TX bytes:274298 (267.8 KiB)

[root@localhost ~]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@localhost ~]# ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

c. 为eth1设置ip地址(ipv4:192.168.56.110,子网掩码为:255.255.255.0)

[root@localhost ~]# ifconfig eth1 192.168.56.110/24 up
[root@localhost ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6433 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7703838 (7.3 MiB)  TX bytes:283604 (276.9 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          inet addr:192.168.56.110  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:bafd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:238 (238.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

说明,这里采用的是第一种设置立即(非永久生效,立即写入内存)生效的ip地址格式,其中的子网掩码采用的是
短格式写法,上面的设置形式也可以换成:
ifconfig eth1 192.168.56.110 netmask 255.255.255.0 up

第一种格式:ifconfig eth1 192.168.56.110/24 up
第二种格式:ifconfig eth1 192.168.56.110 netmask 255.255.255.0 up

(2) netstat工具

netstat  - Print network connections, routing tables, interface statistics, masquerade connections, 
and multicast memberships
netstat - 打印网络连接、路由表、网卡接口统计信息、伪装连接以及多波成员信息。

显示路由表:
-r:显示内核路由表;
-n:以数字格式显示;

显示网络连接:
netstat  [--tcp|-t]  [--udp|-u]  [--udplite|-U]  [--sctp|-S]  [--raw|-w]  [--listening|-l]  [--all|-a]  [--numeric|-n]   
[--extend|-e[--extend|-e]]  [--program|-p]

-t, --tcp:显示TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine);
-u, --udp:显示UDP相关的连接;
-w, --raw:显示raw socket(裸套接字,原始套接字)相关的连接;
-l, --listening:处于监听状态的连接;
-a, --all:处于所有状态的连接;
-n, --numeric:以数字格式显示IP和port;
-e, --extend:扩展格式;
-p, --program:显示相关的进程和PID;
-x, --unix:显示Unix 套接字的信息;

传输层协议:
tcp:面向连接的协议;通信开始之前,要建立一个虚链路;通信完成后还要拆除连接;
dp:无连接的协议;直接发送数据报文;

显示接口的统计信息:
netstat    {--interfaces|-I|-i}    [iface]   [--all|-a]   [--extend|-e]   [--verbose|-v]   [--program|-p]  [--numeric|-n]

所有接口:
netstat  -i
指定接口:
netstat  -I<IFace>

a.显示路由表信息

[root@localhost ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    *               255.255.255.0   U         0 0          0 eth0
192.168.56.0    *               255.255.255.0   U         0 0          0 eth1
link-local      *               255.255.0.0     U         0 0          0 eth0
default         192.168.56.2    0.0.0.0         UG        0 0          0 eth0
[root@localhost ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.56.2    0.0.0.0         UG        0 0          0 eth0

b.

netstat -l  ,显示所有处于监听状态的信息(包括tcp,udp以及unix socket);
netstat -lt ,显示所有处于监听状态的tcp的信息;
netstat -lu,显示所有处于监听状态的udp的信息;
netstat -lx,显示所有处于监听状态的unix socket的信息;

[root@localhost ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     13140  @/var/run/hald/dbus-MnA9Lutd4Z
unix  2      [ ACC ]     STREAM     LISTENING     13803  private/error
unix  2      [ ACC ]     STREAM     LISTENING     13807  private/retry
unix  2      [ ACC ]     STREAM     LISTENING     13811  private/discard
unix  2      [ ACC ]     STREAM     LISTENING     13815  private/local
unix  2      [ ACC ]     STREAM     LISTENING     13819  private/virtual
unix  2      [ ACC ]     STREAM     LISTENING     13823  private/lmtp
unix  2      [ ACC ]     STREAM     LISTENING     9774   @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     13133  @/var/run/hald/dbus-U4talIwYx6
unix  2      [ ACC ]     STREAM     LISTENING     13827  private/anvil
unix  2      [ ACC ]     STREAM     LISTENING     13831  private/scache
unix  2      [ ACC ]     STREAM     LISTENING     13748  public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     13755  private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     13759  private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     13763  private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     13767  private/defer
unix  2      [ ACC ]     STREAM     LISTENING     13771  private/trace
unix  2      [ ACC ]     STREAM     LISTENING     13775  private/verify
unix  2      [ ACC ]     STREAM     LISTENING     13779  public/flush
unix  2      [ ACC ]     STREAM     LISTENING     13783  private/proxymap
unix  2      [ ACC ]     STREAM     LISTENING     13025  /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     13787  private/proxywrite
unix  2      [ ACC ]     STREAM     LISTENING     13791  private/smtp
unix  2      [ ACC ]     STREAM     LISTENING     13795  private/relay
unix  2      [ ACC ]     STREAM     LISTENING     13799  public/showq

[root@localhost ~]# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN    

[root@localhost ~]# netstat -lu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State  
[root@localhost ~]#

c.显示统计信息

netstat -s
[root@localhost ~]# netstat -s
Ip:
    7783 total packets received
    0 forwarded
    0 incoming packets discarded
    7763 incoming packets delivered
    4922 requests sent out
Icmp:
    0 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
    8 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 8
IcmpMsg:
        OutType3: 8
Tcp:
    27 active connections openings
    2 passive connection openings
    0 failed connection attempts
    0 connection resets received
    2 connections established
    7723 segments received
    4862 segments send out
    9 segments retransmited
    0 bad segments received.
    1 resets sent
Udp:
    40 packets received
    0 packets to unknown port received.
    0 packet receive errors
    43 packets sent
UdpLite:
TcpExt:
    23 TCP sockets finished time wait in fast timer
    37 delayed acks sent
    2 packets directly queued to recvmsg prequeue.
    6528 packets header predicted
    277 acknowledgments not containing data received
    931 predicted acknowledgments
    0 TCP data loss events
    2 other TCP timeouts
    1 DSACKs sent for old packets
    1 connections aborted due to timeout
IpExt:
    InBcastPkts: 7
    InOctets: 7727174
    OutOctets: 457355
    InBcastOctets: 1648     

d.显示所有状态的信息

netstat -a ,显示所有协议的所有状态的信息;
netstat -at ,显示tcp协议的所有状态的信息;
netstat -au,显示udp协议的所有状态的信息;
netstat -an,显示所有协议的所有状态的信息,其中主机名和服务名以ip和端口来表示;
netstat -atn,显示tcp协议的所有状态的信息,其中主机名和服务名以ip和端口来表示;
netstat -aun,显示udp协议的所有状态的信息,其中主机名和服务名以ip和端口来表示;

[root@localhost ~]# netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 192.168.56.66:22            192.168.56.1:6739           ESTABLISHED 
tcp        0     52 192.168.56.66:22            192.168.56.1:6738           ESTABLISHED 
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN      
[root@localhost ~]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
tcp        0      0 192.168.56.66:ssh           192.168.56.1:6739           ESTABLISHED 
tcp        0     52 192.168.56.66:ssh           192.168.56.1:6738           ESTABLISHED 
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN    

e.以数字格式显示tcp和udp协议的所有监听状态和所有状态的信息(要带上具体程序名)

netstat -nltup,以数字格式显示tcp和udp协议的所有监听状态的信息,并附上程序名;
netstat -natup,以数字格式显示tcp和udp协议的所有状态的信息,并附上程序名;

[root@localhost ~]# netstat -nltup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1476/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1555/master         
tcp        0      0 :::22                       :::*                        LISTEN      1476/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1555/master       

[root@localhost ~]# netstat -natup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1476/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1555/master         
tcp        0      0 192.168.56.66:22            192.168.56.1:6739           ESTABLISHED 1706/sshd           
tcp        0     52 192.168.56.66:22            192.168.56.1:6738           ESTABLISHED 1688/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      1476/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1555/master  

f.扩展信息的显示
[root@localhost ~]# netstat -natupe
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      0          13529      1476/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      0          13741      1555/master         
tcp        0      0 192.168.56.66:22            192.168.56.1:6739           ESTABLISHED 0          14530      1706/sshd           
tcp        0      0 192.168.56.66:22            192.168.56.1:6738           ESTABLISHED 0          14412      1688/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      0          13532      1476/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      0          13742      1555/master         
[root@localhost ~]# netstat -natup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1476/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1555/master         
tcp        0      0 192.168.56.66:22            192.168.56.1:6739           ESTABLISHED 1706/sshd           
tcp        0     52 192.168.56.66:22            192.168.56.1:6738           ESTABLISHED 1688/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      1476/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1555/master   

加上-e的结果中多出了两列,一列是User,另外一列是Inode。User表示对应状态的进程的用户属组,如果加上-n
会以uid数字格式显示,如果不加-n,输出的将会是字符串标识的用户名。而Inode表示文件inode编号,表示对应
状态的信息打开的文件的Inode编号;

(3) route工具
参考博文:http://blog.51cto.com/nickfox/2089177

route - show / manipulate the IP routing table
route - IP路由表查看和维护管理

路由条目类型:
1>主机路由
目标地址为单个ip
2>网络路由
目标地址为ip网络
3>默认路由
目标地址为任意网络,0.0.0.0/0.0.0.0

查看路由:
-n:以数字地址格式显示;
-e:以netstat -r的输出格式显示;
route -n
route -ne 
输出格式说明:
Destination:目标网络或目标主机,本机数据发往的目的地,子网或者主机。与Genmask一起构成一个网段;
Gateway:网关地址(到达目标主机或网络的下一跳),*表示没有设置,如果是默认网关,网关的地址必须和
自己的主机上的其中一块网卡同一子网;如果显式在数字格式显示为,会把*转化成0.0.0.0,表示的含义是达到
目标主机或网络不需要下一跳,就说明目标主机或网络是本地所在的主机或网络,无需网关或下一跳;
Genmask:指定与网络目标地址相关联的网掩码(又称子网掩码)。子网掩码对于IP网络地址可以是一适当的
子网掩码,对于主机路由是255.255.255.255。对于默认路有个,子网掩码应该为0.0.0.0;
Flags:标志信息,可能标志如下
1> U (route is up),表示路由启用状态,有效的;
2> H (target is a host),表示目标一个主机(主机路由);
3> G (use gateway),需要透过外部的主机 (gateway) 来转递封包(该行有gw);
4> R (reinstate route for dynamic routing),使用动态路由时,恢复路由资讯的旗标; 
5> D (dynamically installed by daemon or redirect),已经由服务或转 port 功能设定为动态路由
6> M (modified from routing daemon or redirect),路由已经被修改; 
7> A (installed by addrconf)
8> C (cache entry),缓存实体;
9> !  (reject route),这个路由将不会被接受(用来抵挡不安全的网域!)

Metric:距离、跳数。暂无用。与目标的“距离”(通常以跳数计算)。它不被最近的内核使用,但可能需要
路由守护进程;
Ref:不用管,恒为0, 对这条路由路线的引用次数(Linux内核已不再使用);
Use:该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量。 路线查询次数。根据-F和-C的使用,
这将是路由高速缓存丢失(-F)或命中(-C)。
Iface:Interface to which packets for this route will be sent.
接口,即eth0,eth1等网络接口名,为此路由发送数据包的接口。
即为达到目标主机或网络,需要经过本地的接口名;

MSS:Default maximum segement size for TCP connections over this route.
TCP报文通过此路由线路时,默认最大允许的段大小;

Window:Default window size for TCP connections over this route.
TCP报文通过此路由线路时候的窗口大小(与缓冲有关的一个东西);

irtt:nitial RTT (Round Trip Time). The kernel uses this to guess about the  best  TCP  protocol  parameters
without waiting on (possibly slow) answers.
wangfan往返时长。内核可以通过该结果来评估最适用于TCP协议的参数设定。

HH (cached only):The  number  of  ARP  entries  and cached routes that refer to the hardware header 
cache for the cached route. This will be -1 if a hardware address is not needed for the interface of the 
cached route(e.g. lo).

Arp (cached only):Whether or not the hardware address for the cached route is up to date.
缓存路由的硬件地址是否是最新的。

添加路由:
route  add  [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] If]

删除路由:
route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] If]

a.添加网络路由

route add -net 10.0.0.0/8 gw 192.168.27.1 dev eth1
达到网络 10.0.0.0/8 ,下一跳(网关)为192.168.27.1,经过本地的eth1接口。
特别说明:下一跳或者网关要与指定接口eth1在同一个网段,或者不知名eth1,让它自动去识别;

[root@localhost ~]# route add -net 10.0.0.0/8 gw 192.168.27.1 dev eth1
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

b.设定默认路由(默认网关)

route add -net 0.0.0.0/0 gw 192.168.27.1 dev eth1
route add -net 0/0 gw 192.168.27.1 dev eth1
或
route add default gw 192.168.27.1 dev eth1

[root@localhost ~]# route add -net 0.0.0.0/0 gw 192.168.27.1 eth1 
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.27.1    0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

c.添加主机路由

route add -host 192.168.27.1 gw 192.168.56.2
添加到192.168.27.1这个主机或ip,下一跳(网关)为192.168.56.2
[root@localhost ~]# route add -host 192.168.27.1 gw 192.168.56.2
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.1    192.168.56.2    255.255.255.255 UGH   0      0        0 eth0
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.27.1    0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

d.删除主机路由

[root@localhost ~]# route del -host 192.168.27.1 gw 192.168.56.2 dev eth0
删除达通过本地eth0网卡走192.168.56.2这个网关叨叨主机192.168.27.1的这个路由;
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.27.1    0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

e.删除默认路由

[root@localhost ~]# route del default dev eth1
删除eth1网卡的默认路由。(默认路由也是一个网络路由)
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

c.删除网络路由

[root@localhost ~]# route del -net 10.0.0.0/8 dev eth1
删除通过eh1接口,到达网络10.0.0.0/8的路由;这里因为只有一条,所以没有指定下一跳(网关信息);
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

2.3、iproute家族常用工具

iproute来自于iproute软件包;

[root@localhost ~]# rpm -qa|grep iproute
iproute-3.10.0-21.el7.x86_64
[root@localhost ~]# rpm -qi iproute
Name        : iproute
Version     : 3.10.0
Release     : 21.el7
Architecture: x86_64
Install Date: Tue 30 Oct 2018 05:50:04 AM CST
Group       : Applications/System
Size        : 1229304
License     : GPLv2+ and Public Domain
Signature   : RSA/SHA256, Sat 14 Mar 2015 03:56:08 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : iproute-3.10.0-21.el7.src.rpm
Build Date  : Fri 06 Mar 2015 11:07:32 AM CST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://kernel.org/pub/linux/utils/net/iproute2/
Summary     : Advanced IP routing and network device configuration tools
Description :
The iproute package contains networking utilities (ip and rtmon, for example)
which are designed to use the advanced networking capabilities of the Linux
2.4.x and 2.6.x kernel.

[root@localhost ~]# rpm -ql iproute
/etc/iproute2
/etc/iproute2/ematch_map
/etc/iproute2/group
/etc/iproute2/rt_dsfield
/etc/iproute2/rt_protos
/etc/iproute2/rt_realms
/etc/iproute2/rt_scopes
/etc/iproute2/rt_tables
/etc/sysconfig/cbq
/etc/sysconfig/cbq/avpkt
/etc/sysconfig/cbq/cbq-0000.example
/usr/lib64/tc
/usr/lib64/tc/experimental.dist
/usr/lib64/tc/m_ipt.so
/usr/lib64/tc/m_xt.so
/usr/lib64/tc/normal.dist
/usr/lib64/tc/pareto.dist
/usr/lib64/tc/paretonormal.dist
/usr/sbin/arpd
/usr/sbin/bridge
/usr/sbin/cbq
/usr/sbin/ctstat
/usr/sbin/genl
/usr/sbin/ifcfg
/usr/sbin/ifstat
/usr/sbin/ip
/usr/sbin/lnstat
/usr/sbin/nstat
/usr/sbin/routef
/usr/sbin/routel
/usr/sbin/rtacct
/usr/sbin/rtmon
/usr/sbin/rtpr
/usr/sbin/rtstat
/usr/sbin/ss
/usr/sbin/tc
......

关于iproute家族和ifcfg家族的对比图解:
技术分享图片

(1) ip工具

ip OBJECT 

常用的基础的OBJECT有:
link,addr(address),route,netns
查看帮助手册:
CentOS 6.x:
man ip 

CentOS 7.x:
man ip
man ip OBJECT 或 man ip-OBJECT
CentOS 7实现来把各个子功能man手册分开来管理。可以单独查看

1> ip link - network device configuration(网络设备管理)

ip link set - change device attributes(改变设备的属性)
    dev DEVICE(默认选项):指明要管理的设备,dev关键字可省略;
        up and down:设置网卡的状态,up表示启用,down表示停用;
        multicast on or multicast off:启用或关闭设备的多波(组播)特性;
        name NAME:重命名接口
    mtu NUMBER:改变网卡设备的最大传输单源大小,默认是1500;
        netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;

ip link show - display device attributes(显示设备属性信息)
            dev NAME (default):查看指定网卡;
            up:只查看启动状态的网卡;

ip link help - 查看帮助信息

示例:
a.查看网卡设备属性信息

[root@localhost ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link show up
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:25:9d:07 brd ff:ff:ff:ff:ff:ff      

b.关闭eth1网卡的组播特性以及修改eth1网卡的最大传输单元为2000

[root@localhost ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link set dev eth1 multicast off
[root@localhost ~]# ip link show eth1
3: eth1: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set dev eth1 mtu 2000
[root@localhost ~]# ip link show eth1
3: eth1: <BROADCAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1 multicast on ; ip link set eth1 mtu 1500
[root@localhost ~]# ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

c.设置网卡状态

[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1 down
[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link show up
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1 up

d.重命名接口

[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1 name eth1:new
RTNETLINK answers: Device or resource busy  #对网卡重命名,要先把其状态置为下线(down)
[root@localhost ~]# ip link set eth1 down
[root@localhost ~]# ip link set eth1 name eth1:new
[root@localhost ~]# ip link show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1:new: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN ioctl(SIOCGIFXQLEN) failed: No such device

    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1:new up
[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12221 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8599 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8238085 (7.8 MiB)  TX bytes:1038202 (1013.8 KiB)

eth1: error fetching interface information: Device not found #iproute和ifcfg家族设别方式不一样,实验后,记得
把网卡名字还原。

2> ip address - protocol address management(协议地址管理)

ip address add - add new protocol address(添加新的ip地址)
    ip address  IFADDR dev IFACE
            label NAME:为额外添加的地址指明接口别名;
                broadcast ADDRESS:广播地址,会根据ip和netmask自动计算得到;
                scope SCOPE_VALUE:
                    global:全局可用;
                        link:接口可用;
                        host:仅本机可用;
                up:只列出启动的接口;        

ip address delete - delete protocol address(删除ip地址)
    ip addr  delete  IFADDR  dev  IFACE

ip address show - look at protocol addresses(查看ip地址)
    ip  addr   list  [IFACE]

ip address flush - flush protocol addresses(刷新协议地址)
    ip  addr  flush  dev  IFACE

示例:
a.查看网卡

[root@localhost ~]# ip address 
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip address list
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link set eth1 down
[root@localhost ~]# ip addr show up #大部分时候,address可以缩写为addr或者其他不能被误解的
字符串(ad,a有些场景都行)
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever      

b.设置ip地址和设置别名接口ip地址

[root@localhost ~]# ip addr add 172.16.0.12/24 dev eth1
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.12/24 scope global eth1
    inet6 fe80::20c:29ff:fedc:bafd/64 scope link 
       valid_lft forever preferred_lft forever

[root@localhost ~]# ip addr add 172.16.0.10/24 label eth1:1 dev eth1
#设置的别名接口地址名字要DEVICE_NAME:number
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.12/24 scope global eth1
    inet 172.16.0.10/24 scope global secondary eth1:1
    inet6 fe80::20c:29ff:fedc:bafd/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13830 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9946 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8390319 (8.0 MiB)  TX bytes:1222480 (1.1 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          inet addr:172.16.0.12  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:bafd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:78 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10455 (10.2 KiB)  TX bytes:2808 (2.7 KiB)

eth1:1    Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          inet addr:172.16.0.10  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)             

c.删除ip地址

[root@localhost ~]# ip address delete 172.16.0.10 dev eth1:1
Warning: Executing wildcard deletion to stay compatible with old scripts.
         Explicitly specify the prefix length (172.16.0.10/32) to avoid this warning.
         This special behaviour is likely to disappear in further releases,
         fix your scripts!
#这里的警告的意思是,我删除地址的时候,没有给定子网掩码,可能会导致整个网络被删除,
172.16.0.10可以代表多个子网。(不过这里不影响,我们就这一个别名的地址)

[root@localhost ~]# ip address delete 172.16.0.12/24 dev eth1
[root@localhost ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fedc:bafd/64 scope link 
       valid_lft forever preferred_lft forever

3> ip route - routing table management(路由表管理)

ip route add - add new route(添加新的路由)
ip route change - change route(修改路由)
ip route replace - change or add new one(修改或新增)
ip route delete - delete route(删除路由)
ip route show -  list routes(查看路由)
ip route flush - flush routing tables(刷新路由表)
ip route get - get a single route(获取一个单独的路由)

ip  route  add  TYPE PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP]
ip  route  del  TYPE PRIFIX
ip  route  get  TYPE PRIFIX

示例:
a.查看路由

[root@localhost ~]# ip addr add 172.16.0.10/24 dev eth1
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

b.添加网络路由

设定通过eth1网卡通过下一跳(网关)为172.16.0.1到达网络10.0.0.0/8
[root@localhost ~]# ip addr add 172.16.0.10/24 dev eth1
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 
[root@localhost ~]# ip route add 10.0.0.0/8 via 172.16.0.1 dev eth1
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
10.0.0.0/8 via 172.16.0.1 dev eth1 
default via 192.168.56.2 dev eth0 

c.添加主机路由

添加到主机172.16.0.1的路由,通过192.168.56.2网关,走本地eth0接口
[root@localhost ~]# ip route add 172.16.0.1 via 192.168.56.2 dev eth0
[root@localhost ~]# ip route show
172.16.0.1 via 192.168.56.2 dev eth0 
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
10.0.0.0/8 via 172.16.0.1 dev eth1 
default via 192.168.56.2 dev eth0 

d.添加默认路由

[root@localhost ~]# ip route delete default via 192.168.56.2
[root@localhost ~]# ip route show
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
[root@localhost ~]# ip route add default via 192.168.56.2 dev eth0
[root@localhost ~]# ip route show
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

e.删除网络路由

[root@localhost ~]# ip route delete 10.0.0.0/8 dev eth1
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

f.删除主机路由

[root@localhost ~]# ip route add 172.16.0.1 via 192.168.56.2 dev eth0
[root@localhost ~]# ip route show
172.16.0.1 via 192.168.56.2 dev eth0 
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 
[root@localhost ~]# ip route delete 172.16.0.1 via 192.168.56.2 dev eth0
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

g.删除默认路由

[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

[root@localhost ~]# ip route delete default dev eth0
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 

4> ip netns - process network namespace management(进程网络命名空间管理)

ip  netns  list:列出所有的netns
ip  netns  add  NAME:创建指定的netns
ip  netns  del  NAME:删除指定的netns
ip  netns   exec  NAME  COMMAND:在指定的netns中运行命令

示例:(CentOS 7.x上操作)
a.新增一个网络命名空间,名字叫mynetns

[root@localhost ~]# ip netns help
Usage: ip netns list
       ip netns add NAME
       ip netns delete NAME
       ip netns identify PID
       ip netns pids NAME
       ip netns exec NAME cmd ...
       ip netns monitor
[root@localhost ~]# ip netns add mynetns
[root@localhost ~]# ip netns list
mynetns

b.把网络接口eno33554984添加到netns命名空间中,并验证

[root@localhost ~]# ip link set netns mynetns dev eno33554984
[root@localhost ~]# ip netns exec mynetns ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: eno33554984: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 00:0c:29:25:9d:11 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> 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
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:25:9d:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.77/24 brd 192.168.56.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe25:9d07/64 scope link 
       valid_lft forever preferred_lft forever

c.删除网络命名空间,并还回网络接口

[root@localhost ~]# ip netns delete mynetns
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> 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
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:25:9d:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.77/24 brd 192.168.56.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe25:9d07/64 scope link 
       valid_lft forever preferred_lft forever
3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:25:9d:11 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fe25:9d11/64 scope link 
       valid_lft forever preferred_lft forever

(2) ss工具

ss  [options]  [ FILTER ]
    选项:
    -t, --tcp:TCP协议的相关连接
    -u, --udp:UDP相关的连接
    -w, --raw:raw socket相关的连接
    -l, --listening:监听状态的连接
    -a, --all:所有状态的连接
    -n, --numeric:数字格式
    -p, --processes:相关的程序及其PID
    -e, --extended:扩展格式信息
  -m, --memory:内存用量
    -o, --options:计时器信息

    FILTER := [ state TCP-STATE ]  [ EXPRESSION ]

        TCP的常见状态:
            TCP FSM:
                LISTEN:监听
                ESTABLISEHD:建立的连接
                FIN_WAIT_1:
                FIN_WAIT_2:
                SYN_SENT:
                SYN_RECV:
                CLOSED:

        EXPRESSION:
            dport = 
            sport = 
                示例:‘( dport = :22 or sport = :22)‘
                    ~]# ss   -tan    ‘(  dport = :22 or sport = :22  )‘
                    ~]# ss  -tan  state  ESTABLISHED

ss和netstat很多选项都兼容,这里基础选项不举例了。
示例:
a.基于端口和状态直接过滤(不借助于grep工具)

[root@localhost ~]# ss -tan ‘( dport = :22 or sport = :22 )‘
State      Recv-Q Send-Q                                 Local Address:Port                                   Peer Address:Port 
LISTEN     0      128                                                *:22                                                *:*     
ESTAB      0      0                                      192.168.56.77:22                                     192.168.56.1:10108 
ESTAB      0      0                                      192.168.56.77:22                                     192.168.56.1:5201  
ESTAB      0      0                                      192.168.56.77:22                                     192.168.56.1:10109 
LISTEN     0      128                                               :::22                                               :::*     

[root@localhost ~]# ss -tan state ESTABLISHED
Recv-Q Send-Q                                      Local Address:Port                                        Peer Address:Port 
0      52                                          192.168.56.77:22                                          192.168.56.1:10108 
0      0                                           192.168.56.77:22                                          192.168.56.1:5201  
0      0                                           192.168.56.77:22                                          192.168.56.1:10109 

2.4、其他常用网络工具

(1) hostname
hostname命令:
查看:hostname
配置:hostname HOSTNAME
当前系统有效,重启后无效;

(2) hostnamectl
hostnamectl命令(CentOS 7):
hostnamectl status:显示当前主机名信息;
hostnamectl set-hostname:设定主机名,永久有效;

2.5、linux网络管理

(1) CentOS 6.x 和CentOS7.x 配置网络地址

  • 配置文件:
    IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
    IFACE:接口名称;

  • 配置文件修改说明:
    配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)

  • 配置文件常用参数说明
    ifcfg-IFACE配置文件参数:
    DEVICE:此配置文件对应的设备的名称;
    ONBOOT:在系统引导过程中,是否激活此接口;
    UUID:此设备的惟一标识;
    IPV6INIT:是否初始化IPv6;
    BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none;
    TYPE:接口类型,常见的有Ethernet, Bridge;
    DNS1:第一DNS服务器指向;
    DNS2:备用DNS服务器指向;
    DOMAIN:DNS搜索域;
    IPADDR: IP地址;
    NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码;
    GATEWAY:默认网关;
    USERCTL:是否允许普通用户控制此设备;
    PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许;
    HWADDR:设备的MAC地址;
    NM_CONTROLLED:是否使用NetworkManager服务来控制接口;

  • CentOS 6.x示例配置
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cat ifcfg-eth0 
DEVICE=eth0
HWADDR=00:0C:29:DC:BA:F3
TYPE=Ethernet
UUID=d670657b-13ee-4680-929f-d587db3d1871
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.56.66
PREFIX=24
GATEWAY=192.168.56.2
DNS1=114.114.114.114
DNS2=8.8.8.8
  • CentOS 7.x示例配置

    [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]# cat ifcfg-eno16777736 
    TYPE=Ethernet
    BOOTPROTO=none
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eno16777736
    UUID=ad6d3532-c6f5-4471-a6af-248badd28051
    DEVICE=eno16777736
    ONBOOT=yes
    IPADDR=192.168.56.77
    PREFIX=24
    GATEWAY=192.168.56.2
    DNS1=8.8.8.8
    DNS2=114.114.114.114
  • 网络服务有两个
network
NetworkManager
#建议禁用NetworkManager网络
  • 管理网络服务
CentOS 6:  service  SERVICE  {start|stop|restart|status}
CentOS 7:systemctl  {start|stop|restart|status}  SERVICE[.service]
重启:
CentOS 6:# service  network  restart
CentOS 7:# systemctl  restart  network.service

禁用(开机不启用):
CentOS 6:chkconfig SERVICE off
CentOS 7:systemctl disable SERVICE[.service]

(2) CentOS 6.x 和 CentOS 7.x 配置路由
路由的相关配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
支持两种配置方式,但不可混用
1> 每行一个路由条目:
TARGET via GW

2> 每三行一个路由条目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP

(3) CentOS 6.x 和 CentOS 7.x 配置主机名和DNS

CentOS 6修改主机名的配置文件:/etc/sysconfig/network
CentOS 7修改主机名的配置文件:/etc/hostname

不重启修改理解生效主机名:
方法1:先修改主机名配置文件,然后利用hostname命令修改;
方法2:CentOS 7.x才有的工具(立即生效,配置文件也修改来),CentOS 6.x没有。
[root@localhost ~]# hostnamectl set-hostname myserver.com
[root@localhost ~]# hostname
myserver.com
[root@localhost ~]# cat /etc/hostname 
myserver.com

DNS配置文件(CentOS 6.x和CentOS7.x一样):/etc/resolv.conf 
书写格式:
nameserver DNS-SERVER1
nameserver DNS-SERVER2
nameserver DNS-SERVER3
一般只会设置2个,一主一备

2.6、vmstat和htop工具

vmstat最小化安装有,htop最小化安装没有。
安装htop要保证epel源可用;
CentOS 6.x安装EPEL源:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

CentOS 7.x安装EPEL源:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

安装htop工具:
yum -y install htop

vmstat工具:
参考:
https://www.cnblogs.com/feng0815/p/8613547.html
https://blog.csdn.net/ty_hf/article/details/63394960
https://www.cnblogs.com/xqzt/p/5448983.html
https://www.cnblogs.com/kerrycode/p/6208257.html

[root@myserver ~]# which vmstat
/usr/bin/vmstat
[root@myserver ~]# rpm -qf /usr/bin/vmstat 
procps-ng-3.3.10-3.el7.x86_64
vmstat是由procps-ng软件包提供;

vmstat - Report virtual memory statistics
vmstat - 虚拟内存统计
vmstat [options] [delay [count]]
vmstat功能远不止统计内存,它的大概功能如下:
vmstat reports information about processes, memory, paging, block IO, traps, disks and cpu activity.
可对操作系统的虚拟内存、进程、IO读写、磁盘、CPU活动等进行监视。

选项:
delay  The delay between updates in seconds.  If no delay is specified, only one report is printed with 
the average values since boot.
刷新时间间隔。如果不指定,只显示一条结果。

count  Number of updates.  In absence of count, when delay is defined, default is infinite.
刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷(会一直刷)。

-f: 显示此系统启动以来的forks的总数,包括fork、vfork和clone system calls;
-m, --slabs: 显示slabinfo信息;
-n, --one-header: 只显示头信息,不周期性显示.也就是说开启这个参数,只显示头部信息一次;
-s, --stats: 显示各种事件计数器表和内存统计信息,这显示不重复。
-d, --disk: 显示磁盘统计数据(内核要求2.5.70 或以上版本)
-D, --disk-sum: Report some summary statistics about disk activity.报告磁盘一些活动的统计数据;
-t, --timestamp: 给显示的结果每行追加一个时间戳信息;
-p, --partition <dev>: 显示关于分区的统计信息(内核要求2.5.70或以上版本)
-w, --wide: 可以扩大字段长度,当内存较大时,默认长度不够完全展示内存。
-S, --unit character: 参数S控制输出性能指标的单位,k(1000) K(1024) 或 M(1048576) 默认单位为K(1024 bytes)

输出字段含义:

FIELD DESCRIPTION FOR VM MODE
   Procs
       r: The number of runnable processes (running or waiting for run time).
          等待运行的进程数。如果等待运行的进程数越多,意味着CPU非常繁忙(CPU上等待运行的任务的队列长度)。
          如果该参数长期大于和等于逻辑cpu个数,则CPU资源可能存在较大的瓶颈。
       b: The number of processes in uninterruptible sleep.
          处于不可中断睡眠态的进程个数,进程被阻塞的。主要是指被资源阻塞的进程队列数(比如IO资源、页面调度等),
          当这个值较大时,需要根据应用程序来进行分析,比如数据库产品,中间件应用等。

   Memory
       swpd: the amount of virtual memory used.
             已使用的虚拟内存大小。如果虚拟内存使用较多,可能系统的物理内存比较吃紧,
             需要采取合适的方式来减少物理内存的使用。swapd不为0,并不意味物理内存吃紧,
             如果swapd没变化,si、so的值长期为0,这也是没有问题的

       free: the amount of idle memory.
             空闲的物理内存的大小.

       buff: the amount of memory used as buffers.
             用来做buffer(缓存,主要用于块设备缓存)的内存数,单位:KB

       cache: the amount of memory used as cache.
             用来做cache(缓存,主要用于缓存文件)的内存,单位:KB

       inact: the amount of inactive memory.  (-a option)
             不活跃的内存的总量;(-a选项给出才有该列值;)

       active: the amount of active memory.  (-a option)
             活跃内存的总量。(-a选项给出才有该列值;)
   Swap
       si: Amount of memory swapped in from disk (/s).
           从磁盘交换到内存的交换页数量,单位:KB/秒。

       so: Amount of memory swapped to disk (/s).
           从内存交换到磁盘的交换页数量,单位:KB/秒

   内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
   当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so,
   如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。           

   当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,
   这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,
   但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。        

   IO
       bi: Blocks received from a block device (blocks/s).
           每秒从块设备接收到的块数,单位:块/秒 也就是读块设备。

       bo: Blocks sent to a block device (blocks/s).
           每秒发送到块设备的块数,单位:块/秒  也就是写块设备。

   System
       in: The number of interrupts per second, including the clock.
           每秒的中断数,包括时钟中断

       cs: The number of context switches per second.
           每秒的环境(上下文)切换次数。比如我们调用系统函数,就要进行上下文切换,
           而过多的上下文切换会浪费较多的cpu资源,这个数值应该越小越好。
   CPU
       These are percentages of total CPU time.
       us: Time spent running non-kernel code.  (user time, including nice time
           用户CPU时间(非内核进程占用时间)(单位为百分比)。 us的值比较高时,说明用户进程消耗的CPU时间多

       sy: Time spent running kernel code.  (system time)
           系统使用的CPU时间(单位为百分比)。sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,
           我们应该检查原因。 

       id: Time spent idle.  Prior to Linux 2.5.41, this includes IO-wait time.
           空闲的CPU的时间(百分比),在Linux 2.5.41之前,这部分包含IO等待时间。

       wa: Time spent waiting for IO.  Prior to Linux 2.5.41, included in idle.
           等待IO的CPU时间,在Linux 2.5.41之前,这个值为0 .这个指标意味着CPU在等待硬盘读写操作的时间,用百分比表示。
           wait越大则机器io性能就越差。说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

       st: Time stolen from a virtual machine.  Prior to Linux 2.6.11, unknown.
           因为虚拟技术被偷走的时间;

FIELD DESCRIPTION FOR DISK MODE
   Reads
       total: Total reads completed successfully
              成功完成读总数;
       merged: grouped reads (resulting in one I/O)
               分区读;
       sectors: Sectors read successfully
               扇区读成功;
       ms: milliseconds spent reading
            读使用的时间,单位毫秒;

   Writes
       total: Total writes completed successfully
              总写成功的数量;

       merged: grouped writes (resulting in one I/O)
              分组写;

       sectors: Sectors written successfully
                写扇区成功;

       ms: milliseconds spent writing
           写使用的时间,单位毫秒;

   IO
       cur: I/O in progress
       s: seconds spent for I/O

FIELD DESCRIPTION FOR DISK PARTITION MODE
       reads: Total number of reads issued to this partition
              向指定分区发起的总读取数;

       read sectors: Total read sectors for partition
                     分区读取扇区的总数;

       writes : Total number of writes issued to this partition
                向指定分区发起的写入的总数;

       requested writes: Total number of write requests made for partition
                         用于分区的写入请求总数

FIELD DESCRIPTION FOR SLAB MODE
       cache: Cache name,缓存的名字;
       num: Number of currently active objects,当前活跃的对象数量;
       total: Total number of available objects,可用的对象的总数;
       size: Size of each object,每个对象使用的大小;
       pages: Number of pages with at least one active object,具有至少一个活动对象的页面数;

htop工具:
选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
子命令:
l:显示选定的进程打开的文件列表;
s:跟踪选定的进程的系统调用;
t:以层级关系显示各进程状态;
a:将选定的进程绑定至某指定的CPU核心;

linux网络概述

标签:proc   网络   uil   映射   纠正   高速缓存   org   rap   ali   

原文地址:http://blog.51cto.com/9657273/2315603

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!