CentOS网络管理学习
Linux网络配置概述
目前将单一的桌面PC连接到网络是一件非常容易的事
但是将Linux服务器连接到网络,特别是在服务器配置上会有不同,典型的如
- 静态IP
- VPN网络
- 代理服务器
学习网络配置管理,不仅要学会使用网络,更重要的是掌握网络状态,排查系统问题
传统的Linux网络配置是通过network.service
来实现
基于network
的常用的命令有
- ifconfig
- ifup
- ifdown
传统的network.services
用于服务器上比较稳定的网络环境是非常方便的,唯一的问题是网络改动或切换时,必须要重启整个network服务
,导致短暂的中断。
在Centos7之后,提供了一种新的网络配置方式NetworkManager
,其主要工具是nmtui
和nmcli
nmtui
是可以在SHELL下执行的一个简单图形界面,以图形化方式来管理网络配置,更简单易懂。nmtui
的本质仍然是修改Linux的配置文件nmcli
是命令行的形式来管理网络类似ifconfig
、ifup
等传统命令,但优势更明显
注意:
传统的network
与新生的NetworkManager
两者同时管理网络时,会出现冲突
我们只需学会一种即可,首先我们要学会判断当前系统是使用的那种服务,使用下面两个命令进行测试
1 | systemctl is-enabled network |

上面两个命令测试的是开机是否自动启动
使用下面的命令可以看到当前是否启动
1 | systemctl status NetworkManager |
不论哪种方式,我们Linux的本质任然是文件配置,CentOS7的网络配置文件默认在 /etc/sysconfig/network-scripts/
目录下

ifcfg-eth0
就是eth0网卡的配置
使用 ifconfig
命令产看当前的网络配置

上图中eth0的信息如下
inet
192.168.29.4 lPv4地址netmask
255.255.240.0 子网掩码broadcast
192.168.31.255 广播IP
ether fa:16:3e:58:2b:a2 txqueuelen 1000 (Ethernet) MAC地址、速率、连接类型
RX packets 398909 bytes 32892437 (31.3 MiB) 接收数据包个数,大小
RX errors 0 dropped 0 overruns 0 frame 0 接数错误数
TX packets 104 bytes 6977(6.8 KiB) 发送数据包个数,大小
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 发送错误数
配置Linux网络
使用network配置网络
配置ip地址
命令格式:ifconfig 网卡名 IP地址 netmask 子网掩码
配置DNS服务器
Linux的DNS服务器在network下是基于文件配置的 配置文件路径为/etc/resolv.conf
我们使用vim编辑这个文件就可以进行配置
基于NetworkManager的配置
在使用NetworkManager
的时候,我们需要先关闭 network
防止冲突,使用下面的命令关闭network网络服务
1 | systemctl stop network |
想使用NetworkManager的前提是网卡可以被 NetworkManager管理,NetworkManager网络管理服务配置文件是 /etc/NetworkManager/NetworkManager.conf
我们使用vim来进行编辑,如下
1 | [main] |

使用 nmcli device
可以查看网络可管理状态

上面的状态可以通过下面的命令进行修改
1 | nmcli networking |
通过nmtui配置网络
在CentOS7中已经默认安装了nmtui工具,在SHELL中直接输入 nmtui
命令可以进行执行,下图就是nmtui工具的界面

选择编辑网络连接,可以看到下面界面

点击Edit后,进入编辑界面如下,默认ipv4是自动获取的,我们改为手动,点击show就看到需要配置的内容了

配置Ip,子网掩码,网关,DNS等信息

配置结束后,按方向键向下,一直到最后选择OK,保存,然后退出

在配置完后,也是需要重新加载一下配置文件的,执行下面的命令 nmcli device connect ens33
注意 ens33
是编辑的那个网卡的名字
基于文件配置
直接进入前面说的网卡配置文件进行修改 比如 eth0网卡的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0

记得修改后需要重新启动网卡eth0
配置文件,使用命令 ifdown eth0
和 ifup eth0
网络常用命令
ping
ping 目标IP地址
,通常用来诊断到目标IP地址的连通性,判断从本机到目标及其网络是否正常,比如
1 | ping www.baidu.com |

netstat
使用netstat
指令可以得知整个Linux系统的网络情况,选项如下
-a
或--all
显示所有连线中的Socket。-h
或--help
在线帮助。-i
或--interfaces
显示网络界面信息表单。-l
或--listening
显示监控中的服务器的Socket。-n
或--numeric
直接使用IP地址,而不通过域名服务器。-p
或--programs
显示正在使用Socket的程序识别码和程序名称。-s
或--statistics
显示网络工作信息统计表。-t
或--tcp
显示TCP传输协议的连线状况。-u
或--udp
显示UDP传输协议的连线状况。
常用的组合选项命令
netstat -natp
第一个红框表示正在监听TCP22 端口,进程ID为1018,进程名 sshd
第二个红框表示当前TCP的连接,及SSH连接
ss
ss
命令是 Socket Statistics 的缩写,用来获取socket统计信息
ss
的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时,无论是使用netstat
命令还是直接cat /proc/net/tcp
,执行速度都会很慢。
ss
快的秘诀在于,它利用到了TCP协议栈中tcp_diag
。tcp_diag
是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,这就确保了ss的快捷高效。
常用选项
-t
: tcp 显示tcp连接-a
: all 显示所有连接-l
: listening 列出所有打开的网络连接端口-s
: summary 显示Sockets摘要-p
: progress 显示端口对应的进程-n
: numeric 不解析服务名称,也可理解为以数字形式显示-r
: resolve 解析服务名称-m
: memory 显示内存情况
比如常用的组合选项 ss -lntp
以数字形式显示tcp连接,并显示进程名
