记录我的成长吧~

推荐链接:

 

网络属性配置详解


网络基础:

  我们知道在计算机网络中两个主机交换数据时,一般是流式数据;而数字设备间为了完成信号传输时钟频率是至关重要的;进而我们现在用到协议来规则、标准或约定计算机之间的数据交换;现在我们用的协议有TCP/IP:协议簇,它使用起来方便,但是边界较模糊;后来ISO组织为了规范TCP/IP,OSI参考模型随之诞生,虽然它已经无法取代TCP/IP的地位,但它更容易理解;

TCP/IP五层体系结构:

应用层(application layer)
    直接为用户的应用进程提供服务
    各应用层协议(HTTP,FTP,SMTP等)
运输层(transport layer) 
    负责向两个主机中进程之间的通信提供服务
    TCP 和 UDP 协议的作用范围(提供进程之间的逻辑通信)
网络层(network layer) 
    负责为分组交换网上的不同主机提供通信服务
        IP(Internet Protocol,因特网协议)(提供主机之间的逻辑通信)
        ARP(Address Resolution Protocol,地址解析协议)
        ICMP(?Internet Control Message Protocol,因特网控制消息协议)
        IPv6、ICMPv6、ND、MLD等
数据链路层(data link layer) 
    将源自网络层来的数据可靠地传输到相邻节点的目标机网络层
物理层(physical layer) 
  为数据端设备提供传送数据通路、传输数据

D 从224.0.0.0到239.255.255.255。
E 240.0.0.0到255.255.255.254保留

169开头的IPv4地址
    “自动专用IP地址”,其地址范围为:169.254.0.0/16,子网掩码为255.255.0.0。
127.0.0.1地址
    “环回地址”(Loopback Address),是主机IP堆栈内部的IPv4地址,主要用于网络软件测试以及本地机进程间通信;在IP网络中就是用来测试主机TCP/IP协议是否工作正常
