第408集网络管理-网络基础管理
网络管理 - 网络基础管理
1. 网络基础概述
Linux作为一个成熟的操作系统, 在服务器市场、嵌入式设备等方面都取得了巨大的成功, 在网络上的应用也越来越多。 所以掌握如何在Linux系统中配置、管理网络就变得非常必要。
1.1 Linux7网卡命名规则
传统的rhel系统以eth0、eth1名来命名网卡, 在rhel7系统开始使用新的命名规则:
基于固件、设备结构、设备类型
命名规则说明
1. 由两个字母开头标示固件:
- 以太网网卡以
en开头 - 无线网卡以
wl开头
2. 设备结构:
o表示板载网卡(on-board)s热插拔结构(hotplug slot)pPCI插槽位置
网卡命名示例
| 命名 | 说明 | 示例 |
|---|---|---|
eno1 |
板载以太网卡 | eno16777728 |
ens33 |
PCI插槽以太网卡 | ens33 |
enp2s0 |
PCI插槽2,插槽0的以太网卡 | enp2s0 |
wlp3s0 |
PCI插槽3,插槽0的无线网卡 | wlp3s0 |
2. 网络接口信息查看
2.1 查看网络接口配置信息
使用ifconfig命令
1 | # 查看当前处于活动状态的网络接口 |
ifconfig输出信息说明
1 | eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
网卡配置信息含义:
| 字段 | 说明 |
|---|---|
| UP | 网卡处于活动状态 |
| BROADCAST | 支持广播 |
| RUNNING | 网线已接入 |
| MULTICAST | 支持组播 |
| MTU | 最大传输单元(字节),即此接口一次所能传输的最大封包 |
| inet | 显示IPv4地址行 |
| inet6 | 显示IPv6地址行 |
| link/ether | 指设备硬件(MAC)地址 |
| txqueuelen | 传输缓存区长度大小 |
| RX packets | 接收的数据包 |
| TX packets | 发送的数据包 |
| errors | 总的收包的错误数量 |
| dropped | 由于各种原因, 导致拷贝在内存过程中被丢弃 |
| collisions | 网络信号冲突情况, 值不为0则可能存在网络故障 |
2.2 使用ip命令查看
查看IP地址
1 | # 其他查看ip指令 |
ip命令输出说明
1 | 2:eth0: <BROADCAST,MULTICAST,①UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 |
说明:
- ①: 活动接口为UP
- ②: Link行指定设备的MAC地址
- ③: inet行显示IPv4地址和前缀
- ④: 广播地址、作用域和设备名称在此行
- ⑤: inet6行显示IPv6信息
查看网络统计信息
1 | # ip命令也可用于显示关于网络性能的统计信息, 比如: 发送和传送的数据包、错误、丢弃 |
3. NetworkManager管理网络
RHEL/CentOS7系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。
3.1 NetworkManager概述
NetworkManager提供的命令行和图形配置工具对网络进行设定, 设定保存的配置文件在/etc/sysconfig/network-scripts目录下, 工具有nmcli, nmtui, nm-connection-editor
概念说明:
- device: 物理设备, 例如
enp2s0,virbr0,team0 - connection: 连接设置, 具体网络配置方案
重要特性:
- 不同的网络连接配置可以应用到相同的物理设备,但物理设备同一时间只能应用其中某个网络连接
- 针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了
3.2 使用nmcli命令查看设备以及连接情况
1 | # 查看设备状态 |
3.3 使用nmcli创建新的连接
创建DHCP连接
1 | # 定一个名为dhcp的连接, 配置DHCP地址 |
创建静态IP连接
静态地址添加流程:
- 添加一个连接的配置
- 给连接指定一个名称
- 连接配置绑定物理网卡
- 网卡的类型,网卡开机启动
- 网卡通过什么途径获取地址(静态、dhcp)
- 配置对应的IP地址、掩码、网关、DNS
1 | # 新增一个静态地址的连接, 配置IP、掩码、网关等 |
3.4 使用nmcli修改已有的网络连接
1 | # 1.取消开机自动激活网络 |
3.5 使用nmcli管理网络配置文件
修改配置文件
1 | # 修改eht1-static配置文件 |
4. 使用原生Network管理网络
CentOS/RHEL的网络配置文件默认目录为/etc/sysconfig/network-scripts
默认第一块物理网卡配置文件为ifcfg-eth0, 如果有第二块物理网卡, 配置文件则为ifcfg-eth1以此类推。 注意: 如果新增物理网卡没有配置文件,可选择复制系统默认的进行修改。
4.1 停止NetworkManager服务
1 | # 删除NetworkManger建立连接, 同时停止NetworkManger服务 |
4.2 添加网络连接配置文件
1 | # 复制配置eth0配置文件为eth1 |
4.3 网卡配置文件选项说明
| 选项 | 描述 | 示例 |
|---|---|---|
BOOTPROTO |
获取地址方式[none|dhcp|static] | BOOTPROTO=none |
IPADDR |
固定IP地址 | IPADDR=192.168.56.12 |
PREFIX |
掩码 | PREFIX=24 |
NETMASK |
子网掩码 | NETMASK=255.255.255.0 |
GATEWAY |
网关 | GATEWAY=192.168.56.2 |
DNS1 |
域名解析 | DNS1=192.168.56.2 |
DEVICE |
设备名称 | DEVICE=eth1 |
NAME |
连接名称 | NAME="eth1" |
ONBOOT |
开机自启动 | ONBOOT=yes |
DEFROUTE |
将接口设定为默认路由[yes|no] | DEFROUTE=yes |
USERCTL |
允许非root用户管理接口[yes|no] | USERCTL=yes |
5. Route设置路由以及网关
Linux主机之间是使用IP进行通信, 假设A主机和B主机同在一个网段内且网卡都处于激活状态, 则A具备和B直接通信的能力, 但如果A主机和B主机处于两个不同的网段, 则A必须通过路由器才能和B通信, 路由器属于IT设备的基础设施, 每一个网段都应该至少有一个网关。
5.1 路由管理命令
增加路由
1 | # 增加网段路由 |
删除路由
1 | # 删除网段路由 |
查看路由表
1 | # 查看当前路由表 |
5.2 永久保存路由
如果重启, 配置信息就不存在, 必须将这种配置信息写到相关的配置文件中才能永久保存,比如网卡配置文件的GATEWAY。
方法1: 在网卡配置文件中设置
1 | # 在/etc/sysconfig/network-scripts/ifcfg-eth0中设置 |
方法2: 创建路由配置文件
1 | # 创建路由配置文件 |
方法3: 使用ip route命令
1 | # 添加永久路由 |
6. 主机名设定与名称解析服务
生产环境中必须配置主机名,同时主机名也需要遵循一定的规范。
6.1 主机名规范
公有云命名规范: 地区-项目-业务-服务-节点-地址
wh-shop-register-nginx-node1-192.168.56.13wh-med-pay-mysql-master01-192.168.56.11wh-med-pay-mysql-slave01-192.168.56.12
6.2 主机名查看与配置
使用hostname命令
1 | # hostname命令可以查看主机名, 也可以用于临时修改主机名 |
使用hostnamectl命令(推荐)
rhel7系统建议使用hostnamectl修改和查看主机名
1 | # 设定永久名称 |
6.3 DNS客户端配置
/etc/hosts文件
/etc/hosts文件, 加快域名解析, 方便小型局域网用户使用内部设备。
假设公司有A B两台主机, B主机添加的IP为192.168.69.12,为了方便访问B主机, 可以在A主机的/etc/hosts文件中添加一条记录:
1 | 192.168.69.12 hostB |
完成后在A主机上使用ping命令测试到B主机的连通性, 如果没有添加记录, 将会显示unknown host hostB的错误。
hosts文件示例:
1 | # /etc/hosts |
/etc/resolv.conf文件
使用hosts文件仅能为有限的主机记录, 无法将所有已知的主机名记录到hosts文件中, 因此当今几乎所有的主机都在使用DNS来解析地址, DNS是全互联网上主机名及其IP地址对应关系的数据库, 配置文件/etc/resolv.conf。
1 | [root@liyanzhao ~]# cat /etc/resolv.conf |
resolv.conf配置说明:
| 选项 | 说明 | 示例 |
|---|---|---|
nameserver |
DNS服务器地址 | nameserver 8.8.8.8 |
search |
搜索域 | search example.com |
domain |
本地域名 | domain example.com |
6. 网络检测工具与故障排查
6.1 ping命令
ping命令的目的在于测试另一台主机是否可达, 如果ping不到某台主机,就说明对方主机已经出现了问题, 但是不排除由于链路中的防火墙、ping被丢弃等原因造成ping不通的情况。
ping常用选项
| 选项 | 功能 | 示例 |
|---|---|---|
-c |
指定ping的次数 | ping -c 5 192.168.1.1 |
-i |
指定ping包的发送间隔 | ping -i 2 192.168.1.1 |
-w |
如果ping没有回应, 则在指定超时时间后退出 | ping -w 5 192.168.1.1 |
ping示例
1 | # 基本ping |
6.2 host/nslookup命令
host/nslookup命令是用来查询DNS记录的,如果使用域名作为host的参数, 命令返回该域名的IP。
1 | [root@liyanzhao~]# host sunrisenan.com |
6.3 traceroute命令
traceroute命令是用来路由跟踪, 检测网络故障出现在ISP运营商或是对端服务无法响应。
1 | [root@liyanzhao~]# traceroute liyanzhao.com |
6.4 ss/netstat命令
ss/netstat命令查看网络连接状态。
ss命令常用选项
| 选项 | 功能 | 示例 |
|---|---|---|
-t |
tcp协议的连接 | ss -t |
-a |
所有状态的连接 | ss -a |
-n |
数字化输出 | ss -n |
-u |
udp协议的连接 | ss -u |
-l |
处于listen状态的连接 | ss -l |
-p |
输出相应进程的名字 | ss -p |
ss命令示例
1 | # Show TCP sockets (LISTEN) |
6.5 常见端口
| 服务 | 端口 | 协议 |
|---|---|---|
| http | 80/tcp | TCP |
| https | 443/tcp | TCP |
| ssh | 22/tcp | TCP |
| ftp | 20,21/tcp | TCP |
| mysql | 3306/tcp | TCP |
| rsync | 873/tcp | TCP |
| redis | 6379/tcp | TCP |
6.6 网络故障排查
网络故障分类
网络故障分为硬件\软件故障:
- 硬件故障: 网卡损坏、链路故障、网卡驱动不兼容
- 软件故障: 配置错误、服务未启动、防火墙阻止
网络排查思路
ping本地回环口, 确定本机TCP/IP协议栈是否正常
1
ping 127.0.0.1
ping本机IP地址, 确定本地设备以及驱动是否正常
1
ping 192.168.1.100
ping同网段主机, 确定二层网络是否正常工作
1
ping 192.168.1.101
ping网关地址, 确定本地与网络是否正常
1
ping 192.168.1.1
ping公网地址, 确定本地路由是否正常
1
ping 8.8.8.8
ping公网域名, 确定DNS客户端是否正常
1
ping www.baidu.com
服务故障排查思路
使用telnet检测端口是否开放
1
telnet 192.168.1.100 80
检查服务端防火墙以及SElinux
1
2systemctl status firewalld
getenforce检查相应的权限是否配置正常
1
ls -l /etc/nginx/nginx.conf
检查日志是否有异常
1
2tail -f /var/log/messages
journalctl -xe检查完毕后持续测试
1
curl http://192.168.1.100
建议: 所有的排查思路都从OSI七层模型由下往上逐一进行排查(学会看日志)
7. Linux7修改网卡为eth0
7.1 已安装系统修改网卡命名
已安装Linux7系列操作系统, 修改网卡命名规则为eth0 eth1。
步骤1: 修改网卡配置文件
1 | [root@linux-node2~]# cd /etc/sysconfig/network-scripts/ |
步骤2: GRUB添加kernel参数
1 | [root@liyanzhao~]# vim /etc/sysconfig/grub |
步骤3: 重启系统生效
1 | [root@liyanzhao~]# reboot |
步骤4: 安装net-tools包
默认centos7不支持ifconfig命令安装net-tools包
1 | [root@liyanzhao~]# yum install net-tools |
7.2 安装系统时修改网卡命名
在安装系统选择Install Centos7按下Tab设定kernel内核参数。
增加内核参数: net.ifnames=0 biosdevname=0
这样安装完成后,网卡就会使用传统的eth0命名方式。
8. 网络管理命令总结
8.1 网络接口查看命令
| 命令 | 功能 | 示例 |
|---|---|---|
ifconfig |
查看网络接口 | ifconfig |
ifconfig -a |
查看所有接口 | ifconfig -a |
ip addr |
查看IP地址 | ip addr show |
ip link |
查看链路信息 | ip link show |
8.2 NetworkManager命令
| 命令 | 功能 | 示例 |
|---|---|---|
nmcli device |
查看设备状态 | nmcli device |
nmcli connection |
查看连接 | nmcli connection |
nmcli con add |
创建连接 | nmcli con add ... |
nmcli con modify |
修改连接 | nmcli con modify ... |
nmcli con up |
激活连接 | nmcli con up eth0 |
nmcli con down |
停用连接 | nmcli con down eth0 |
nmcli con delete |
删除连接 | nmcli con delete eth0 |
8.3 路由管理命令
| 命令 | 功能 | 示例 |
|---|---|---|
route -n |
查看路由表 | route -n |
route add |
添加路由 | route add -net 192.168.90.0/24 gw 192.168.56.254 |
route del |
删除路由 | route del -net 192.168.90.0/24 |
ip route |
查看路由 | ip route show |
ip route add |
添加路由 | ip route add 192.168.90.0/24 via 192.168.56.254 |
8.4 网络检测命令
| 命令 | 功能 | 示例 |
|---|---|---|
ping |
测试连通性 | ping 192.168.1.1 |
host |
DNS查询 | host example.com |
nslookup |
DNS查询 | nslookup example.com |
traceroute |
路由跟踪 | traceroute example.com |
ss |
查看网络连接 | ss -tnl |
netstat |
查看网络连接 | netstat -tnl |
8.5 主机名命令
| 命令 | 功能 | 示例 |
|---|---|---|
hostname |
查看/设置主机名 | hostname |
hostnamectl |
管理主机名 | hostnamectl set-hostname name |
9. 网络配置文件位置
9.1 主要配置文件
| 文件 | 说明 |
|---|---|
/etc/sysconfig/network-scripts/ifcfg-* |
网卡配置文件 |
/etc/hosts |
主机名解析文件 |
/etc/resolv.conf |
DNS配置文件 |
/etc/hostname |
主机名文件 |
/etc/sysconfig/network |
网络全局配置 |
9.2 配置文件示例
ifcfg-eth0示例
1 | TYPE=Ethernet |
10. 网络管理最佳实践
10.1 配置建议
- 使用NetworkManager: CentOS7推荐使用NetworkManager管理网络
- 使用UUID: 网卡配置使用UUID而不是设备名
- 规范命名: 主机名遵循命名规范
- 备份配置: 修改网络配置前备份配置文件
10.2 故障排查建议
- 分层排查: 从OSI七层模型底层开始排查
- 查看日志: 使用
journalctl和/var/log/messages查看日志 - 测试工具: 使用ping、traceroute等工具逐步排查
- 文档记录: 记录网络配置和变更历史
实战优化


