Linux网络属性配置管理及其相关命令

2017-02-22 22:29:32
啊超
1195
最后编辑:啊超 于 2017-02-26 13:43:14

Linux网络属性配置管理及其相关命令

作者:chaochao3博客  http://chaochao3.blog.51cto.com/10446790/1692896


TCP/IP协议:

    网络访问层(Network Access Layer)在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。

    互联网层(Internet Layer)是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP,Internet Protocol)。TCP/IP参考模型的互联网层和OSI参考模型的网络层在功能上非常相似。

    传输层(Tramsport Layer)使源端和目的端机器上的对等实体可以进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。

    应用层(Application Layer)包含所有的高层协议,包括:虚拟终端协议(TELNET,TELecommunications NETwork)、文件传输协议(FTP,File Transfer Protocol)、电子邮件传输协议(SMTP,Simple Mail Transfer Protocol)、域名服务(DNS,Domain Name Service)、网上新闻传输协议(NNTP,Net News Transfer Protocol)和超文本传送协议(HTTP,HyperText Transfer Protocol)等。TELNET允许一台机器上的用户登录到远程机器上,并进行工作;FTP提供有效地将文件从一台机器上移到另一台机器上的方法;SMTP用于电子邮件的收发;DNS用于把主机名映射到网络地址;NNTP用于新闻的发布、检索和获取;HTTP用于在WWW上获取主页。

wKioL1XlnXTgipPjAAN9VAtESbk388.jpg

传输层协议:

  tcp, udp, sctp


网络层协议:

  ip

IPv4 地址分类:

点分十进制:0-255

0000 0000 - 1111 1111

0.0.0.0-255.255.255.255

A类:

  0 000 0000 - 0 111 1111: 1-127

  网络数:126, 127

  每个网络中的主机数:2^24-2

  默认子网掩码:255.0.0.0

  私网地址:10.0.0.0/8

B类:

  10 00 0000 - 10 11 1111:128-191

  网络数:2^14

  每个网络中的主机数:2^16-2

  默认子网掩码:255.255.0.0

  私网地址:172.16.0.0/16-172.31.0.0/16

C类:

  110 0 0000 - 110 1 1111: 192-223

  网络数:2^21

  每个网络中的主机数:2^8-2

  默认子网掩码:255.255.255.0

  私网地址:192.168.0.0/24-192.168.255.0/24

D类:组播

  1110 0000 - 1110 1111: 224-239

E类:

  240-255


子网掩码:

  172.16.100.100/255.255.0.0, 172.17.1.1


跨网络通信:路由(一般按照最少路径或最小网络匹配)

  主机路由:从一台主机到另一主机经过的路由

  网络路由:从主机发出的数据包通过该路由连接到网络

  默认路由:从主机发出的所有数据包都经该路由发出

wKiom1XsQX7yFxsmAADhky-vWhs155.jpg

将Linux主机接入到网络中:wKioL1XsRVLSkwy2AAJrttpydTQ861.jpg

IP/mask

路由:默认网关

DNS服务器

  主DNS服务器

  次DNS服务器

  第三DNS服务器







wKiom1Xupvqi_ZueAADigJONuyc462.jpg

配置方式:

  静态指定:

    ifcfg: ifconfig, route, netstat

    ip: object {link, addr, route}, ss, tc

  配置文件

    system-config-network-tui (setup)

    CentOS 7:

          nmcli, nmtui(tui:test user interface)

  动态分配:

    DHCP: Dynamic Host Configuration Protocol


配置网络接口:

  接口命名方式:

    CentOS 6: 根据MAC地址识别

      以太网:eth[0,1,2,...] 

      ppp:ppp[0,1,2,...](拨号点对点网络)


ifconfig命令

ifconfig [interface]

# ifconfig IFACE [up|down]    [启用|禁用]指定接口

            如: ifconfig eth0 显示指定网络接口信息

wKiom1XlqayjhTtGAAIasBwhIgE038.jpg

wKioL1Xlq9DQ9LH_AALzEcDU2Nk813.jpg

