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的信息如下
inet192.168.29.4 lPv4地址netmask255.255.240.0 子网掩码broadcast192.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连接,并显示进程名



