目录
一、查看网络配置
1.1 ifconfig
主机的网络接口卡(网卡)通常称为网络接口。在 Linux 操作系统中,使用 ifconfig 命令可以查看网络接口的地址配置信息(Interface Configuration)
若采用 mini 版 CentOS 7 安装的系统,默认是没有 ifconfig 命令的,需要先通过 yum 方式安装 net-tools 软件包,才有 ifconfig 命令
ens33:第一块以太网卡的名称。“ens33”中的“en”是“EtherNet”的缩写,表示网卡类型为以太网,“s”表示热插拔插槽上的设备(hot-plug Slot),数字“33”表示插槽编号。
lo:“回环”网络接口,“lo”是“loopback”的缩写,它不代表真正的网络接口,而是一个虚拟的网络接口,其 IP 地址默认是“127.0.0.1”。回环地址通常仅用于对本机的网络测试
ifconfig #显示已启用的网络接口,不包括禁用的设备
(1)第一行:以太网卡的名字不是常见的eth0,变成了ens33。
其中en代表以太网卡
ens33代表PCI接口的物理位置为(0,3), 其中横座标代表bus,纵座标代表slot
UP:代表此网络接口为启用状态(down为关闭状态)
RUNNING:代表网卡设备已连接
MULTICAST:表示支持组播
MTU:为数据包最大传输单元
(2)第二行:网卡的IP地址、子网掩码、广播地址
(3)第三行:IP v6地址
(4)第四行:Ethernet(以太网)表示连接类型;
ether:表示为网卡的MAC地址
(5)第五行:接受数据包个数、大小统计信息
(6)第六行:异常接受包的个数、如丢包量、错误等
(7)第七行:发送数据包个数、大小统计信息
(8)第八行:发送包的个数、如丢包量、错误等
ifconfig -a #显示所有活动及非活动的连接
二、修改网络配置文件
网络接口的配置文件默认位于/etc/sysconfig/network-script/ifcfg-ens33
TYPE=Ethernet #设置网卡类型,“Ethernet”表示以太网。
BOOTPROTO=static #设置网络接口的配置方式,值为“static”时表示使用静态指定的 IP 地址,为“dhcp”时表示通过 DHCP 的方式动态获取地址。
DEVICE=ens33 #设置网络接口的名称
NAME=ens33 #设置网络接口的名称
UUID=01f717ed-f7ac-4ac0-a209-c7c5889e3635 #设备ID
ONBOOT=yes #设置网络接口是否在 Linux 操作系统启动时激活。
IPADDR=192.168.126.9 #设置网络接口的 IP 地址。
NETMASK=255.255.255.0 #设置网络接口的子网掩码。
GATEWAY=192.168.10.1 #设置网络接口的默认网关地址
DNS1=218.2.135.1 #设置域名解析服务器
DNS2=114.114.114.114 #最多设置三个
在 CentOS 7 操作系统中,当修改了网络接口的配置文件以后,若要使新的配置生效, 可以重新启动 network 服务或者重启主机
systemctl restart network
注:建议关闭NetworkManager服务,否则有时启动network会报错
systemctl stop NetworkManager
systemctl disable NetworkManager
三、设置网络接口参数
ifconfig 命令不仅可以用于查看网卡配置,还可以修改网卡的 IP 地址、子网掩码,也可以绑定虚拟网络接口、激活或禁用网络接口。
3.1 启用、禁用网络接口配置
在这里我们可以添加一个网卡新的网卡设备 ens36
如果只是禁用、启用某一个网络 接口(而不是所有接口),可分别使用两个接口控制脚本 ifdown、ifup
ifconfig ens36 down|up 或
ifup/ifdown ens36
3.2 为网卡绑定虚拟接口
在对服务器网络进行调试的过程中,有时候需要临时在同一个网卡上使用一个新的 IP 地址,但是又不能覆盖原有 IP 地址而导致服务程序不可用。
这时可以为网卡绑定一个虚拟的网络接口,然后为虚拟接口设置新的 IP 地址(相当于一块网卡配多个 IP 地址)。
ifconfig ens36:0 192.168.10.20 netmask 255.255.255.0 #临时配置网卡的ip地址
ifconfig ens36:0 192.168.10.20/24 #当不指定子网掩码时,将使用 IP 地址所在分类的默认子网掩码
四、查看主机名称
主机名:在 Linux 操作系统中,相当一部分网络服务都会通过主机名来识别主机,如果主机名配置不当,可能会导致程序功能出现故障
4.1 临时修改主机名称
hostname kgc
4.2 永久修改
hostnamectl set-hostname xxxx
或vim /etc/hostname
五、查看路由表条目
路由表:Linux 操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排除网络故障的关键信息。
5.1 查看信息
直接执行“route”命令可以查看当前主机中的路由表信息
route [-n](将路由记录中的地址信息显示为数字形式)
Destination:列对应目标网段的地址
Gateway:列对应下一跳路由器的地址
Iface:列对应发送数据的网络接口
当目标网段为“default”时,表示此行是默认网关记录;当下一跳为“gateway”时,表示目标网段是与本机直接相连的
但是,直接执行“route”命令无法直接看出默认网关地址
5.2 添加、删除静态路由
添加静态路由,通过“route add”操作可以添加路由记录,结合“-net”选项指定目标网段的地址,结合“gw”选项指定下一跳路由器的IP 地址
route add -net 192.168.126.0/24 gw 192.168.10.1
#表示可以通过192.168.10.1到192.168.3.0/24网络
5.3 添加、删除网关记录
添加、删除默认网关记录,需要注意的是,在同一个主机的路由表中只应有一条默认网关记录。若同时存在多条默认网关记录,则可能导致该主机的网络连接出现故障
添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用“default”表示即可
route add default gw 192.168.10.1
route del default gw 192.168.10.1
六、查看网络连接情况
netstat命令:查看当前操作系统的网络连接状态、路由表、接口统计等信息,它是了解网络状态及排除网络服务故障的有效工具。
用法:
①通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显示对应的进程信息
②配合管道符grep过滤出特定的记录
-n | 以数字的形式显示相关的主机地址、端口等信息 |
-r | 显示路由表信息 |
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-l | 显示处于监听(Listenin状态的网络连接及端口信息)。 |
-t | 查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息 |
-u | 显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限) |
七、ss命令
ss 命令:也可以查看网络连接情况,主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。
但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。
ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效
ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。
为什么ss比netstat快:
netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多
-h | --help 通过该选项获取更多的使用帮助。 |
-V | --version 显示软件的版本号。 |
-t | --tcp 显示 TCP 协议的 sockets。 |
-u | --udp 显示 UDP 协议的 sockets。 |
-n | --numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh"。 |
-l | --listening 只显示处于监听状态的端口。 |
-p | --processes 显示监听端口的进程。 |
-a | --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接。 |
-r | --resolve 把 IP 解释为域名,把端口号解释为协议名称。 |
-o | 可用于显示计时器信息。 |
该信息向我们展示了诸如重新传输计时器值、已经发生的重新传输的数量以及已发送的keepalive探测的数量
八、测试网络连通性
使用 ping 命令可以向目标主机持续地发送测试数据包,并显示反馈结果,直到按 Ctrl +C 组合键后中止测试,并显示最终统计结果
ping 192.168.10.10 #最常用是后面跟ip地址
ping www.baidu.com #后面还可跟域名
ping -c 10 192.168.10.10 #-c表示指定ping的次数
ping -c 10 -i 0.5 192.168.10.10 #-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
ping -w 5 www.baidu.com #表示ping的超时时间为5s,意思是只ping5秒,5秒后结束
若看到“Destination Host Unreachable”的反馈信息, 则表示目的主机不可达,可能目标地址不存在或者主机已经关闭;
若看到“Network is unreachable”的反馈信息,则表示没有可用的路由记录(如默认网关),无法达到目标主机 所在的网络。
当目标主机有严格的防火墙限制时,或者当网络中存在影响通信过程稳定性的因素(如网卡故障、病毒或网络攻击等)时,可能收到 “Request timeout”的反馈结果
九、跟踪数据包
跟踪数据包的路由途径:traceroute
若服务器上没有 traceroute 命令,可通过 yum 方式安装 traceroute 软件包
traceroute 命令可以用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连接状态(响应时间)。对于无法响应的结点,连接状态将显示为“*”
traceroute 命令能够比 ping 命令更加准确地定位网络连接的故障点(中断点),因此执行速度会比 ping 命令稍慢。
在网络测试与排错过程中,通常会先使用 ping 命令测试与目的主机的网络连接,如果发现网络连接有故障,再使用 traceroute 命令跟踪查看是在哪个中 间结点存在故障。
十、域名解析
域名解析是指将域名转换为相应的IP地址的过程。这个过程是因特网中非常重要的一环,使得用户可以通过便于记忆的域名访问到互联网上的各种服务和资源
域名解析的好处:
(1)便于记忆:域名比IP地址更容易记忆和使用,使得用户可以通过简单的名称访问复杂的网络服务和资源
(2)动态变化:域名可以随时映射到新的IP地址,而用户无需知道具体的IP地址变化
(3)灵活性:通过DNS解析,可以实现负载均衡、故障转移和全球流量管理等功能,提高服务的可用性和性能
/etc/resolv.conf 文件中记录了本机默认使用的 DNS 服务器的地址信息,对该文件所做 的修改将会立刻生效。Linux 操作系统中最多可以指定 3 个(第 3 个以后的将被忽略)不同 的 DNS 服务器地址,优先使用第一个 DNS 服务器。
总结来说,/etc/resolv.conf主要用于配置本地DNS服务器,而/etc/hosts则用于本地主机名解析。在解析过程中,系统首先会查找/etc/hosts文件,如果找不到对应的映射关系,则会向/etc/resolv.conf中配置的DNS服务器发起请求。
测试DNS域名解析
nslookup 目标主机地址 [DNS服务器地址]
十一.lsof
lsof 是系统管理员和开发人员调试和监视系统的有用工具,能够帮助定位和解决文件打开问题、网络连接问题以及资源占用情况等
11.1 常见用法
1、列出所有打开的文件:
lsof
这会列出当前系统中所有进程打开的文件和文件描述符。
2、列出指定进程的打开文件:
lsof -p <PID>
将 <PID> 替换为你希望查看的进程ID,这会列出该进程打开的所有文件和资源。
3、列出指定用户打开的文件:
lsof -u <username>
将 <username> 替换为你希望查看的用户名,这会列出该用户所有进程打开的文件和资源。
4、列出指定文件的打开进程:
lsof /path/to/file
将 /path/to/file 替换为你希望查看的文件路径,这会列出当前打开该文件的进程。
5、列出网络连接:
lsof -i
这会列出所有当前系统上的网络连接信息,包括TCP、UDP等。
6、列出Unix域套接字:
lsof -U
这会列出所有当前系统上的Unix域套接字。