0.0.0.0地址
    0.0.0.0地址代表所有IPv4地址,常用于默认路由配置,或者代表整个不确定的IP地址范围(对未知IP进行路由

路由器:

路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。

  路由表的生成:
    静态指定:小范围可靠
    动态学习:需要专门的协议帮助完成:rip2(基本废弃), ospf
    
  路由条目:
    目标地址  下一跳(nexthop)(也可以叫网关)
      目标地址的类别:
        主机:主机路由
        网络:网络路由
        0.0.0.0/0.0.0.0:默认路由

  

两台主机如何实现通信?

操作系统静态视角划分:硬件,内核,库,应用程序
对linux主机来讲系统启动后有两个层面:

  • 内核空间:内核线程运行的位置
  • 用户空间:各进程运行的集合

内核提供的功能有:内核管理,网络协议栈,驱动程序,内存管理,文件系统等

我们把TCP协议栈分为两层:

  • 通信子网
  • 资源子网

通信子网在内核中实现;资源子网在用户空间上实现,是服务、进程完成资源交换的表现形式的;

两台真正的通信是靠进程间通信的,而进程间通信彼此之间是靠套接字通信的,而每一个主机标识自己地址的方式是套接字,套接字是由ip和端口组成;真正的套接字是靠内核提供的;

什么是端口:

  端口是用来实现标识本地主机上每个一个进程的唯一数字标识;是进程用来实现网络通信的数字标识;大小为16bits:端口有效使用范围1-65535;其中1-1023:固定分配,而且只有管理员有权限启用;1024-4w半固定;4W以上端口临时;

 

网络属性配置:

将Linux主机接入到网络中需要从三方面进行配置:

  •   IP/NETMASK:本地通信
  •   路由(网关):跨网络通信
  •   DNS服务器地址:基于主机名的通信

对于linux系统来说DNS配置3个就够了:主DNS服务器地址、备用DNS服务器地址、第三备用DNS服务器地址;

注意:只有第一个DNS服务器挂了才会访问下一个DNS服务器

网络属性配置方式:

  •   静态指定:命令,修改配置文件
  •   动态分配:依赖于本地网路有DHCP服务

 

命令:
  ifcfg家族:ifconfig命令(配置IP,NETMASK)、route命令(路由)、netstat命令(状态及统计数据查看)

  iproute家族:ip命令(管理对象:addr地址和掩码、link接口、route路由)、ss命令(状态及统计数据查看)
    PS:ss命令在网络连接众多时比netstat性能要好很多;

  CenOS 7 :nm(Network Manager)家族:mcli(命令行工具)、nmtui:text window工具
  注意:
    (1)DNS服务器指定:
      编辑配置文件:/etc/resove.conf
    (2)本地主机名配置:
      hostname命令:
      配置文件:/etc/sysconfig/network
      CentOS 7 : hostnamectl命令

修改配置文件:
  RedHat及相关发行版
    /etc/sysconfig/network-scripts/ifcfg-NETCARD-NAME

网络接口命名方式:

网络接口命名方式:
  传统命名:
    以太网:ethX,[0,oo),如eth0,eth1...
    PPP网络:pppX,[0,...),如ppp9,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>:基于总线及槽的拓扑结构进行命名;
网络接口命名方式

 

网络属性配置之命令

 ifcfg命令家族:ifconfig,route,netstat

ifconfig命令:接口及地址查看和管理
    ifconfig [interface]

        不跟参数:显示当前或当的所有接口,激活状态的;
        # ifconfig -a:显示所有接口,包括inactive状态的接口;

    ifconfig interface [aftype] options | address ... #实现地址配置
        # ifconfig IFACE IP/MASK [up|down]
        # ifconfig IFACE IP netmask NETMASK
        # ifconfig IFACE 0 删除网卡地址
        options:
            [-]promisc  混杂模式;减号是去掉此功能;

        注意:立即送往内核中的TCP/IP协议栈,并生效;

    管理IPv6地址:
        add addr/prefixlen
        del addr/prefixlen

 

演示:
CentOS 7
[root@centos7 ~]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.110  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fefc:81b2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:fc:81:b2  txqueuelen 1000  (Ethernet)
        RX packets 159  bytes 19117 (18.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 116  bytes 14163 (13.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
UP:激活状态
BROADCAST:支持广播功能
MULTICAST:执行组播(即多播)功能
RUNNING:启动状态
mtu 1500:支持网卡最大的传输单位1500字节;

inet 192.168.1.110  netmask 255.255.255.0  broadcast 192.168.1.255
inet 192.168.1.110:网络地址
netmask 255.255.255.0 :子网掩码
broadcast 192.168.1.255:广播地址


ether 00:0c:29:fc:81:b2  txqueuelen 1000  (Ethernet)
ether 00:0c:29:fc:81:b2:以太网地址
txqueuelen 1000  (Ethernet):传输队列长度

RX packets 159  bytes 19117 (18.6 KiB):接收的报文大小
RX errors 0  dropped 0  overruns 0  frame 0:接收时错误、丢失、溢出、帧的数量
TX packets 116  bytes 14163 (13.8 KiB):传出的数据报文,一共字节
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
注意:这里需要关注的是errors\drooped数量

CentOS 6
 [root@centos6 ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:FB:24:6E  
          inet addr:192.168.1.113  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fefb:246e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:794092 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13268 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51277004 (48.9 MiB)  TX bytes:12174059 (11.6 MiB)
配置网卡
第一种:ifconfig IFACE IP/MASK [up|down]
[root@centos7 ~]# ifconfig eno16777736:1 192.168.10.100/24 up
[root@centos7 ~]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.110  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fefc:81b2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:fc:81:b2  txqueuelen 1000  (Ethernet)
        RX packets 716  bytes 71297 (69.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 279  bytes 31677 (30.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.100  netmask 255.255.255.0  broadcast 192.168.10.255
        ether 00:0c:29:fc:81:b2  txqueuelen 1000  (Ethernet)

第二种:ifconfig IFACE IP netmask NETMASK
[root@centos7 ~]# ifconfig eno16777736:1 192.168.20.200 netmask 255.255.255.0
[root@centos7 ~]# ifconfig eno16777736:1 
eno16777736:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.20.200  netmask 255.255.255.0  broadcast 192.168.20.255
        ether 00:0c:29:fc:81:b2  txqueuelen 1000  (Ethernet)


[root@centos7 ~]# ping -c 1 192.168.10.100
PING 192.168.10.100 (192.168.10.100) 56(84) bytes of data.
64 bytes from 192.168.10.100: icmp_seq=1 ttl=64 time=0.049 ms

--- 192.168.10.100 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.049/0.049/0.049/0.000 ms
演示:ifconfig

 

route命令:路由查看及管理
    路由条目类型:
        主机路由:目标地址为单个IP;
        网络路由:目标地址为IP网络;
        默认路由:目标为任意网络, 0.0.0.0/0.0.0.0

    查看:
        # route -n   以数字形式显示,而不要反解;
    添加:
        route  add  [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] If]
        
            GW:下一跳地址
            [[dev] If] :可以不写,可以自动判断

            示例:route add -net  10.0.0.0/8  gw  192.168.10.1  dev  eth1
                        route add  -net  0.0.0.0/0.0.0.0  gw 192.168.10.1  
                        route add  default  gw 192.168.10.1  #添加默认网关
                        
    删除:
        route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] If]
            
            示例: route  del  -net  10.0.0.0/8  gw 192.168.10.1
                     route  del  default #删除默认网关

 

演示:
[root@centos7 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777736
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777736
192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eno16777736
Destination:target 目标地址,如果是0.0.0.0,其后Gateway代表默认网关地址;
Genmask:目标网络掩码地址
Gateway:下一跳,
    192.168.1.0     0.0.0.00.0.0.0本地主机网关地址,直连路由
Flags:路由标志;U:up启用状态,G:gateway网关    
Metric:度量值;到达网络所需开销;
Iface:经过自己的哪个网卡;

设置
添加
到达10.0.0.0/8网络,经过192.168.10.1地址;注意下一跳必须与自己的模块网卡处于一个网段中,而且地址必须存在,否则会有问题的;
[root@centos7 ~]# route add -net 10.0.0.0/8 gw 192.168.10.2 dev eno16777736
[root@centos7 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777736
10.0.0.0        192.168.10.2    255.0.0.0       UG    0      0        0 eno16777736
10.0.0.0        192.168.10.1    255.0.0.0       UG    0      0        0 eno16777736
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777736
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eno16777736
删除
[root@centos7 ~]# route del -net 10.0.0.0/8 gw 192.168.10.2
[root@centos7 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777736
10.0.0.0        192.168.10.1    255.0.0.0       UG    0      0        0 eno16777736
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777736
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eno16777736
[root@centos7 ~]# route del -net 10.0.0.0/8 gw 192.168.10.1
演示:route命令

 

netstat命令:
    Print network connections, routing tables, interface statistics, masquerade connections, and multicast  memberships
    
    显示路由表:netstat  -rn
        -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协议的相关连接,连接均有其状态;FSM(Finate State Machine);
            -u:UDP相关的连接
            -w:raw socket相关的连接
            -l:处于监听状态的连接
            -a:所有状态
            -n:以数字格式显示IP和Port;
            -e:扩展格式
            -p:显示相关的进程及PID;
            
        常用组合:
            -tan,  -uan,  -tnl,  -unl,  -tunlp
                        
        传输层协议:
            tcp:面向连接的协议;通信开始之前,要建立一个虚链路;通信完成后还要拆除连接;
            udp:无连接的协议;直接发送数据报文;
            
    显示接口的统计数据:
        netstat    {--interfaces|-I|-i}    [iface]   [--all|-a]   [--extend|-e]   [--verbose|-v]   [--program|-p]  [--numeric|-n]
            
        所有接口:
            netstat  -i
        指定接口:
            netstat  -I<IFace>

 

演示:
[root@centos7 ~]# netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0     52 192.168.1.110:22        192.168.1.103:63602     ESTABLISHED
Proto:协议
Recv-Q:接收队列长度
Send-Q:发送队列长度
Local Address:本机地址
Foreign Address:远程地址
State:状态
TCP连接的状态转移:
    在TCP传输连接的建立和释放中的通信双方主机的这些状态称之为“有限状态机”(Finite State Machine,FSM)。
        
        状 态         描述
        CLOSED          #呈阻塞、关闭状态,表示主机当前没有活动的传输连接或正在进行传输连接
        LISTEN          #呈监听状态,表示服务器正在等待新的传输连接进入
        SYN RCVD        #表示主机已收到一个传输连接请求,但尚未确认
        SYN SENT        #表示主机已经发出一个传输连接请求,等待对方确认
        ESTABLISHED     #传输连接建立,通信双方进入正常数据传输状态
        FIN WAIT 1      #(主动关闭)主机已经发送关闭连接请求,等待对方确认
        FIN WAIT 2      #(主动关闭)主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
        TIMED WAIT      #完成双向传输连接关闭,等待所有分组消失
        CLOSING         #双方同时尝试关闭传输连接,等待对方确认
        CLOSE WAIT      #(被动关闭)收到对方发来的关闭传输连接请求,并已确认
        LAST ACK        #(被动关闭)等待最后一个关闭传输连接确认,并等待所有分组消失
演示:netstat命令

 

ifup/ifdown命令:
    注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置;

配置主机名:

hostname命令:

    查看:hostname
    配置:hostanma HOSTNAME
        当前系统有效,重启后无效;

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

配置文件:/etc/sysconfig/network
    HOSTNAME=<HOSTNAME>
    注意:此方法的设置不会立即生效;但以后会一直有效;

配置DNS服务器指向:

配置文件:/etc/resolve.conf
        nameserver DNS_SERVER_IP
    最多有3台主机被当作DNS主机地址

    如何测试(host/nslookup/dig):
        # dig -t A FQDN #主机名解析,不经过hosts文件
            FQDN --> IP 

        # dig -x IP
            IP --> FQDN

iproute家族:ip,ss

[root@localhost ~]# rpm -qi iproute
Name        : iproute
Version     : 3.10.0    
Release     : 21.el7
[root@localhost ~]# uname -r
3.10.0-229.el7.x86_64
    注意: iproute跟内核密切相关的,版本信息也是对应的

ip命令:

show / manipulate routing, devices, policy routing and tunnels 查看管理路由,设备,策略路由,隧道

  ip [ OPTIONS ] OBJECT { COMMAND | help }    

  OBJECT := { link | addr | route | netns  }管理对象

  注意: OBJECT可简写,各OBJECT的子命令也可简写;

ip link: network device configuration 网络设备配置

    ip  link  set - change device attributes 修改设备属性
        类似于ifconfig命令功能

        dev NAME (default):指明要管理的设备,dev关键字可省略;
        up和down:是否支持地址解析
        multicast on或multicast off:启用或禁用多播功能;
        name NAME:重命名接口
        mtu NUMBER:设置MTU的大小,默认为1500;
        netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;只能CentOS 7 上做;
        
    ip  link  show  - display device attributes 显示二层设备属性
        也可以 ip  link  list显示
    
    ip  link  help -  显示简要使用帮助;

演示:
[root@centos7 ~]# 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:fc:81:b2 brd ff:ff:ff:ff:ff:ff
qdisc:队列
pfifo_fast :队列类型pfifo_fast 先进先出队列
state UP:状态
mode DEFAULT qlen 1000:支持的队列长度
关掉多播:
[root@centos7 ~]# ip link set eno16777736 multicast off
[root@centos7 ~]# 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,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:fc:81:b2 brd ff:ff:ff:ff:ff:ff
将接口移动到指定的网络名称空间
[root@centos7 ~]# ip netns add mynet
[root@centos7 ~]# ip link set eno16777736 netns mynet
[root@centos7 ~]# ip netns exec mynet ip link show  #在虚拟网络中的使用命令查看
[root@centos7 ~]# ip netns del mynet   #删除虚拟网络空间后,其里网卡设备也就还原原位置了;
ip link网络设备配置
ip netns:  - manage network namespaces.#管理网络名称空间

    ip  netns  list:列出所有的netns
    ip  netns  add  NAME:创建指定的netns
    ip  netns  del  NAME:删除指定的netns
    ip  netns   exec  NAME  COMMAND:在指定的netns中运行命令
ip netns管理网络名称空间
ip address - protocol address management.#管理网络ip地址
    
    ip address add - add new protocol address#地址添加
        ip  addr  add  IFADDR  dev  IFACE
            [label NAME]:为额外添加的地址指明接口别名;
                注意:指明别名后,ifconfig命令才能看到;ifconfig默认显示第一个添加的主地址;
            [broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到;
            [scope SCOPE_VALUE]:作用域
                global:全局可用;
                link:接口可用;
                host:仅本机可用;                                                
        
    ip address delete - delete protocol address#地址删除
        ip addr  delete  IFADDR  dev  IFACE 
            
    ip address show - look at protocol addresses#地址查看
        ip  addr   list  [IFACE]:显示接口的地址;
        
    ip address flush - flush protocol addresses#地址清空;接口上的地址
        ip  addr  flush  dev  IFACE

    ip addr help #地址管理帮助信息

演示:
添加多个地址,指明别名
[root@centos7 ~]# ip addr add 192.168.30.200/24 dev eno16777736
[root@centos7 ~]# ip addr add 192.168.20.200/24 dev eno16777736
[root@centos7 ~]# ip addr list

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fc:81:b2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.110/24 brd 192.168.1.255 scope global dynamic eno16777736
       valid_lft 3907sec preferred_lft 3907sec
    inet 192.168.10.100/24 brd 192.168.10.255 scope global eno16777736:1
       valid_lft forever preferred_lft forever
    inet 192.168.20.200/24 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fefc:81b2/64 scope link 
指明别名
[root@centos7 ~]# ip addr add 10.1.1.11/8   dev eno16777736 label eno16777736:2
[root@centos7 ~]# ip addr list|grep 10.1.1.11
    inet 10.1.1.11/8 scope global secondary eno16777736:2
[root@centos7 ~]# ifconfig | grep -B2 10.1.1.11

eno16777736:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.1.11  netmask 255.0.0.0  broadcast 0.0.0.0
ip addr管理网络ip地址
ip route - routing table management:路由表管理

    ip route add - add new route:添加路由
    ip route change - change route:修改路由
    ip route replace - change or add new one:替换路由
        TYPE PREFIX (default) :PREFIX是ip地址,路由类型可省略;
        dev NAME:接口名,不指明则自动获取;
        via ADDRESS:下一跳
        src ADDRESS:指明原地址
        如:
            ip  route   add  TYPE PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP]
        
        示例:
            # ip route add 192.168.0.0/24  via 10.0.0.1  dev eth1 src  10.0.20.100
            # ip  route  add default  via  GW                        
        
    ip route delete - delete route:删除路由
        ip  route  del  TYPE PRIFIX 
        
        示例:
            # ip  route delete  192.168.1.0/24
            
    ip route show - list routes:显示路由信息,可以显示某个特定后缀的;
        TYPE PRIFIX  
    ip route flush - flush routing tables:清空路由表
        TYPE  PRIFIX
    
    ip route get - get a single route:获取单条路由
        ip  route  get  TYPE PRIFIX
        

        示例:ip route  get  192.168.0.0/24

演示:
[root@centos7 ~]# ip addr add 10.0.10.100/8   dev eno16777736
[root@centos7 ~]# ip addr add 10.0.20.100/8   dev eno16777736
[root@centos7 ~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eno16777736 #添加路由,下一跳要存在,这里实验用请忽略
[root@centos7 ~]# ip route list
default via 192.168.1.1 dev eno16777736  proto static  metric 100 
10.0.0.0/8 dev eno16777736  proto kernel  scope link  src 10.1.1.10 
192.168.0.0/24 via 10.0.0.1 dev eno16777736 
192.168.1.0/24 dev eno16777736  proto kernel  scope link  src 192.168.1.110 
192.168.1.0/24 dev eno16777736  proto kernel  scope link  src 192.168.1.110  metric 100 
[root@centos7 ~]# ip route add 192.168.3.0/24 via 10.0.0.1 dev eno16777736 src 10.0.20.100 #添加路由,指明从接口那个ip出去
[root@centos7 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777736
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eno16777736
192.168.0.0     10.0.0.1        255.255.255.0   UG    0      0        0 eno16777736
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eno16777736
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777736
192.168.3.0     10.0.0.1        255.255.255.0   UG    0      0        0 eno16777736
[root@centos7 ~]# ip route list
default via 192.168.1.1 dev eno16777736  proto static  metric 100 
10.0.0.0/8 dev eno16777736  proto kernel  scope link  src 10.1.1.10 
192.168.0.0/24 via 10.0.0.1 dev eno16777736 
192.168.1.0/24 dev eno16777736  proto kernel  scope link  src 192.168.1.110 
192.168.1.0/24 dev eno16777736  proto kernel  scope link  src 192.168.1.110  metric 100 
192.168.3.0/24 via 10.0.0.1 dev eno16777736  src 10.0.20.100
[root@centos7 ~]# ip route del 192.168.0.0/24 #删除路由信息
ip route路由表管理

ss命令:

  ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,但它能显示更多更详细的 TCP连接状态的信息,且比 netstat 更快速高效。它使用了 TCP协议栈中 tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得 ss命令快捷高效。在没有 tcp_diag,ss也可以正常运行。

ss  [options]  [ FILTER ]
    选项:
        -t:TCP协议的相关连接
        -u:UDP相关的连接
        -w:raw socket相关的连接
        -l:监听状态的连接
        -a:所有状态的连接
        -n:数字格式
        -p:相关的程序及其PID
        -e:扩展格式信息
        -m:内存用量
        -o:计时器信息
        过滤器:只看某种状态的连接
    FILTER := [ state TCP-STATE ]  [ EXPRESSION ]
ss  [options]  [ FILTER ]
    选项:
        -t:TCP协议的相关连接
        -u:UDP相关的连接
        -w:raw socket相关的连接
        -l:监听状态的连接
        -a:所有状态的连接
        -n:数字格式
        -p:相关的程序及其PID
        -e:扩展格式信息
        -m:内存用量
        -o:计时器信息
        过滤器:只看某种状态的连接
    FILTER := [ state TCP-STATE ]  [ EXPRESSION ]
                
        TCP的常见状态:
            TCP FSM:


            established:代表一个打开的连接
            syn-sent:再发送连接请求后等待匹配的连接请求
            syn-recv:再收到和发送一个连接请求后等待对方对连接请求的确认
            fin-wait-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
            fin-wait-2:从远程TCP等待连接中断请求
            time-wait:等待足够的时间以确保远程TCP接收到连接中断请求的确认
            closed::没有任何连接状态
            close-wait:等待从本地用户发来的连接中断请求
            last-ack:等待原来的发向远程TCP的连接中断请求的确认
            listen:侦听来自远方的TCP端口的连接请求
            closing:等待远程TCP对连接中断的确认

            all : 所有以上状态
            connected : 除了listen and closed的所有状态
            synchronized :所有已连接的状态除了syn-sent
            bucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv.
            big : 和bucket相反.


        EXPRESSION:
            dport = 
            sport = 
                示例:'( dport = :22 or sport = :22 )'
                    ~]# ss   -tan    '(  dport = :22 or sport = :22  )'
                    ~]# ss  -tan  state  ESTABLISHED
    ss使用IP地址筛选
        ss src ADDRESS_PATTERN
        ss dst ADDRESS_PATTERN
        src:表示来源
        dst:表示目的
        ADDRESS_PATTERN:表示地址规则 
        如下:
        ss src 120.33.31.1 # 列出来之20.33.31.1的连接 
        # 列出来至120.33.31.1,80端口的连接
        ss src 120.33.31.1:http
        ss src 120.33.31.1:80

    ss使用端口筛选
        ss dport OP PORT 远程端口和一个数比较;ss sport OP PORT 本地端口和一个数比较。
        OP 可以代表以下任意一个: 
        <= or le : 小于或等于端口号
        >= or ge : 大于或等于端口号
        == or eq : 等于端口号
        != or ne : 不等于端口号
        < or gt : 小于端口号
        > or lt : 大于端口号


常用选项:
    ss -l 显示本地打开的所有端口
    ss -pl 显示每个进程具体打开的socket
    ss -t -a 显示所有tcp socket
    ss -u -a 显示所有的UDP Socekt
    ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接
    ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
    ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程
    ss -s 列出当前socket详细信息:

演示:
[root@centos6 ~]# ss -tan state established '( dport = :22 or sport = :22 )' 
Recv-Q Send-Q                   Local Address:Port                     Peer Address:Port 
0      0                        192.168.1.113:22                      192.168.1.103:63070
[root@centos6 ~]# ss sport = :22
State       Recv-Q Send-Q            Local Address:Port                Peer Address:Port   
ESTAB       0      52                192.168.1.113:ssh                192.168.1.103:63070
[root@centos6 ~]# ss  src 192.168.1.113:22
State       Recv-Q Send-Q            Local Address:Port                Peer Address:Port   
ESTAB       0      52                192.168.1.113:ssh                192.168.1.103:63070  
演示:ss命令

 

网络属性配置之修改配置文件

IP/NETMASK/GW/DNS等属性的配置文件

  /etc/sysconfig/network-scripts/ifcfg-IFACE
      IFACE:接口名称;

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服务来控制接口;
ifcfg-IFACE配置文件参数

 

当然我们也可以使用专用的命令的进行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)

 

给接口配置多个地址

ip addr之外,ifconfig或配置文件都可以;

(1) ifconfig  IFACE_LABEL  IPADDR/NETMASK
    ip  addr  add  IFADDR  dev  IFACE label NAME

    IFACE_LABEL: eth0:0, eth0:1, ...
(2) 为别名添加配置文件;
    DEVICE=IFACE_LABEL
    BOOTPROTO:网上别名不支持动态获取地址;因此可以是static, none
演示:一个接口给多个地址,添加别名
[root@centos7 ~]# ifconfig eno16777736:0 10.0.1.100/8
[root@centos7 ~]# ip addr add 10.0.2.200/8 dev eno16777736 label eno16777736:1
[root@centos7 ~]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.110  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fefc:81b2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:fc:81:b2  txqueuelen 1000  (Ethernet)
        RX packets 13918  bytes 1392671 (1.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8770  bytes 1785754 (1.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.1.100  netmask 255.0.0.0  broadcast 10.255.255.255
        ether 00:0c:29:fc:81:b2  txqueuelen 1000  (Ethernet)

eno16777736:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.200  netmask 255.0.0.0  broadcast 0.0.0.0
        ether 00:0c:29:fc:81:b2  txqueuelen 1000  (Ethernet)
演示:一个接口配置多个地址

 

生效方式:

网络服务:
    network
    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

CenOS 7 :nm(Network Manager)家族

nmcli命令:
    nmcli  [ OPTIONS ] OBJECT { COMMAND | help }
        OBJECT := { general | networking | radio | connection | device | agent  }
        
        general - general NetworkManager status and operations;通用功能
            COMMAND := { status | hostname | permissions | logging }
            
        networking - get or set general networking state of NetworkManager:网络相关
            COMMAND := { [ on | off | connectivity ] }
            
        radio - get or set radio switch states  :无线相关
            COMMAND := { all | wifi | wwan | wimax }
        
        device - show and manage network interfaces  :管理网络接口;类似ip link
            COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
        
        connection - start, stop, and manage network connections :配置连接 类似ip add
            COMMAND := { show | up | down | add | edit | modify | delete | reload | load }            
                modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
            
            如何修改IP地址等属性:
                # nmcli  conn  modify
                IFACE  [+|-]setting.property  value
                    ipv4.address
                    ipv4.gateway
                    ipv4.dns1
                    ipv4.method
                        manual


演示:
[root@centos7 ~]# man nmcli 
[root@centos7 ~]# nmcli dev show
GENERAL.设备:                           eno16777736
GENERAL.类型:                           ethernet
GENERAL.硬盘:                           00:0C:29:FC:81:B2
GENERAL.MTU:                            1500
GENERAL.状态:                           100 (连接的)
GENERAL.CONNECTION:                     eno16777736
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.容器:                  开
IP4.地址[1]:                            192.168.1.109/24
IP4.网关:                               192.168.1.1
IP4.DNS[1]:                             124.207.160.106
IP4.DNS[2]:                             219.239.26.42
IP6.地址[1]:                            fe80::20c:29ff:fefc:81b2/64
IP6.网关:                               

GENERAL.设备:                           lo
GENERAL.类型:                           loopback
GENERAL.硬盘:                           00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.状态:                           10 (未管理)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.地址[1]:                            127.0.0.1/8
IP4.网关:                               
IP6.地址[1]:                            ::1/128
IP6.网关:         

[root@centos7 ~]# nmcli dev status  仅显示当前活动的连接
设备         类型      状态    CONNECTION  
eno16777736  ethernet  连接的  eno16777736 
lo           loopback  未管理  --  

[root@centos7 ~]# nmcli device disconnect eno16777736 #禁用接口
[root@centos7 ~]# nmcli device connect eno16777736 #启用接口

[root@centos7 ~]# nmcli conn modify eno16777736 +ipv4.address 10.0.1.100 #添加地址
[root@centos7 ~]# nmcli conn up  eno16777736 #启动新的 Ethernet 连接
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@centos7 ~]# ip addr list | grep 10.0.1.100
    inet 10.0.1.100/32 brd 10.0.1.100 scope global eno16777736

其他参考:
        在 RedHat/CentOS 7.x 中使用 nmcli 命令管理网络
        http://linux.cn/article-5410-1.html
nmcli命令

 

路由的相关配置文件

  /etc/sysconfig/network-scripts/route-IFACE

    支持两种配置方式,但不可混用;

(1) 每行一个路由条目:
    TARGET  via  GW
    
(2) 每三行一个路由条目:
    ADDRESS#=TARGET
    NETMASK#=MASK
    GATEWAY#=NEXTHOP

 其他命令:nmap, ncat, tcpdump命令

 

nmap命令:   
    nmap(Network Mapper),是linux系统中一个常用的网络管理工具,可以扫描端口、嗅探主机所在的网络环境,以及判断网络中主机的操作系统等;    
       nmap [扫描类型...] [选项] {扫描目标说明}
       nmap [Scan Type...] [Options] {target specification}
       
    nmap localhost #查看主机当前开放的端口
    nmap -p 1024-65535 localhost #查看主机端口(1024-65535)中开放的端口
    nmap -PS 192.168.21.163 #探测目标主机开放的端口
    nmap -PS22,80,3306 192.168.21.163 #探测所列出的目标主机端口
    nmap -O 192.168.21.163 #探测目标主机操作系统类型
    nmap -A 192.168.21.163 #探测目标主机操作系统类型
    nmap --help #更多nmap参数请查询帮助信息
    
示例:  
    -sn: Ping Scan 只进行主机发现,不进行端口扫描
    -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启
   
    nmap -sn 192.168.64.0/24|awk -F "[ .]+" '/192/ {print $8}'
    nmap -PE 192.168.64.0/24
演示:
[root@centos7 ~]# nmap localhost #查看主机当前开放端口

Starting Nmap 6.40 ( http://nmap.org ) at 2015-12-31 16:06 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000070s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
25/tcp open  smtp

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

            nmap参考:
            Nmap扫描原理与用法
            http://www.2cto.com/Article/201210/158960.html
nmap命令

 

 

其他参考:http://img1.51cto.com/attachment/201305/31/2033581_1369962477MN7p.jpg

 

 

转载请注明出处:http://www.cnblogs.com/jasperhsu/p/5080284.html

posted on 2015-12-27 16:10  徐长伟  阅读(1753)  评论(0编辑  收藏  举报