Linux网络相关命令是系统管理员和开发人员日常工作中不可或缺的工具,它们帮助用户监控网络状态、配置网络接口、排查网络问题以及进行网络诊断,以下将详细介绍常用的Linux网络命令及其使用方法,包括ifconfig、ip、ping、traceroute、netstat、ss、tcpdump、curl、wget、nslookup、dig、hostname、route、iptables等,并通过表格形式总结部分命令的常用选项和功能。

在Linux系统中,网络配置和管理的第一步通常是查看和配置网络接口。ifconfig命令是传统的网络接口配置工具,虽然在新版Linux中逐渐被ip命令取代,但仍广泛使用。ifconfig eth0 up启用eth0接口,ifconfig eth0 192.168.1.100 netmask 255.255.255.0配置IP地址和子网掩码,而ip命令功能更强大,支持IPv4和IPv6,例如ip addr show显示所有网络接口信息,ip link set eth0 up启用接口,ip addr add 192.168.1.100/24 dev eth0添加IP地址。ip命令的输出更详细,适合复杂网络环境。
网络连通性测试是排查问题的常用手段,ping命令通过发送ICMP回显请求来检测目标主机是否可达。ping 8.8.8.8测试与Google DNS服务器的连通性,ping -c 4 192.168.1.1发送4个数据包后停止。traceroute(或traceroute6用于IPv6)则显示数据包到达目标主机所经过的路由路径,例如traceroute -n 8.8.8.8中的-n选项避免DNS解析,直接显示IP地址。mtr命令结合了ping和traceroute的功能,提供实时的网络路径分析,更适合深度诊断。
查看网络连接和端口状态是网络管理的重要环节。netstat命令曾是最常用的工具,例如netstat -tuln显示所有监听的TCP和UDP端口,netstat -an显示所有连接的详细信息,但ss命令已逐渐替代netstat,因为ss在处理大量连接时性能更优。ss -tuln与netstat -tuln功能相同,但执行速度更快;ss -t state established显示所有已建立的TCP连接,对于网络流量分析,tcpdump是强大的抓包工具,例如tcpdump -i eth0 -n port 80抓取eth0接口上HTTP(80端口)的数据包,-n选项避免DNS解析,-c选项可限制抓包数量。
文件传输和网页访问也是常见的网络操作。curl和wget是下载网页或文件的命令行工具。curl支持更多协议和功能,例如curl -O http://example.com/file.zip下载文件并保持原文件名,curl -I https://example.com仅获取HTTP头部信息。wget则更简单直接,例如wget -r -np http://example.com/files递归下载目录中的文件。curl还支持发送POST请求、上传文件等高级功能,适合API测试。

域名解析和网络诊断方面,nslookup和dig用于查询DNS记录。nslookup example.com查询example.com的A记录,nslookup -type=mx example.com查询MX邮件交换记录。dig命令提供更详细的输出,例如dig example.com ANY查询所有类型的DNS记录,dig +short example.com仅返回IP地址。hostname命令用于查看或设置系统主机名,例如hostname显示当前主机名,sudo hostnamectl set-hostname newname永久修改主机名(需systemd系统)。
网络路由和防火墙配置也是重要内容。route命令(或ip route)用于查看和修改路由表,例如route -n显示路由表,sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1添加静态路由。iptables是Linux内核的防火墙工具,例如sudo iptables -L -n列出所有规则,sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT允许SSH连接,sudo iptables -A INPUT -j DROP拒绝其他所有输入连接。firewalld是更现代的防火墙管理工具,支持区域和动态规则,例如sudo firewall-cmd --list-all查看防火墙规则。
以下是部分常用Linux网络命令的总结表格:
| 命令 | 常用选项 | 功能描述 |
|---|---|---|
ip |
addr show, link set, route |
显示/配置网络接口、路由 |
ifconfig |
up, down, addr add |
传统网络接口配置工具 |
ping |
-c(次数), -i(间隔) |
测试网络连通性 |
traceroute |
-n(禁用DNS), -I(ICMP模式) |
显示数据包路径 |
ss |
-tuln(监听端口), -state |
显示网络连接(替代netstat) |
netstat |
-tuln, -an |
显示网络连接和端口状态 |
tcpdump |
-i(接口), -n(禁用DNS), -c(数量) |
抓取网络数据包 |
curl |
-O(下载), -I(头部), -X POST |
传输数据/下载文件 |
wget |
-r(递归), -np(不遍历父目录) |
下载网页或文件 |
dig |
+short, ANY(所有记录) |
查询DNS记录 |
iptables |
-L(列出), -A(添加), -j(动作) |
配置防火墙规则 |
相关问答FAQs:

-
问题:
ss和netstat有什么区别?为什么推荐使用ss?
解答:ss是netstat的替代品,主要区别在于性能和功能。ss内核直接读取网络连接信息,速度更快,尤其是在处理大量连接时(如高并发服务器)。ss支持更丰富的过滤选项(如按状态、端口、协议过滤),输出格式也更灵活。netstat则依赖/proc文件系统,性能较差,且部分功能已被ss和ip命令取代,在现代Linux系统中,推荐优先使用ss。 -
问题:如何使用
tcpdump抓取特定IP和端口的通信数据?
解答:tcpdump可通过组合主机(host)和端口(port)选项抓取特定流量,抓取与IP地址168.1.100的80端口(HTTP)的TCP通信,命令为:sudo tcpdump -i eth0 -n 'host 192.168.1.100 and port 80 and tcp'。-i eth0指定接口,-n避免DNS解析,引号内为过滤条件(支持and、or、not逻辑),如需保存到文件,添加-w capture.pcap;用-r capture.pcap读取保存的数据包。
