linux中环境部署、网络排查要用到非常多的命令,掌握一些核心的相关命令非常有必要。下面介绍几个工作和面试中高频提及网络操作相关命令。
ifconfig
ifconfig 是一个用来查看、配置、启用或禁用网络接口的工具。
查看网络接口信息
禁用启用网络接口
ifconfig eth0 down
ifconfig eth0 up
ping
ping命令基于ICMP协议,用来测试远程主机的连通性和延时。
格式:ping 参数 目的主机地址
- -c :次数,指定发送ICMP报文的次数,否则会一直发送(windows中默认是4次)
- -i:时间间隔,相邻两次发送报文的时间间隔,默认1s
- -s:设置数据包大小
netstat
显示本机的网络连接状态、运行端口和路由表信息。
- -a:显示所有连接中的socket
- -t:显示所有TCP连接状态
- -u:显示所有UDP连接状态
- -n:显示端口数字
- -p:显示进程的PID和名称
- -l:显示处于listen状态下的网络连接
显示所有连接信息
netstat -an
显示所有TCP和UDP正在监听的连接信息
查询某个端口被哪个服务占用
除了使用netstat查看端口占用,也可以使用lsof -i:端口
来查看
SS
ss命令可以查看网络状态信息,包括TCP/UDP连接、端口等,它比netstat显示的信息更多,查询效率也更高。
- -n:显示ip地址,不进行DNS解析
- -l:显示所有监听的socket
- -p:显示socket的进程
- -t:仅显示TCP的socket
- -u:仅显示UDP的socket
- -s:显示socket使用统计
telnet
使用telnet命令用来判断远端服务器的端口是否开放。
格式:telnet 参数 主机名/IP
route
route命令用来显示和管理linux系统的路由表。
查看系统路由表信息
SSH
ssh命令是openssh套件中客户端连接工具,可以在linux中使用ssh加密协议实现安全登录远程服务器。
格式:ssh 参数 用户@主机名/ip地址 远程执行的命令
-p:指定ssh登录端口,默认为22
-v:调试模式
ssh -p 22 root@10.0.0.11 #登录远程服务器,输入exit退出
ssh -p 22 root@10.0.0.11 "free -m" #登录远程服务器并执行命令
tcpdump
tcpdump命令是用来截获网络数据包的包分析工具,支持对协议、主机、端口等进行过滤。
tcpdump (dump the traffic on a network) 是一个强大的网络分析命令行工具,可以抓取和分析经过系统的流量数据包。它通常被用作于网络故障分析工具以及安全工具。支持多种选项和过滤规则,适用场景十分广泛。
由于它是命令行工具,因此适用于在远程服务器或者没有图形界面的设备中收集数据包以便于事后分析。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
格式:tcpdump [选项] [过滤表达式]
tcpdump常用选项参数
-c:收到指定的数据包数目后,就停止进行抓取;
-w:把数据包数据写入指定的文件。
-e:输出链路层头部信息;
-i:指定抓取的网卡,默认是0号网络接口,any表示所有接口
-nn:不解析IP地址和端口号的名称;
-tttt:在每一行中输出由date处理的默认格式的时间戳;
-v:详细显示指令执行过程;
-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
tcpdump常用过滤表达式
tcpdump host 210.27.48.1 :捕获所有210.27.48.1主机收到和发出所有的数据包
tcpdump -nn dst port 80:捕获所有经过80端口的数据。
tcpdump -nn tcp:tcp协议过滤