01.网络基础管理

发布于 2020-03-13  360 次阅读


  1. 1.网络基础概述

    Linux作为一个成熟的操作系统, 在服务器市场、嵌入式设备等方面都取得了巨大的成功, 在网络上的应用也越来越多。
    所以掌握如何在Linux系统中配置、管理网络就变得非常必要。

    Linux7网卡命名规则

    传统的rhel系统以eth0 eth1名来命名网卡, rhel7系统开始使用新的命名规则:

    基于固件、设备结构、设备类型

  • 1.由两个字母开头标示固件
    • 以太网网卡以 en 开头
    • 无线网卡以 wl 开头
  • 2.设备结构
    • o 表示板载网卡(on-board
    • s 热插拔结构(hotplug slot)
    • p PCI插槽位置
  1. 2.网络接口信息查看

    1.查看网络接口配置信息

    //查看当前处于活动状态的网络接口

    [root@lxgyw ~]# ifconfig

     

    //仅查看eth0网卡状态信息

    [root@lxgyw ~]# ifconfig eth0

     

    //查看所有网卡状态信息, 包括禁用和启用

    [root@lxgyw ~]# ifconfig -a

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 192.168.69.112 netmask 255.255.255.0 broadcast 192.168.69.255

    inet6 fe80::bd23:46cf:a12e:c0a1 prefixlen 64 scopeid 0x20<link>

    ether 00:0c:29:34:92:fc txqueuelen 1000 (Ethernet)

    RX packets 73137 bytes 17214613 (16.4 MiB)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 45428 bytes 13141869 (12.5 MiB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

     

    //网卡配置信息含义如下:

     

    UP: 网卡处于活动状态

    BROADCAST: 支持广播

    RUNNING: 网线已接入

    MULTICAST: 支持组播

    MTU: 最大传输单元(字节),即此接口一次所能传输的最大封包

     

    inet: 显示IPv4地址行

    inet6: 显示IPv6地址行

    link/enther: 指设备硬件(MAC)地址

    txqueuelen: 传输缓存区长度大小

    RX packets: 接收的数据包

    TX packets: 发送的数据包

    errors: 总的收包的错误数量

    dropped: 由于各种原因, 导致拷贝在内存过程中被丢弃

    collisions: 网络信号冲突情况, 值不为0则可能存在网络故障

     

     

    //其他查看ip指令

    [root@lxgyw ~]# ip addr show eth0

    2: eth0: <BROADCAST,MULTICAST,①UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:34:92:fc brd ff:ff:ff:ff:ff:ff

    ③inet 192.168.69.112/24 brd④ 192.168.69.255 scope global ens32

    valid_lft forever preferred_lft forever

    ⑤inet6 fe80::bd23:46cf:a12e:c0a1/64 scope link

    valid_lft forever preferred_lft forever

     

    ①: 活动接口为UP

    ②: Link行指定设备的MAC地址

    ③: inet行显示IPv4地址和前缀

    ④: 广播地址、作用域和设备名称在此行

    ⑤: inet6行显示IPv6信息

     

    //ip命令也可用于显示关于网络性能的统计信息, 比如: 发送和传送的数据包、错误、丢弃

    [root@lxgyw ~]# ip -s link show eth0

    3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000


    link/ether 14:18:77:35:0d:f5 brd ff:ff:ff:ff:ff:ff

    RX: bytes packets errors dropped overrun mcast


    518292951
    4716385
    0
    0
    0
    709280

    TX: bytes packets errors dropped carrier collsns


    23029861512
    15391427
    0
    0
    0
    0

  2. 3.NetworkManager管理网络

    RHEL/CentOS7系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。
    NetworkManager提供的命令行和图形配置工具对网络进行设定, 设定保存的配置文件在/etc/sysconfig/network-scripts目录下, 工具有 nmcli, nmtui, nm-connect-editor

    device物理设备, 例如 enp2s0,virbr0,team0
    connection连接设置, 具体网络配置方案

    1.不同的网络连接配置可以应用到相同的物理设备,但物理设备同一时间只能应用其中某个网络连接
    2.
    针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了

    使用nmcli命令查看设备以及连接情况

    //查看设备状态

    [root@lxgyw ~]# nmcli device

    DEVICE TYPE STATE CONNECTION

    ens32 ethernet connected ens32

    lo loopback unmanaged --

    //指定查看设备的详细状态

    [root@lxgyw ~]# nmcli dev show ens32

     

     

    //查看连接状态

    [root@lxgyw ~]# nmcli connection

    NAME UUID TYPE DEVICE

    ens32 a4319b27-80dc-4d63-a693-2927ea1018e7 802-3-ethernet ens32

    virbr0 64dbcb5f-b63a-4c88-8d1c-f93ead70a1b8 bridge virbr0

    //所有活动的连接

    [root@lxgyw ~]# nmcli con show --active

    //查看指定ID连接的详细情况

    [root@lxgyw ~]# nmcli con show "ens32"

    使用nmcli创建新的连接

    //定一个名为dhcp的连接, 配置DHCP地址

    //实质是添加/etc/sysconfig/network-scripts/ifcfg-ens33-dhcp配置文件

    [root@linux-node1 ~]# nmcli connection add \

    con-name ens33-dhcp ifname eth0 autoconnect yes \

    type ethernet ipv4.method auto

    [root@linux-node1 ~]# nmcli connection

    NAME UUID TYPE DEVICE

    eth0 000b9696-19d5-4ade-bca6-7ee0266ddcf0 802-3-ethernet eth0

    ens33-dhcp 33bcddf0-9cc4-47fe-9acf-ede449757d8a 802-3-ethernet --

     

     

     

    //新增一个静态地址的连接, 配置IP、掩码、网关等

    静态地址添加流程

    1.添加一个连接的配置

    2.给连接指定一个名称

    3.连接配置绑定物理网卡

    4.网卡的类型,网卡开机启动

    5.网卡通过什么途径获取地址(静态、dhcp)

    6.配置对应的IP地址、掩码、网关、DNS

    [root@linux-node1 ~]# nmcli connection add con-name eht1-static ifname eth1 \

    type ethernet autoconnect yes \

    ipv4.method manual \

    ipv4.addresses 192.168.56.100/24 \

    ipv4.gateway 192.168.56.2 \

    ipv4.dns 192.168.56.2 \

    +ipv4.dns 8.8.8.8

     

    //激活指定的连接名为eht1-static的连接

    [root@linux-node1 ~]# nmcli connection up eht1-static

    [root@lxgyw ~]# nmcli connection show

    NAME UUID TYPE DEVICE

    eht1-static
    6fdebe6e-5ef0-4a05-8235-57e317fdada0 802-3-ethernet eth0

    使用nmcli修改已有的网络连接

    //1.取消开机自动激活网络

    [root@lxgyw ~]# nmcli connection modify eht1-static \

    autoconnect no

     

    //2.修改连接的dns

    [root@lxgyw ~]# nmcli connection modify eht1-static \

    ipv4.dns 8.8.8.8

     

    //3.给连接再增加dns,有些设定值通过+/-可以增加或则移除设定

    [root@lxgyw ~]# nmcli connection modify eht1-static \

    +ipv4.dns 8.8.8.8

     

    //4.替换连接的静态IP和默认网关

    [root@lxgyw ~]# nmcli connection modify eht1-static \

    ipv4.addresses 192.168.69.252/24 ipv4.gateway 192.168.69.22

     

    //5.添加一个没有默认网关的IP

    [root@lxgyw ~]# nmcli connection modify eht1-static \

    +ipv4.addresses 192.168.70.12/24

     

    //6.修改完毕,nmlci仅仅修改并保存了配置,要激活更改,需要重激活连接

    [root@linux-node1 ~]# nmcli connection down eht1-static && \

    nmcli connection up eht1-static

     

     

    //删除自建的connection

    [root@lxgyw ~]# nmcli connection delete eht1-static

     

     

    // 图形工具配置 nm-connection-editor

    2.使用nmcli管理网络/etc/sysconfig/network-scripts/配置文件

    1.新增物理网卡
    2.
    拷贝配置文件(可以和设备名称一致)
    3.
    修改配置,UUID、连接名称、设备名称、IP地址
    4.
    重新加载网络配置
    5.
    启用连接,并检查

    //修改eht1-static配置文件

    [root@lxgyw ~]# vim /etc/sysconfig/network-scripts/ifcfg-eht1-static

    TYPE=Ethernet

    PROXY_METHOD=none

    BROWSER_ONLY=no

    BOOTPROTO=none

    IPADDR=192.168.69.232

    PREFIX=24

    GATEWAY=192.168.69.1

    DNS1=211.161.122.200

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=no

    NAME=ens32-staic

    UUID=6fdebe6e-5ef0-4a05-8235-57e317fdada0

    DEVICE=ens32

    ONBOOT=yes

     

    //手工编辑正在使用的配置文件,需要重载配置,然后重启

    [root@lxgyw ~]# nmcli connection reload

    [root@lxgyw ~]# nmcli connection down eht1-static && \

    nmcli connection down eht1-static

  3. 4.使用原生Network管理网络

    CentOS/RHEL的网络配置文件默认目录为/etc/sysconfig/network-scripts
    默认第一块物理网卡配置文件为ifcfg-eth0, 如果有第二块物理网卡, 配置文件则为ifcfg-eth1以此类推。
    注意: 如果新增物理网卡没有配置文件,可选择复制系统默认的进行修改。

    1.删除NetworkManger建立连接, 同时停止NetworkManger服务

    [root@lxgyw ~]# systemctl disable NetworkManager

    [root@lxgyw ~]# systemctl stop NetworkManager

    2.添加一块物理网卡, 然后新增网络连接配置文件

    //复制配置eth0配置文件为eth1

    [root@lxgyw ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1}

     

    //编辑网卡配置文件

    [root@nginx ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

    TYPE=Ethernet

    PROXY_METHOD=none

    BROWSER_ONLY=no

    BOOTPROTO=none

    DEFROUTE=yes

    NAME=eth1

    DEVICE=eth1

    ONBOOT=yes

    IPADDR=192.168.56.12

    NETMASK=255.255.255.0

    GATEWAY=192.168.56.2

    DNS1=192.168.56.2

     

    //重启network网络服务加载网络

    [root@lxgyw ~]# systemctl restart network.service

     

     

    //选项
    描述

    BOOTPROTO=none //获取地址方式[none|dhcp|static]

    IPADDR=192.168.56.12 //固定IP地址

    PREFIX=24 //掩码

    GATEWAY=192.168.56.2 //网关

    DNS1=192.168.56.2 //域名解析

    DEVICE=eth1 //设备名称

    NAME="eth1" //连接名称

    ONBOOT=yes //开机自启动

    DEFROUTE=yes //将接口设定为默认路由[yes|no]

    USERCTL=yes //允许非root用户管理接口[yes|no]

  4. 5.Route设置路由以及网关

    Linux主机之间是使用IP进行通信, 假设A主机和B主机同在一个网段内且网卡都处于激活状态, A具备和B直接通信的能力, 但如果A主机和B主机处于两个不同的网段, A必须通过路由器才能和B通信, 路由器属于IT设备的基础设施, 每一个网段都应该至少有一个网关

    //增加网段路由

    [root@lxgyw ~]# route add -net 192.168.90.0/24 gw 192.168.56.254

    [root@lxgyw ~]# route add -net 0.0.0.0/0 gw 192.168.56.254

    //删除网段路由

    [root@lxgyw ~]# route del -net 192.168.90.0/24

    [root@lxgyw ~]# route del -net 0.0.0.0/0 gw 192.168.56.254

     

    //增加主机路由

    [root@lxgyw ~]# route add -host 192.168.70.1 gw 192.168.56.254

    //删除主机路由

    [root@lxgyw ~]# route del -host 192.168.70.1/32

     

    //查看当前路由表

    route -n

    如果重启, 配置信息就不存在, 必须将这种配置信息写到相关的配置文件中才能永久保存,比如网卡配置文件的GATEWAY

  5. 5.主机名设定与名称解析服务

    生产环境中必须配置主机名,同时主机名也需要遵循一定的规范, 比如:

    公有云: 地区-项目-业务-服务-节点-地址

    wh-shop-register-nginx-node1-192.168.56.13

    wh-med-pay-mysql-master01-192.168.56.11

    wh-med-pay-mysql-slave01-192.168.56.12

    1.主机名查看与配置

    //hostname命令可以查看主机名, 也可以用于临时修改主机名

    [root@lxgyw ~]# hostname "test"

     

     

    rhel7系统建议使用hostnamectl修改和查看主机名

    //设定永久名称

    [root@lxgyw ~]# hostnamectl set-hostname nginx.node1.lxgyw.com

    //永久修改主机名会修改/etc/hostname文件

    [root@lxgyw ~]# cat /etc/hostname

    nginx.node1.lxgyw.com

     

    //检查状态信息

    [root@lxgyw ~]# hostnamectl


    Static hostname: nginx.node1.lxgyw.com

    Icon name: computer-vm

    Chassis: vm

    Machine ID: af0cdce735c041eab3a8df17dd08c112

    Boot ID: 72d7e90f0edb4880978eb18e73d4764c

    Virtualization: vmware

    Operating System: Red Hat Enterprise Linux Server 7.4 (Maipo)

    CPE OS Name: cpe:/o:redhat:enterprise_linux:7.4:GA:server

    Kernel: Linux 3.10.0-693.el7.x86_64

    Architecture: x86-64

    DNS客户端配置

    /etc/hosts文件, 加快域名解析, 方便小型局域网用户使用内部设备

    假设公司有A B两台主机, B主机添加的IP192.168.69.12,为了方便访问B主机, 可以在A主机的/etc/hosts文件中添加一条记录

    192.168.69.12 hostB

    完成后在A主机上使用ping命令测试到B主机的连通性, 如果没有添加记录, 将会显示unknown host hostB的错误

    使用hosts文件仅能为有限的主机记录, 无法将所有已知的主机名记录到hosts文件中, 因此当今几乎所有的主机都在使用DNS来解析地址DNS是全互联网上主机名及其IP地址对应关系的数据库, 配置文件/etc/resolv.conf

    [root@lxgyw ~]# cat /etc/resolv.conf

    # Generated by NetworkManager

    search node1.lxgyw.com

    nameserver 211.161.122.200

  6. 6.网络检测工具与故障排查

    ping命令的目的在于测试另一台主机是否可达, 如果png不到某台主机,就说明对方主机已经出现了问题, 但是不排除由于链路中的防火墙、ping被丢弃等原因造成ping不通的情况

    -c 指定ping的次数

    -i 指定ping包的发送间隔

    -w 如果ping没有回应, 则在指定超时时间后退出

     

     

    hostn/slookup命令是用来查询DNS记录的,如果使用域名作为host的参数, 命令返回该域名的IP

    [root@lxgyw~]# host lxgyw.com

    traceroute命令是用来路由跟踪, 检测网络故障出现在ISP运营商或是对端服务无法响应

    [root@lxgyw~]# traceroute lxgyw.com

    traceroute to lxgyw.com (118.190.174.159), 64 hops max, 52
    byte packets


    1
    192.168.160.2 (192.168.160.2) 1.498 ms 1.322 ms 1.272 ms


    2
    172.16.1.1 (172.16.1.1) 1.449 ms 1.259 ms 1.150 ms


    3
    211.161.160.1 (211.161.160.1) 2.420 ms 3.109 ms 2.672 ms


    4 * * *


    5 * * *

    ss/netstat命令查看网络连接状态

    -t tcp协议的连接

    -a 所有状态的连接

    -n 数字化输出

    -u upd协议的连接

    -l 处于listen状态的连接

    -p 输出相应进程的名字

     

    1. Show TCP sockets (LISTEN)

    [root@lxgyw~]# ss -tnl

    [root@lxgyw~]# ss -tnl |grep :80

    [root@lxgyw~]# ss -tnl |grep :21

    [root@lxgyw~]# ss -atn

    [root@lxgyw~]# ss -atn |grep :22

     

    //常见端口

    http 80/tcp

    https 443/tcp

    ssh 22/tcp

    ftp 20,21/tcp

    mysql 3306/tcp

    rsync 873/rsync

    redis 6379/tcp

    网络故障排查

  • 网络故障分为硬件\软件故障
    • 网卡损坏
    • 链路故障
    • 网卡驱动不兼容
  • 网络排查思路
    • 1.ping本地回环口, 确定本机TCP/IP协议栈是否正常
    • 2.ping本机IP地址, 确定本地设备以及驱动是否正常
    • 3.ping同网段主机, 确定二层网络是否正常工作
    • 4.ping网关地址, 确定本地与网络是否正常
    • 5.ping公网地址, 确定本地路由是否正常
    • 6.ping公网域名, 确定DNS客户端是否正常
  • 服务故障排查思路
    • 1.使用telnet检测端口是否开放
    • 2.检查服务端防火墙以及SElinux
    • 3.检查相应的权限是否配置正常
    • 4.检查日志是否有异常
    • 5.检查完毕后持续测试

建议: 所有的排查思路都从OSI七层模型由下往上逐一进行排查(学会看日志)

  1. 7.Linux7修改网卡为eth0

    1.已安装Linux7系列操作系统, 修改网卡命名规则为eth0 eth1

    //修改网卡配置文件

    [root@linux-node2~]# cd /etc/sysconfig/network-scripts/

    [root@linux-node2network-scripts]# mv ifcfg-eno16777728 ifcfg-eth0

    [root@linux-node2 network-scripts]# vim ifcfg-eth0

    NAME=eth0

    DEVICE=eth0

     

    //GRUB添加kernel参数

    [root@lxgyw~]# vim /etc/sysconfig/grub

    GRUB_CMDLINE_LINUX="...net.ifnames=0 biosdevname=0 quiet"

    [root@lxgyw~]# grub2-mkconfig -o /boot/grub2/grub.cfg

     

    //重启系统生效

    [root@lxgyw~]# reboot

     

    //默认centos7不支持ifconfig命令安装net-tools

    [root@lxgyw~]# yum install net-tools

    [root@lxgyw~]# ifconfig eth0 #在次查看网卡信息

    eth0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 192.168.56.12 netmask 255.255.255.0 broadcast 192.168.56.255

    inet6 fe80::20c:29ff:fe5c:7bb1 prefixlen 64

    scopeid 0x20<link>

    ether 00:0c:29:5c:7b:b1 txqueuelen 1000 (Ethernet)

    RX packets 152 bytes 14503 (14.1 KiB)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 98 bytes 14402 (14.0 KiB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    2.在安装系统选择Install Centos7按下Tab设定kernel内核参数


    增加内核参数net.ifnames=0 biosdevname=0


    检查是否修改成功


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

        


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。