在这一系列文章中,将介绍一些常见的Linux命令,帮助您快速熟悉并开始在Linux系统上进行日常操作。具体的指令使用方法可能会因系统而异,注意根据其自身的 Linux 系统进行适当的调整,可以通过man或--help指令查询。
我将常用指令分成了如下几类介绍:用户和权限管理、文件和目录管理、压缩和解压缩、系统信息查看、软件包管理、日志查看和管理、文件搜索和过滤、文本处理、网络相关、数据备份和同步。
九、网络相关
1. ifconfig:显示当前网络接口的配置信息,如IP地址、子网掩码等。
1)显示所有接口信息:
ifconfig
这会列出系统上所有的网络接口信息,包括接口名称、MAC 地址、IP 地址、网络掩码等。
2)显示指定接口信息:
ifconfig eth0
将 eth0 替换为要查看的接口名称,以仅显示该特定接口的详细信息。示例输出:
eth0: flags=4163 mtu 1500
inet 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::a00:27ff:fe8e:2c2f prefixlen 64 scopeid 0x20
ether 08:00:27:8e:2c:2f txqueuelen 1000 (Ethernet)
RX packets 17402 bytes 25789148 (24.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21548 bytes 4783613 (4.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
上述示例展示了一个名为 eth0 的网络接口的配置信息。其中包括了 IPv4 地址(inet)、子网掩码(netmask)、广播地址(broadcast)、IPv6 地址(inet6)、MAC地址(ether)、发送和接收的数据包统计等信息。
3)启用接口:
ifconfig eth0 up
这会启用名为 eth0 的接口,使其进入 UP(激活)状态。
4)禁用接口:
ifconfig eth0 down
这会禁用名为 eth0 的接口,使其进入 DOWN(非激活)状态。
5)配置接口的 IP 地址:
ifconfig eth0
使用此命令,将
ifconfig eth0 192.168.0.10
6)设置接口的网络掩码:
ifconfig eth0 netmask
将
ifconfig eth0 netmask 255.255.255.0
7)配置网络接口的 MAC 地址:
sudo ifconfig hw ether
备注:以上IP、掩码、MAC地址修改命令在运行命令时生效,并且是临时的。当系统重新启动或网络服务重新加载时,这些更改将不会保持。
如果你希望永久设置接口的 IP 、掩码和mac地址,可以修改网络配置文件。具体的操作取决于你使用的 Linux 发行版和网络管理工具。例如,在大多数常见的 Linux 发行版中,你可以编辑 /etc/network/interfaces
2. ping:发送 ICMP Echo 探测数据包(网络层协议)请求到目标主机并接收响应,用于检测网络可达性和测量往返时间。
用法:
ping <目标主机或 ip>
其中,目标主机可以是域名(如 google.com)或 IP 地址(如 8.8.8.8),常用的选项有:
-c <次数>:指定要发送的 ICMP 回显请求消息的数量。
-w <超时时间>:设置等待目标主机回应的超时时间。
3. traceroute:从本机到目标主机的路由路径,显示经过的每一跳路由器的IP地址。
基本语法如下:
sudo traceroute [选项] <目标主机>
其中,<目标主机> 可以是目标主机的 IP 地址或域名。
1)在 Windows 操作系统中,使用 tracert 命令
2)Linux虚拟机在traceroute时,默认使用UDP报文,而不是使用ICMP报文;而防火墙为了方便网络调试是放行了ICMP报文,但没有放行UDP报文,这就导致了linux虚拟机的traceroute报文(UDP)被防火墙拦截了,可以使用-I选项指定使用 ICMP 协议进行 traceroute 的操作。
执行指令如下:
sudo traceroute –I www.baidu.com
输出结果:
4. netstat:显示网络连接、监听端口以及相关的统计数据。
netstat 命令的基本语法如下:
netstat [options]
netstat 命令可以接受不同的选项,以便提供不同类型的网络信息。以下是几个常用的 netstat 选项:
-a(或 --all):显示所有连接和侦听中的套接字,包括 TCP、UDP 和 UNIX 套接字。
-p(或 --program):显示正在使用套接字的进程或程序的相关信息。
-t : 用于指定仅查看 TCP 连接的信息。
-u: 选项用于指定仅查看 UDP 连接的信息。
备注:默认情况下,netstat 命令通常只显示已建立(established)的连接。
1. wget:从网络上下载文件,支持 HTTP、HTTPS、FTP 协议。
以下是一些常用的wget命令示例:
下载单个文件:
wget <文件url>
保存文件到指定目录:
wget -P <目标目录> <文件url>
断点续传下载(继续从之前下载的位置开始):
wget -c <文件url>
限速下载(限制下载速度):
wget --limit-rate=<下载速度> <文件url>
递归下载整个目录或网站:
wget -r <目录url>
默认情况下,wget 命令用于从网络上下载文件时使用的协议是 HTTP。如果你提供的 URL 是以 http:// 或者 https:// 开头的,wget 将使用相应的协议进行下载。
例如:
wget http://example.com/file.txt
如果需要使用其他协议如 FTP,你可以在 URL 中明确指定协议类型,例如:
wget ftp://example.com/file.txt
这将告诉 wget 使用 FTP 协议来下载文件。
一些公开可用的测试URL,如:
测试下载文件:
http://speedtest.ftp.otenet.gr/files/test100Mb.db (100MB测试文件)
http://speedtest.ftp.otenet.gr/files/test1Gb.db (1GB测试文件)
测试查看HTML内容:
https://www.example.com (示例网站)
5. nslookup:查询 DNS 记录,获取主机名对应的 IP 地址或反向查询 IP 地址对应的主机名。
查询域名的 IP 地址:
nslookup example.com
该命令将返回 example.com 的 IP 地址。您可以替换 example.com 为您希望查询的域名。
查询 IP 地址的域名:
nslookup 192.0.2.1
该命令将返回与 IP 地址 192.0.2.1 关联的域名。您可以替换 IP 地址为您想要查询的 IP 地址。
指定其他 DNS 服务器:
nslookup example.com 8.8.8.8
该命令将使用 8.8.8.8 作为 DNS 服务器来查询 example.com 的信息。
6. route:显示和操作 IP 路由表,管理网络流量的路由规则。
查看当前的路由表:
route –n
输出示例:
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp0s3
10.0.0.0 0.0.0.0 255.255.0.0 U 100 0 0 enp0s3
每一列的含义:
目标(Destination):指定数据包的目标地址。
网关(Gateway):指定数据包发送到该目标地址时,要经过的下一跳网关地址。
子网掩码(Netmask):用于确定目标地址的网络范围。
标志(Flags):指示该路由的状态或特性。例如,UG 表示这是一个网关(Gateway)路由。
跃点(Metric):指定路由的跳数(通常表示距离或优先级)。
引用(Ref):路由被引用的次数。
使用(Use):路由被使用的次数。
接口(Interface):指定数据包发送的网络接口。
目标为0.0.0.0的数据包将被发送到网关10.0.2.2,子网掩码为0.0.0.0。标志为UG,表示这是一个默认路由(default gateway),即用于发送到非本地地址的数据包的路由。
目标为10.0.2.0的数据包将直接发送到目标地址,不需要经过网关。子网掩码为255.255.255.0,表示该目标地址在本地局域网的范围内。标志为U,表示这是一个可直接访问的局域网路由
备注:较新的Linux发行版使用ip来管理。
7. UFW /iptables:配置和管理 Linux 内核防火墙规则,控制网络流量的过滤和转发。
UFW 是对 iptables 的简化封装,在底层仍然使用 iptables,但提供了更高级的抽象层,隐藏了底层规则的复杂性,使得配置和管理更加方便,对于普通用户而言更加友好。
下面是一些常用的 UFW 指令:
ufw enable:启用防火墙,开启规则。
ufw disable:禁用防火墙,关闭规则。
ufw status:查看防火墙的状态和当前的规则。
ufw allow :允许指定端口的网络连接。
ufw deny :禁止指定端口的网络连接。
ufw allow from :允许来自指定 IP 地址的网络连接。
ufw deny from :禁止来自指定 IP 地址的网络连接。
ufw delete :删除指定的规则。
ufw reset:重置防火墙规则,删除所有自定义规则并恢复默认设置。
举几个例子来说明 UFW 和 iptables 的使用差异。
允许 SSH 连接:
使用 UFW:
sudo ufw allow ssh
使用 iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
拒绝特定端口的访问:
使用 UFW:
sudo ufw deny 80
使用 iptables:
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
8. tcpdump:用于捕获和分析网络上的数据包。
tcpdump的常用用法:
1)监听指定网络接口上的所有流量:
tcpdump -i eth0
2)过滤指定协议的数据包,例如只显示 ICMP 数据包:
tcpdump icmp
其他常用协议如tcp、udp
3) 按端口过滤数据包,只显示源或目的端口为指定端口号(例如 80)的数据包:
tcpdump port 80
4) 将抓到的数据包保存到文件,以便后续分析:
tcpdump -i eth0 -w capture.pcap
备注:保存为 .pcap 文件的好处是,它是一种通用的捕获文件格式,可以与其他分析工具进行配合使用,如 Wireshark。你可以使用 Wireshark 打开 .pcap 文件,查看和分析其中的数据包详细信息。
5)读取和显示 PCAP 文件中的数据包:
tcpdump -r capture.pcap
6)以十六进制形式显示每个数据包的字节数据。
tcpdump –x
输出:
22:31:09.277864 IP _gateway.50137 > Iot-Ubuntu.ssh: Flags [.], ack 76192, win 65535, length 0
0x0000: 4500 0028 1b1d 0000 4006 47a3 0a00 0202
0x0010: 0a00 020f c3d9 0016 0193 126e 4395 423a
0x0020: 5010 ffff 3a04 0000 0000 0000 0000
同时显示十六进制和 ASCII 字符表示,只需要使用一个大写的 -X 选项即可。
tcpdump -X
输出:
22:33:30.135623 IP _gateway.50137 > Iot-Ubuntu.ssh: Flags [.], ack 125696, win 65535, length 0
0x0000: 4500 0028 217a 0000 4006 4146 0a00 0202 E..(!z..@.AF....
0x0010: 0a00 020f c3d9 0016 0193 232e 43a2 551a ..........#.C.U.
0x0020: 5010 ffff 1657 0000 0000 0000 0000 P....W........
7)通过过滤器进行数据包过滤,只显示源或目的 IP 为指定 IP 地址的数据包:
tcpdump host 192.168.0.100
如果需要指定只过滤源IP为指定IP的数据包,则使用src关键词:
sudo tcpdump src host 192.168.0.100
如果需要指定只过滤源IP为目标IP的数据包,则使用src关键词:
sudo tcpdump dst host 192.168.0.100
9.iwconfig: 用于配置和显示无线网络接口的命令行工具。
以下是一些常用的iwconfig命令及其功能:
显示当前系统中的所有无线网络接口及其配置信息:
iwconfig
显示指定无线网络接口的配置信息:
iwconfig
将指定无线网络接口连接到指定名称(SSID)的无线网络:
iwconfig essid
设置指定无线网络接口的工作模式,如managed(基础设施模式)、Master(主模式)等:
iwconfig mode
Managed(基础设施模式):这是最常用的无线工作模式(也称为STA模式,Managed是Linux系统中术语)。在这种模式下,无线接口通过无线访问点(AP)与其他设备进行连接。接口将会通过AP连接到网络,并能够访问该网络中的其他设备和资源。
Master(主模式):在这种模式下,无线接口充当一个无线访问点(AP)。它可以连接其他无线设备进入网络,并管理它们的连接。
10. scp/sftp/tftp:在本地主机和远程主机之间安全地复制文件和目录
SCP(Secure Copy Protocol)和SFTP(SSH File Transfer Protocol):SCP和SFTP是一种基于SSH(Secure Shell)协议的安全文件传输协议。
1) 默认端口号都是22
2) Linux平台作为文件服务器需要安装ssh-server
3) 默认路径是当前用户home目录
备注:SFTP提供了更丰富的功能集,支持文件和目录的上传、下载、删除、重命名以及查看目录结构等操作。
TFTP(Trivial File Transfer Protocol):TFTP是一种简单的文件传输协议,使用无连接的UDP协议进行文件传输。
1)默认端口号是69
2)Linux平台作为文件服务器需要安装tftpd-hpa
3)默认路径是/srv/tftp
备注:TFTP主要用于在局域网中进行快速文件传输,例如在启动过程中从服务器下载配置文件或固件文件。由于它的简洁性,TFTP在网络设备的固件刷新和配置过程中经常被使用。