目录
一、网络配置
之前我们学过 ifconfig ,这个命令可以查看网络接口的地址配置信息,我们只知道它可以查看接口名称、IP 地址、子网掩码等。
但是,这个命令输出了一大堆内容,分别代表什么意思呢?
首当其冲的是 ens33,它是第一块以太网卡的名称。“ens33”中的“en”是“EtherNet”的缩写,表示网卡类型为以太网,“s”表示热插拔插槽上的设备(hot-plug Slot),数字“33”表示插槽编号。
flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 这一长串是 用来表示接口状态
UP 表示接口已激活
BROADCAST 表示接口支持广播
RUNNING 表示接口正在运行
MULTICAST 表示接口支持多播通信,能够向多个目标发送数据
第二行第三行分别是 网卡的IP地址等和ipv6地址
第四行 是网卡的mac地址
第五行 接受数据包个数、大小统计信息
第六行 异常接受包的个数、如丢包量、错误等
第七行 发送数据包个数、大小统计信息
第八行 发送包的个数、如丢包量、错误等
然后除了ens33这个网卡之外还有 lo 和 virbr0
lo 是“回环”网络接口,是 “loopback” 的缩写,它不代表真正的网络接口,而是一个虚拟的网络接口,其 IP 地址默认是“127.0.0.1”。回环地址通常仅用于对本机的网络测试
virbr0 是一个虚拟的网络连接端口,默认为0号虚拟网络连接端口;一般在通过虚拟机进行移植操作系统时,默认会以nat的网络地址转移,但是可以选择桥接或者是无网络连接也是可以的
1. 网卡配置
接着我们说回ens33,我们都知道,在一开始装完虚拟机后,我们都会进行网卡的配置,配置完网卡才能用远程进行连接,也就是 进入到 /ect/sysconfig/network-scripts/ifcfg-ens33 这个配置文件里进行编辑,下面这是我的网卡编辑页面
PROXY_METHOD 用于指定代理方法,这里是none代表没有
BROWSER_ONLY 用于指定是否仅在浏览器使用代理
BOOTPROTO 指定接口的引导协议,我们一般用 static 静态 ,dhcp 动态分配的话,我们可能第二天就连不上虚拟机了
DEFROUTE 字面意思, 表示该接口是否设置为默认路由
IPV4_FAILURE_FATAL 在 IPv4 配置失败时,是否将其视为致命错误
IPV6INIT 是否启用 IPv6 支持
IPV6_AUTOCONF 是否使用自动配置获取 IPv6 地址
IPV6_DEFROUTE 该接口是否应被配置为默认 IPv6 路由
IPV6_ADDR_GEN_MODE 表示使用稳定隐私地址机制生成 IPv6 地址
ONBOOT 在系统启动时是否启用该接口
其他的就不解释了,网卡都配完了这个还不知道就直接从头开始学吧
网卡配置完了,想要配置生效,需要重启网络服务
systemctl restart network
然后我们也可以用 ip a 查看一下网络接口信息
2. 路由
网卡弄完了我们看路由
route -n 查看路由表
ip route show=ip route 查看路由配置
route add -net [ip地址]/24 gw [下一跳] 可以临时添加路由条目
二、 网络信息查看
1.netstat
Linux网络配置就这样吧,我们接下来需要像查看进程信息那样,查看系统中的各种网络相关的配置信息
netstat 这个命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息
我们来试试看,输出了一大堆
这里,第一排有各列字段的名字,可能不认识的是前三个
Proto 这是协议类型
RefCnt 通常用于显示网络接口或其他网络对象的当前引用计数
Flags 通常用于显示与网络接口或路由条目相关的状态标志 [ ]就是没有特定的标志
后面分别是类型、状态、inode号、路径
但是这显示的,太杂了,看不过来,我们需要加一些选项来筛选特定的条目
-n 以数字的形式显示相关的主机地址、端口等信息
-r 显示路由表信息
-a 查看所有连接,包括监听端口
-l 查看监听端口
-t 查看 TCP协议相关的信息。
-u 查看 UDP协议相关的信息。
-p 显示与网络连接相关联的进程号、进程名称信息
比如,我想查看有关 sshd 的服务相关的网络配置信息
我可以用
netstat -anpt | grep sshd
-anpt 将几个参数组合起来使用,然后用grep过滤出含有 sshd 的条目
这里我们将 antp 改成 antu 就什么也查不到了,因为 sshd 是tcp连接用于获取关于套接字(socket)统计信息的详细信息
2. ss
ss 命令用于获取关于套接字(socket)统计信息的详细信息,它显示的内容和 netstat 差不多,但ss 的优势在于它能够显示更多更详细的连接状态信息,而且比netstat更快速更高效。
我想,你可能有疑问,什么是套接字?
套接字是计算机网络中用于通信的一种机制,它允许不同计算机上的进程通过网络进行数据交换和通信。套接字可以视作通信链路的一端,它定义了数据交换的规则和方式。
其实在键入的时候就已经能够明显的感觉到,ss 一按回车立马就显示内容了,而 netstat 却要等一会,更不用说当服务器的socket连接数量变得非常庞大的时候。
那么,为什么,为什么 ss 命令会别 netstat 快这么多呢?
除了优化了数据结构和算法,ss 直接读取TCP协议栈中用于分析统计的模块 tcp_diag ,可以获得Linux 内核中的最新消息,通过更少的系统调用来获取网络信息。
用法是
ss [参数] [过滤]
ss 命令的参数也很多,常用的有
-a 显示所有套接字
-l 和 netstat 差不多,也是显示监听状态的
-s 显示套接字使用概况
-p 显示使用套接字的进程
-t 仅显示 TCP套接字
-u 仅显示 UCP套接字
其他的也用的比较少,同样的我们可以 --help 查看用法,所以我就不一一列举了
现在我们来使用这个命令看看,比如,我要显示UDP连接
我们可以 ss -a -u
同样的,ss 命令我们也可以使用管道符号加过滤命令来实现一些我们想要的操作。
三、 额外的命令 time
之前我们提到,ss 命令比 netstat 命令输出速度要快很多,那假如,服务的量再小一点,就处在刚刚好难以分辨两个命令速度快慢程度,该怎么办呢?
其实 time 命令可以查看,系统执行另外一命令花了多长时间或者系统资源的使用情况 。
比如你想看执行 ss 命令花了多长时间,可以用
time ss
可以看到,非常快
我们再用同样的方法,来看看 netstat
20秒,差距可以说是非常大了
现在我们算是会用这个命令了,但是,输出的结果,有三行,是什么意思
real 是从进程开始执行到完成所耗费的 CPU 总时间,该时间包括进程执行时实际使用的 CPU 时间,进程耗费在阻塞上的时间(如等待完成 I/O 操作)和其他进程所耗费的时间(Linux 是多进程系统,进程在执行过程中,可能会有别的进程抢占 CPU)。
user 是进程执行用户态代码所耗费的 CPU 时间,该时间仅指进程执行时实际使用的 CPU 时间,而不包括其他进程所使用的时间和本进程阻塞的时间。
sys 是进程在内核态运行所耗费的 CPU 时间,即执行内核系统调用所耗费的 CPU 时间。
所以,一个命令真正的执行时间,就是 user + sys 的时间,real 时间包含了其他进程的阻塞时间。
以上就是关于Linux网络配置相关的内容,我能想到的暂时就这么多,后面想到了会补充,如果有什么不对的地方欢迎指点。