虽然用了很多年的 linux 桌面,经手的服务器也有几个了,就是跑几个简单服务而已,实际上并没有怎么玩过网络相关的东西,对很多的命令特别是网络相关软件和命令并没有怎么敲过,连这些命令具体包含在哪个包里面都不太清楚,理解也不是很深刻。这次就来总结一下常用的一些网络相关的命令。
为消除网上一些过时教程的影响,以当前最新的 Manjaro 发行版所带的包的最新版本为例。整篇博客的内容就是先用pacman -Fs
命令找到这些命令所属的包,然后记录一下这些命令的基础用法和原理。
顺带一提,关于命令用法有一个叫 tldr
的软件能以举例的方式直观显示帮助信息
这一篇也是持续更新,用到哪个就添进来哪个
iputils 包
version: 20180629.f6aac8d-4
代码库:https://github.com/iputils/iputils
ping
基本上非计算机专业的人都知道的命令,用来测试数据包是否能够通过 IP 协议到达特定主机。基本原理就是发送 ICMP echo request,报告收到目标主机的 echo reply 的往返时间、丢包率等信息。
使用:ping [参数] destination
常用参数:
- -b broadcast
- -c count
- -6 IPv6
- -t ttl
arping
这个我没用过。这个命令可以向目标主机发送 ARP 包,查看某个 IP 的 MAC 地址或者测试 IP 是不是被占用了.
使用:arping [参数] destination
tracepath
我一般用的都是traceroute
, 功能应该是一样的,就是用来显示到目的主机中间经过的路由.原理就是发 ICMP 包的时候设置 TTL
值从 1 开始增加,这样经过路由上的路由器发现 TTL
为 0 的时候就会给我们回一个 ICMP 包,这样就知道了每一跳的路由器的地址.
使用:tracepath [参数] destination
net-tools 包
version: 1.60.20180212git-1
代码库:https://sourceforge.net/projects/net-tools/
已经被淘汰了,现在建议用 iproute2
替代它的功能.
常用命令:netstat
,route
,ifconfig
都能在 ip
命令里面找到替代.
iproute2 包
version: 5.0.0-1
代码库:https://github.com/shemminger/iproute2
ip
功能非常之多的一个命令,可以替代已经被淘汰了的net-tools
包的功能。
ip link
查看本机设备在链路层的设定,比如 MAC, MTU
ip addr
查看本机设备与 IP 层相关的设定,比如 IP 地址,替代了 ifconfig
的功能.
ip route
查看路由表, 替代了 route
命令的功能.
ip neigh
查看 ARP 表,替代了 arp
命令的功能.
ss
一般用于检验本机各端口的网络连接情况, 可以看到 TCP,UDP,ICMP
相关的端口和连接信息,替代了 netstat
命令的功能.
bind-tools 包
version: 9.13.7-1
代码库:https://gitlab.isc.org/isc-projects/bind9
主要提供 DNS 相关功能
nslookup
相当于是一个 DNS client,用来进行 DNS 查询.
已经不建议使用了,最好还是用 dig
和 host
命令替代吧.
虽然我也一直在用,然而 2003 年就有人发帖说已经被官方所废弃了,我哭了我竟落后了十多年…
dig
也是用来执行 DNS 查询的,输出非常详细
用法:dig [参数] [@ DNS server] hostname
host
功能跟 dig
差不多,输出更简洁一点
用法:host [参数] hostname [server]
traceroute
version: 2.1.0-2
看起来功能是跟tracepath
一样的.
nc
version: gnu-netcat 0.7.1-7
这个也比较常见了,用来对网络 TCP 或者 UDP 进行读写,也可以测试某个端口开没开
用法举例:
nc -l -p port 监听本机的某个端口
nc host port 尝试连接目标的某个端口
-u UDP mode
telnet
telnet 是一个远程登录主机的命令,因为是明文传输不安全,现在大家登录远程主机都用 ssh
了
我还年轻没经历过用 telnet 上 bbs 的时代, 虽然已经过时了但是现在应该还有人在用,那些 bbs 现在也是允许 telnet 连接的,于是尝试了一下。国内的这些 bbs 通常都不是 UTF-8 编码,所以请出一个叫 luit
的软件帮忙:
luit -encoding gbk telnet bbs.newsmth.net 水木社区
luit -encoding gbk telnet bbs.ustc.edu.cn 中国科学技术大学 瀚 海 星 云 站 (空格并不是我加的哦)
luit -encoding big5 telnet ptt.cc 台湾某大型论坛,前身也是校园 bbs
whois
查询域名 whois 信息
curl
发 HTTP 请求
wget
类似 curl,可用于下载
iftop
查看本机实时网络流量信息