wKioL1XsTgLA3izAAAFvpSiL6XE891.jpg

ifconfig interface [aftype] options | address ...

# ifconfig IFACE IP/mask [up]

        [root@localhost ~]# ifconfig eth0 172.16.33.16/16 给指定接口配置IP/掩码

wKiom1Xtf6bC1dVjAAJW2NpPtt0905.jpg

# ifconfig IFACE IP netmask MASK

        [root@localhost ~]# ifconfig eth0 172.16.33.13 netmask 255.255.0.0

wKiom1XtgB3xEhV9AAIC-R751wA505.jpg

注意:立即生效,重启失效;

[禁用]启用混杂模式:[-]promisc (一般用于网络监控)

     混杂模式表示即便目标MAC不是自己也会接收

route命令

路由管理命令

  查看:route -n

wKiom1Xlrr7TjXZnAAFtfs58iHY867.jpg

  添加:route add

    route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If]

              网络|主机             掩码         网关    

  目标:192.168.1.3  网关:172.16.0.1

    ~]# route add -host 192.168.1.3[/32] gw 172.16.0.1 

                                   如果目标是主机则掩码为32位,如下图

wKioL1XsU3CjPeBZAAE8l8LlUv0811.jpg  

目标:192.168.0.0 网关:172.16.0.1

    ~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0

    ~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

wKioL1XsVFGRfAr8AAFKknnsM5U605.jpg

默认路由,网关:172.16.0.1

  ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1

  ~]# route add default gw 172.16.0.1

wKiom1XsUzfz80QzAAE2Pp5CVSI861.jpg

删除:route del

  route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]


  目标:192.168.1.3  网关:172.16.0.1

        wKioL1XsVbOivWXGAAEG4sa53X0388.jpg

  目标:192.168.0.0 网关:172.16.0.1

    ~]# route del -net 192.168.0.0 netmask 255.255.255.0

wKiom1XsVPmwrwhLAADjr7nqz98151.jpg

DNS服务器指定

/etc/resolv.conf

nameserver DNS_SERVER_IP1

nameserver DNS_SERVER_IP2

nameserver DNS_SERVER_IP3

wKiom1XltKuhoIuyAADixrbrkDk422.jpg


正向解析:FQDN-->IP

# dig -t A FQDN(完全合格域名)

# host -t A FQDN

       wKiom1XltX-jEPLMAAMNsKB96fI790.jpg

反解:IP-->FQDN

# dig -x IP

# host -t PTR IP

FQDN: www.magedu.com.

netstat命令:

    netstat - Print network connections, routing tables, interface statistics, 

              masquerade connections, and multicast memberships


显示网络连接:

netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] 

                [--extend|-e[--extend|-e]]  [--program|-p]

-t: tcp协议相关

-u: udp协议相关

-w: raw socket相关  裸套接字相关

-l: 处于监听状态

-a: 所有状态

-n: 以数字显示IP和端口;

-e:扩展格式

-p: 显示相关进程及PID


常用组合:

-tan, -uan, -tnl, -unl

wKioL1XlvfrAdR_ZAANPcB5BDzc179.jpg

wKiom1XlvJrSTJXAAAF5nR0RN3Q641.jpg    

wKiom1XlvU7DvGTmAAHgr2YhLQE589.jpgwKiom1XlvejwIFX8AAICSp47PbU722.jpg

显示路由表:

netstat  {--route|-r} [--numeric|-n]

-r: 显示内核路由表

-n: 数字格式

       wKiom1XlvvyTOnd9AAI9ikTqJss313.jpg

显示接口统计数据:

netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] 


# netstat -i

# netstat -I IFACE  

wKiom1XlwFjwNc1eAAE9AvXtVdQ753.jpg   

配置Linux网络属性:ip命令


