与网络相关的 linux 命令总结

虽然用了很多年的 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 包的功能。

查看本机设备在链路层的设定,比如 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 查询.

已经不建议使用了,最好还是用 dighost 命令替代吧.

虽然我也一直在用,然而 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

查看本机实时网络流量信息

待补充