文章目录
- 列出系统中打开的文件-lsof
- 测试网络连接-ping
- 跟踪数据包的路由途径-traceroute
- 设置网络参数的方式
- [查询 DNS记录-nslookup](#查询 DNS记录-nslookup)
- 查看域名信息-dig
- 设置路由记录-route
- 永久添加路由-static-routes文件
- 网络接口配置-network-scripts文件
- 远程复制文件-scp
- 定义主机名与IP地址的关系-hosts文件
- 登录远程主机-ssh+IP/主机名
- 配置DNS域名解析服务器-resolv.conf文件
本篇讲解:lsof、ping、traceroute、nslookup-dig、route、static-routes文件、设置网络参数的方式等。
列出系统中打开的文件-lsof
简介
lsof
(List Open Files)是一个用于列出系统中打开文件的命令行工具。它可以显示当前系统中打开的文件、目录、套接字、管道等 资源,以及与它们相关联的进程信息。通过 lsof
,可以轻松查看文件被哪些进程占用,排查文件锁定、网络端口被占用等问题。
格式
bash
lsof [选项]
常用选项(参数)
- -a:逻辑与操作,用于结合多个选项进行筛选。
- -c <命令名>:列出指定命令打开的文件。
- -i:显示网络连接信息,支持指定协议或端口号。
- -p:列出指定进程 ID(PID)打开的文件。
- -u <用户名>:列出指定用户打开的文件和网络连接。
- -t:仅显示进程 ID。
- -r <秒数>:持续监控,按指定秒数刷新显示。
常用示例
列出所有打开的文件和网络连接。
bash
lsof
列出指定进程 ID(如 1234)打开的文件和网络连接。
bash
lsof -p 1234
列出 root
用户打开的文件和网络连接。
bash
lsof -u root
列出指定端口(如 22)被哪些进程占用。
bash
lsof -i:22
以监听模式查看网络连接。
bash
lsof -i -sTCP:LISTEN
列出 ssh
命令打开的文件。
bash
lsof -c ssh
显示进程 ID 为 5678 的进程打开的网络连接,仅显示符合条件的条目。
bash
lsof -i -a -p 5678
输出结果简要说明
- COMMAND:进程名。
- PID:进程 ID。
- USER:拥有进程的用户名。
- FD:文件描述符,表示文件在进程中的打开状态。
- TYPE:文件类型(如文件、目录、套接字等)。
- DEVICE:设备名。
- SIZE/OFF:文件大小或偏移量。
- NODE:节点号。
- NAME:文件的名称或路径。
测试网络连接-ping
简介
ping
是一个用于测试网络连通性的命令行工具。它通过向目标主机发送 ICMP(Internet Control Message Protocol)回显请求消息,并等待回显应答,来检查网络连接是否正常以及计算数据包的往返时间(RTT)。是VRRP心跳检测的一种方式。
格式
bash
ping [选项] <目标主机>
常用选项(参数)
- -c <数量>:指定发送的请求次数。例如,-c 4 表示发送 4 次请求。
- -i <间隔>:设置发送请求的间隔时间,单位为秒。例如,-i 2 表示每 2 秒发送一个请求。
- -t:设置生存时间(TTL),指定数据包可以经过的最大路由数。默认值通常为 64。
- -s <大小>:设置每个请求的数据包大小,单位为字节。例如,-s 56 表示每个数据包大小为 56 字节(不包括 ICMP 头部)。
- -W <超时>:设置等待回复的超时时间,单位为秒。例如,-W 5 表示等待 5 秒后超时。
- -w <时间>:设置 ping 命令的总运行时间。指定时间后,ping 将停止发送请求并退出。例如,-w 10 表示 ping 命令将运行 10 秒钟后停止。
示例
测试到 google.com
的网络连通性,并发送 4 次请求。
bash
ping -c 4 google.com
设置每个请求的数据包大小为 128 字节,并测试到 example.com
的网络连通性。
bash
ping -s 128 example.com
测试到 192.168.1.1
的网络连通性,每 3 秒发送一次请求。
bash
ping -i 3 192.168.1.1
注意事项
- TTL(生存时间):TTL 值帮助限制数据包在网络中的生命周期,以防止它们在网络中无限循环。如果 TTL 值过低,数据包可能在到达目的地之前就被丢弃。
- 数据包大小:设置数据包的大小有助于检测网络中可能存在的 MTU(最大传输单元)问题。
跟踪数据包的路由途径-traceroute
简介
traceroute
是一个用于跟踪数据包从当前主机到目标主机之间经过的网络节点(路由器)的命令行工具。它可以帮助用户了解数据包的传输路径以及各节点的响应时间,从而诊断网络延迟或连接问题。
格式
bash
traceroute <目标主机>
常用选项(参数)
- -n:以数字形式显示 IP 地址而不是主机名,避免进行 DNS 解析,从而加快输出速度。
- -m <跳数>:设置最大跳数(即数据包可以经过的最大路由节点数)。例如,-m 30 表示最多经过 30 个节点。
- -p <端口>:指定用于 traceroute 的目标端口,默认为 33434。适用于 TCP 连接的 traceroute。
- -q <次数>:设置每个跳数发送的请求次数,默认为 3 次。例如,-q 4 表示每个节点发送 4 次请求。
- -w <秒数>:设置等待每个响应的超时时间,单位为秒。例如,-w 5 表示等待 5 秒钟。
示例
测试从当前主机到 google.com
的数据包经过的路由节点。
bash
traceroute google.com
以数字形式显示 IP 地址,并测试到 example.com
的数据包路径。
bash
traceroute -n example.com
设置最大跳数为 20,测试到 192.168.1.1
的数据包路径。
bash
traceroute -m 20 192.168.1.1
注意事项
- TTL(生存时间) :
traceroute
通过逐跳增加 TTL 值来跟踪路径。每个路由器会减少 TTL 值并返回 ICMP 超时消息,以告知traceroute
当前的跳数和延迟。 - 响应时间:每个跳数的响应时间可以帮助识别延迟较高的网络节点。
设置网络参数的方式
临时配置---使用命令调整网络参数
- 简单、快速,可直接修改运行中的网络参数
- 一般只适合在调试网络的过程中使用
- 系统重启以后,所做的修改将会失效
固定设置------通过配置文件修改网络参数
- 修改各项网络参数的配置文件
- 适合对服务器设置固定参数时使用
- 需要重载网络服务或者重启以后才会生效
查询 DNS记录-nslookup
简介
nslookup
是一个用于查询 DNS(域名系统)记录的命令行工具。它可以帮助用户测试和诊断域名解析情况,查看特定域名对应的 IP 地址,或反向解析 IP 地址来获取域名信息。这个工具在网络问题排查中非常有用,特别是在处理与 DNS 相关的连接问题时。
格式
bash
nslookup <目标主机地址> [DNS服务器地址]
常用选项(参数)
type=<记录类型>
:指定查询的 DNS 记录类型,例如A
(主机地址记录)、MX
(邮件交换记录)、NS
(名称服务器记录)等。例如,type=MX
表示查询邮件交换记录。timeout=<秒数>
:设置查询的超时时间,单位为秒。默认值通常为 5 秒。retry=<次数>
:设置查询的重试次数,如果第一次查询失败,命令会自动重试指定的次数。debug
:启用调试模式,显示更多详细信息,包括 DNS 请求和响应的详细内容。
示例
测试 www.google.com
的 DNS 解析,使用默认 DNS 服务器。
bash
nslookup www.google.com
测试 www.example.com
的 DNS 解析,指定使用 8.8.8.8
作为 DNS 服务器。
bash
nslookup www.example.com 8.8.8.8
查询 example.com
的 MX 记录,显示邮件服务器信息。
bash
nslookup -type=MX example.com
注意事项
- DNS 服务器 :如果未指定 DNS 服务器,
nslookup
将使用系统默认的 DNS 服务器进行查询。指定 DNS 服务器可以帮助测试不同 DNS 提供商的解析情况。 - 非权威应答 :在
nslookup
的输出中,如果显示为 "Non-authoritative answer",表示查询结果来自缓存 DNS 服务器,而非权威 DNS 服务器。
查看域名信息-dig
简介
dig
(Domain Information Groper)是一个用于查询DNS信息的命令行工具。它通过向DNS服务器发送查询请求来获取指定域名的DNS记录,常用于调试和诊断DNS问题。
格式
bash
dig [选项] [域名] [查询类型]
常用选项(参数)
- @server:指定查询的DNS服务器。默认情况下,使用系统的默认DNS服务器。
- +short:仅输出简短的查询结果,通常只显示IP地址或简单的记录信息。
- -t:指定查询的DNS记录类型,如A(IPv4地址)、AAAA(IPv6地址)、MX(邮件交换记录)等。
- -x:进行反向DNS查询,即通过IP地址查询域名。
- +trace:显示查询过程中每一级DNS服务器的响应信息,帮助分析DNS查询路径。
- +nocmd:省略输出中的命令和选项行,仅显示查询结果。
- +noall +answer:只显示答案部分,去掉其他不必要的输出信息。
示例
查询域名 example.com
的A记录:
bash
dig example.com A
使用Google的公共DNS服务器查询 example.com
的NS记录:
bash
dig @8.8.8.8 example.com NS
查询 example.com
的简短结果:
bash
dig example.com +short
追踪查询 example.com
的过程:
bash
dig example.com +trace
注意事项
- DNS缓存 :
dig
查询的结果可能受DNS缓存的影响,查询同一域名时可能不会显示实时更新的结果。 - 安全性 :确保使用
dig
命令时所查询的DNS服务器是可信的,避免查询敏感信息时被DNS投毒或中间人攻击。
设置路由记录-route
简介
route
是一个用于显示和设置系统路由表 的命令行工具。它允许用户查看当前的路由表条目 ,以及添加、删除或修改路由记录。通过路由表,操作系统能够确定数据包的传输路径,确保网络通信能够正确到达目的地。
格式
bash
route [选项] [参数]
常用选项(参数)
- -n:以数字形式显示路由表条目,而不是解析主机名。这可以加快输出速度,并避免 DNS 查询。
- add:添加一个新的路由条目。例如,route add 用于向路由表中添加一条路由记录。
- del:删除一个现有的路由条目。例如,route del 用于从路由表中删除一条路由记录。
- -net:用于指定路由目标为网络地址。例如,-net 192.168.1.0 表示网络地址为 192.168.1.0。
- -host:用于指定路由目标为主机地址。例如,-host 192.168.1.10 表示主机地址为 192.168.1.10。
- gw <网关地址>:指定数据包应通过的网关地址。
- metric <值>:设置路由的度量值(优先级)。度量值越小,路由优先级越高。
示例
- 添加到指定网段的路由记录
设置到 192.168.1.0/24
网络的路由,网关为 192.168.0.1
。
bash
route add -net 192.168.1.0/24 gw 192.168.0.1
- 删除到指定网段的路由记录
删除到 10.0.0.0/8
网络的路由记录。
bash
route del -net 10.0.0.0/8
- 向路由表中添加默认网关记录
设置默认网关为 192.168.0.1
。
bash
route add default gw 192.168.0.1
- 删除路由表中默认的网关记录
删除默认网关 192.168.0.1
。
bash
route del default gw 192.168.0.1
- 显示当前的路由表
显示路由表的当前内容,以数字形式展示。
bash
route -n
- 设置路由的度量值
设置路由到 192.168.2.0/24
网络的度量值为 10,网关为 192.168.0.1
。
bash
route add -net 192.168.2.0/24 gw 192.168.0.1 metric 10
注意事项
- 网关地址:指定的网关必须在路由表中有效且可达。否则,数据包将无法通过指定网关转发。
- 路由优先级:度量值(metric)用于决定不同路由的优先级。系统会选择度量值最小的路由作为首选路径。
配置项说明
直接 route 命令输出时显示,也表示/etc/sysconfig/static-routes 文件中的配置项。
- Destination: 目标网段或主机。
- Gateway: 网关地址,`` 表示目标是本主机所属的网络,不需要路由。
- Genmask : 网络掩码,可以设定
netmask
决定网域的大小。 - Flags : 标记,指示路由的状态和类型。
- U: 路由是活动的,可以使用。
- H: 目标是一个主机,即该路由是到一个特定主机。
- G: 路由指向网关。
- R: 恢复动态路由产生的表项。
- D: 由路由的后台程序动态地安装。
- M: 由路由的后台程序修改。
- !: 拒绝路由。
- Metric: 路由距离,到达指定网络所需的中转数(Linux 内核中未使用)。
- Ref: 路由引用次数(Linux 内核中未使用)。
- Use: 此路由项被路由软件查找的次数。
- Iface: 转发的网络设备或虚拟网卡名称。
永久添加路由-static-routes文件
永久添加路由 是在系统中配置静态路由,使得即使系统重启,这些路由也能保持生效。这些路由规则通过修改系统配置文件来实现,并且需要重启网络服务以应用更改。
格式 :
在 /etc/sysconfig/static-routes
文件中(若没有需要创建),使用以下格式配置静态路由:
常用配置:
- any net any gw 192.168.233.21 :将所有网络流量路由到
192.168.233.21
网关。 - any net 192.168.3.0/24 gw 192.168.233.21 :将目的网络为
192.168.3.0/24
的所有流量路由到192.168.233.21
网关。 - any net 10.0.0.0 netmask 255.0.0.0 gw 192.168.233.21 :将目的网络为
10.0.0.0
且使用子网掩码255.0.0.0
的所有流量路由到192.168.233.21
网关。 - any host 192.168.100.100 gw 192.168.233.21 :将目的 IP 为
192.168.100.100
的所有流量路由到192.168.233.21
网关。
重启网络服务:
bash
systemctl restart network
网络接口配置-network-scripts文件
网络接口配置文件用于配置网络接口的各项参数,使网络接口在系统启动时能够正常工作。
配置文件位置
网络接口的配置文件通常位于 /etc/sysconfig/network-scripts/
目录下,文件名格式为 ifcfg-<接口名>
。例如,ifcfg-ens33
用于配置 ens33
接口。
示例配置文件内容
示例1:简单基础示例(基本够用)
bash
TYPE=Ethernet # 设置网卡类型为以太网
DEVICE=ens33 # 设置网卡名称
ONBOOT=yes # 设置网卡在系统启动时自动激活
BOOTPROTO=static # 设置网卡使用静态IP地址
IPADDR=192.168.80.3 # 设置网卡的IP地址
NETMASK=255.255.255.0 # 设置网卡的子网掩码
GATEWAY=192.168.80.2 # 设置网卡的默认网关地址
DNS1=192.168.80.2 # 设置DNS服务器的IP地址
配置项说明
- TYPE : 通常为
Ethernet
,表示以太网接口。 - DEVICE: 指定网络接口名称。
- ONBOOT : 控制网卡是否在系统启动时激活,常设置为
yes
。 - BOOTPROTO : 配置 IP 地址的获取方式,
static
表示静态配置,dhcp
表示通过 DHCP 动态获取。 - IPADDR: 配置静态 IP 地址。
- NETMASK: 定义子网掩码,用于确定网络部分和主机部分。
- GATEWAY: 设置默认网关地址,未指定目标地址的流量将通过该网关。
- DNS1: 配置 DNS 服务器的 IP 地址,用于域名解析。
示例2:更完整的示例
bash
TYPE=Ethernet # 设置网卡类型为以太网
DEVICE=ens33 # 设置网卡名称为 ens33
ONBOOT=yes # 设置网卡在系统启动时自动激活
BOOTPROTO=static # 配置为静态 IP 地址
IPADDR=192.168.80.3 # 设置网卡的 IP 地址为 192.168.80.3
NETMASK=255.255.255.0 # 设置网卡的子网掩码为 255.255.255.0
GATEWAY=192.168.80.2 # 设置网卡的默认网关地址为 192.168.80.2
DNS1=192.168.80.2 # 设置 DNS 服务器的 IP 地址为 192.168.80.2
DNS2=8.8.8.8 # 设置备用 DNS 服务器的 IP 地址为 8.8.8.8
DEFROUTE=yes # 设置是否使用该接口作为默认路由,默认值为 yes
IPV4_FAILURE_FATAL=no # 是否在 IPv4 配置失败时终止配置,默认值为 yes
IPV6INIT=no # 设置是否启用 IPv6,默认值为 no
HWADDR=00:1A:2B:3C:4D:5E # 设置网卡的硬件地址(MAC 地址)
MTU=1500 # 设置最大传输单元(MTU),通常为 1500
NAME="System ens33" # 为该网络接口配置一个名称标签
UUID="123e4567-e89b-12d3-a456-426614174000" # 设置网络接口的唯一标识符
其他配置项解释
- DNS2: 设置备用的 DNS 服务器 IP 地址。
- DEFROUTE :
yes
表示使用该接口作为默认路由,no
表示不使用。 - IPV4_FAILURE_FATAL :
no
表示在 IPv4 配置失败时不会终止网络配置过程。 - IPV6INIT :
no
表示禁用 IPv6 支持,yes
表示启用。 - HWADDR: 设置网卡的物理地址(MAC 地址),通常系统会自动检测,不需要手动设置。
- MTU: 设置网络接口的最大传输单元,通常是 1500 字节。
- NAME: 设置该网络接口的名称标签,供识别使用。
- UUID: 用于唯一标识网络接口,特别是在虚拟化或大规模部署中常用。
远程复制文件-scp
scp
(Secure Copy Protocol)用于在不同主机之间安全地传输文件。
示例
将 /etc/hosts
文件从 server1
复制到远程服务器
bash
[root@server1 ~]# scp /etc/hosts root@192.168.110.131:/etc/hosts
解释:
使用 scp
命令将本地服务器 server1
上的 /etc/hosts
文件复制到IP地址为 192.168.110.131
的远程服务器的 /etc/hosts
路径下。
定义主机名与IP地址的关系-hosts文件
/etc/hosts
文件是一个静态的、手动配置的IP地址与主机名映射文件,用于本地解析主机名。其定义了主机名与IP地址的对应关系。本地系统会首先查找这个文件以确定某个主机名对应的IP地址。一般只做内网映射。
与DNS的关系
- 优先级 :系统会先查询
/etc/hosts
文件,只有在未找到对应的映射时,才会查询DNS服务器。 - 局限性 :
/etc/hosts
文件适用于小规模网络或特定的内网环境,大型网络或互联网环境下,通常依赖DNS进行域名解析。
示例
打开并编辑文件
bash
vim /etc/hosts
文件内容示例
bash
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
添加本地IP的主机名
bash
192.168.110.132 server1
192.168.110.131 server2
解释:配置 192.168.110.132
的主机名为 server1
,配置 192.168.110.131
主机名为 server2
。在网络中使用该 IP 地址时,可以使用主机名 server1
代替。
登录远程主机-ssh+IP/主机名
正常使用IP地址登录:
bash
[root@server1 ~]# ssh 192.168.110.131
root@192.168.110.131's password:
Last Login: Wed Aug 14 13:45:00 2024
[root@server2 ~]# ## 此时登录到了Server2的环境
[root@server2 ~]# exit ## 登出
使用主机名登录:
bash
[root@server1 ~]# ssh server2
The authenticity of host 'server2(192.168.110.131)' can't be established.
ECDSA key fingerprint is SHA256:apb8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxJN5pQ.
ECDSA key fingerprint is MD5:76:3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:4e.
Are you sure you want to cont inue connecting (yes/no)? yes ## 输入
Warning: Permanently added 'server2'(ECDSA)to the list of known hosts.
root@server2's password:
Last Login: Wed Aug 14 13:48:01 2024
[root@server2 ~]# ## 此时登录到了Server2的环境
[root@server2 ~]# exit ## 登出
配置DNS域名解析服务器-resolv.conf文件
配置DNS域名解析服务器可以让系统正确解析域名为IP地址。
配置方法如下。
修改DNS域名解析配置文件
修改文件 /etc/resolv.conf
来指定DNS服务器的地址。
配置文件解析
以下是 /etc/resolv.conf
文件的内容示例:
bash
nameserver 192.168.233.21
# nameserver表示DNS服务器名称,
# 192.168.233.21表示DNS解析服务器地址
nameserver 8.8.8.8
# 设置备用的DNS解析服务器地址为8.8.8.8
重启网卡服务
修改完成后,需要重启网卡服务以使配置生效。
bash
systemctl restart network
域名解析配置文件
/etc/resolv.conf
: 保存DNS服务器的地址,用于域名解析。