ip命令:

  ip - show / manipulate routing, devices, policy routing and tunnels

        显示或者配置路由,设备,策略路由和隧道

  ip [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT := { link | addr | route }

  link OBJECT:

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

set:

                   dev IFACE

   可设置属性:

up and down:激活或禁用指定接口;

                          [root@localhost ~]# ip link set eth0 down

                          [root@localhost ~]# ip link set eth0 up

show:

   [dev IFACE]:指定接口

   [up]:仅显示处于激活状态的接口

wKioL1XtlsGhgDjJAAG5wfBtugw188.jpg

wKiom1XtlVXzpOvBAAFxzkUIvKc778.jpg

ip address - protocol address management

    ip addr { add | del } IFADDR dev STRING

[label LABEL]:添加地址时指明网卡别名

[scope {global|link|host}]:指明作用域

global: 全局可用;

link: 仅链接可用;

host: 本机可用;

[broadcast ADDRESS]:指明广播地址

wKioL1Xtne_xxaFdAAE1pqTaC1c964.jpg

[root@localhost ~]# ip addr del 172.16.33.100/16 dev eth0          

wKioL1XtoDuQgJ32AAJe71MVblU955.jpg

[root@localhost ~]# ip addr flush dev eth0 label 'eth0:0'          

    ip address show - look at protocol addresses

[dev DEVICE]

[label PATTERN]

[primary and secondary]

wKiom1Xtmi3TFG46AALM3mv3iRg753.jpg

    ip address flush - flush protocol addresses

使用格式同show

            ip route - routing table management

    ip route add

添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP

    TARGET:

主机路由:IP(不可指掩码)

网络路由:NETWORK/MASK

    添加网关:ip route add defalt via GW dev IFACE

wKiom1Xto0rx4X9nAAC36K30gP8941.jpg

                [root@localhost ~]# ip route del 192.168.0.0/24 via 172.16.0.1[ dev eth0]

[root@localhost ~]# ip route add default via 172.16.0.1  #添加默认网关

    ip route delete

删除路由:ip route del TARGET 

                [root@localhost ~]# ip route del default  #删除默认网关

    ip route show

    ip route flush

[dev IFACE]   与某接口相关

[via PREFIX]  与指定网关相关


ss命令:网络状态查看工具

    格式:ss [OPTION]... [FILTER]

选项:

    -t: tcp协议相关

    -u: udp协议相关

    -w: 裸套接字相关

    -x:unix sock相关  unix套接字相关,一种基于本机内存的快速数据交换

    -l: listen状态的连接

    -a: 所有

    -n: 数字格式

    -p: 相关的程序及PID

    -e: 扩展的信息

    -m:内存用量

    -o:计时器信息

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

wKioL1XtqF6TUfDQAAHI6T3SpwM842.jpg

    TCP的常见状态:

        tcp finite state machine:

            LISTEN: 监听

            ESTABLISHED:已建立的连接

            FIN_WAIT_1

            FIN_WAIT_2

            SYN_SENT

            SYN_RECV

            CLOSED

wKiom1Xtq4fiNNhlAAB7ScpnGy4186.jpg

            EXPRESSION:

                dport = 

                sport = 

                示例:’( dport = :ssh or sport = :ssh )’


     常用组合:

        -tan, -tanl, -tanlp, -uan


修改配置文件:

IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE

路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE(默认不存在需手动创建)


/etc/sysconfig/network-scripts/ifcfg-IFACE:

    DEVICE:此配置文件应用到的设备;

    HWADDR:对应的设备的MAC地址;

    BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;

    NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;

    ONBOOT:在系统引导时是否激活此设备;

    TYPE:接口类型;常见有的Ethernet, Bridge;

    UUID:设备的惟一标识;

    IPADDR:指明IP地址;

    NETMASK:子网掩码;

    GATEWAY: 默认网关;

    DNS1:第一个DNS服务器指向;

    DNS2:第二个DNS服务器指向;

    USERCTL:普通用户是否可控制此设备;

    PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖

             至/etc/resolv.conf文件中;

       wKioL1XlqYjyD52tAAEp9k1J-YE049.jpg

        [root@localhost ~]# service network restart  #立即生效

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

    两种风格:(不能混合使用)

        (1) TARGET via GW

        (2) 每三行定义一条路由

            ADDRESS#=TARGET

            NETMASK#=mask

            GATEWAY#=GW

wKioL1XusWjSaVPVAALfZ_ShAhI617.jpg

wKiom1XusdiDbsOeAAITjHLq65A851.jpg

给网卡配置多地址:

    ifconfig:

        ifconfig IFACE_ALIAS(网卡别名)

            [root@localhost ~]# ifconfig eth0:0 192.168.0.20/24 up

    ip

        ip addr add 

    配置文件:

        ifcfg-IFACE_ALIAS

            DEVICE=IFACE_ALIAS

    注意:网关别名不能使用dhcp协议引导;

            wKioL1XutvuA6t8kAACgCuZzL28662.jpg

Linux网络属性配置的tui(text user interface):

    [root@localhost network-scripts]# system-config-network-tui

    也可以使用setup找到;

    注意:记得重启网络服务方能生效;


配置当前主机的主机名:

    hostname [HOSTNAME]

    /etc/sysconfig/network

    HOSTNAME=

      [root@localhost network-scripts]# hostname www.mageedu.com

     wKiom1Xut0yC_0hGAACgjOSKn3w557.jpg

网络接口识别并命名相关的udev配置文件:

    /etc/udev/rules.d/70-persistent-net.rules

        立即生效需卸载网卡后重新装载

    卸载网卡驱动:

        modprobe -r e1000

    装载网卡驱动:

        modprobe e1000

wKioL1XuurajtAWWAAFvdddLzqI865.jpg

CentOS 7网络属性配置


传统命名:以太网eth[0,1,2,...], wlan[0,1,2,...]


可预测功能

   udev支持多种不同的命名方案:

        Firmware, 拓扑结构


(1) 网卡命名机制

    systemd对网络设备的命名方式:

    (a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如

        eno1;

    (b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如

        ens1; 

    (c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0;

    (d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56; 

    (e) 上述均不可用时,则使用传统命名机制;

    上述命名机制中,有的需要biosdevname程序的参与;


(2) 名称组成格式

    en: ethernet

    wl: wlan

    ww: wwan


    名称类型:

        o<index>: 集成设备的设备索引号;

        s<slot>: 扩展槽的索引号;

        x<MAC>: 基于MAC地址的命名;

        p<bus>s<slot>: enp2s1


网卡设备的命名过程:

    第一步:

        udev, 辅助工具程序/lib/udev/rename_device会根据/usr/lib/udev/rules.d/60-net.rules查

              询/etc/sysconfig/network-scripts/ifcfg-*文件,根据MAC读取device指向的名称

    第二步:

        biosdevname 会根据/usr/lib/udev/rules.d/71-biosdevname.rules

    第三步:

        通过检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description当中的设备属性信息命名

          ID_NET_NAME_ONBOARD, ID_NET_NAME_SLOT, ID_NET_NAME_PATH


回归传统命名方式:

    (1) 编辑/etc/default/grub配置文件

        GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"

wKioL1XuzZiCVwW5AADoS3j_rR8011.jpg

    (2) 为grub2生成其配置文件

        [root@localhost ~]# grub2-mkconfig -o /etc/grub2.cfg

    (3) 重启系统


地址配置工具:nmcli

    nmcli  [ OPTIONS ] OBJECT { COMMAND | help }

        device - show and manage network interfaces

        connection - start, stop, and manage network connections

wKiom1Xu1oqxgfCrAAHdOYhDfa8814.jpg

   如何修改IP地址等属性:

        #nmcli connection modify IFACE [+|-]setting.property value

           setting.property:

                ipv4.addresses

                ipv4.gateway

                ipv4.dns1

                ipv4.method

                  manual

[root@localhost ~]# nmcli connection modify eth0 +ipv4.addresses 172.16.100.12/16

wKioL1Xu4KbzL5Q7AARGmsFPjf8580.jpgwKiom1Xu3rPAL2xWAALvWgnpjLI803.jpg

网络接口配置tui工具:nmtui


主机名称配置工具:hostnamectl

    status

    set-hostname