Deprecation of net-tools:
net-tools 工具早已经被 arch 系统从 base 包中移除。也有相关博客已经将相关代替命令进行介绍,这里整理自己用的一些命令。
如果需要使用旧命令,手动安装 net-tools 也是可以的,不过系统中已经安装了相关命令的替代命令。
ss
概述
- ss 属于 iproute2 包,在 arch 中是 base 包的依赖之一,因此会被默认安装。
- ss 的官方手册在这里。
- 据称,ss 的速度高于 netstat 和
cat /proc/net/tcp
使用
ss [OPTIONS] [FILTER]
OPTIONS
1 | -h,--help 帮助信息 |
FILTER
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER:构造匹配的状态,语法:
state [状态词]- established
- syn-sent
- syn-recv
- fin-wait-1
- fin-wait-2
- time-wait
- closed
- close-wait
- last-ack
- listening
- closing
- all - for all the states
- connected - all the states except for listening and closed
- synchronized - all the connected states except for syn-sent
- bucket - states, which are maintained as minisockets, i.e. time-wait and syn-recv
- big - opposite to bucket
EXPRESSION:按照特定规矩对结果进行继续过滤。
是一系列用运算符连接的布尔谓词。布尔运算的优先级是
或<与<非。如果没有逻辑词连接,则默认使用 与 连接词。支持的连接词如下:{dst|src} [=] [FAMILY:]ADDRESS[:PORT]:根据主机名过滤。其中协议族的支持如下:- unix:使用
fnmatch中的全局匹配(glob match),将套接字不区分大小写的方式匹配。不支持端口,不在支持通配符*(fnmatch实际上已经支持了)。在 zsh 中使用时,需要将 * 转义。 - link: 大小写不敏感的以太网协议,端口写设备名。
- inet and inet6:是ip地址或者dns域名。纯ipv6地址必须类似
[::]的形式。可以使用地址的 CIDR 形式。端口可以是端口或者服务名称。
- unix:使用
{dport|sport} [OP] [FAMILY:]:PORT:将目标端口或者源端口进行比较。dev [=|!=] DEVICE:根据连接使用的设备匹配,设备可以是设备名或者接口序号。cgroup [=|!=] PATH:根据接口的 cgroup 匹配。autobound:源地址是系统自动分配。支持的比较操作符
- = == eq
- != ne neq
- > gt
- < lt
- >= ge geq
- <= le leq
- ! not
- | || or
- & && and
示例
1 | ss -ntlp # 监听的TCP和进程情况,不解析服务端口 |
drill
简介
- 用于 DNS 查询
- drill 在软件包
ldns中,后者被openssh软件包依赖 - 在
bind包中存在dig命令和nslookup命令也可以查询。bind在arch包中已经于2013年被放弃,见连接。ldns已经在 core 模块中取代bind
使用
drill [ OPTIONS ] name [ @server ] [ type ] [ class ]
name:需要查询的域名。@server:DNS 服务器,默认从/etc/resolv.conf读取。type:请求的查询类型,默认是 A。A:和 IPv4 的对应。AAAA:和 IPv6 的对应。NS:记录对应域的域名,可以将子域解析给其他服务器。CNAME:域名的别名。MX:邮件服务器域名。SRV:提供服务发现。
class:当查询的时候使用这个。- 乱序。
OPTIONS
1 | -D 在查询时开启 DNSSEC 安全认证。 |
QUERY OPTIONS
1 | -4 只请求 ip4 服务器。 |
示例
1 | drill @8.8.8.8 AAAA lib.dwxh.xyz # 查询域名的 IPv6 记录 |
写完这部分后发现 Arch 文档中推荐的命令是 getent ,随 glibc 发行…
tracepath
简介
- 用于路由追踪
- 相较于
traceroute不需要超级用户特权,同时也没有高级选项
使用
1 | -4 IPv4 only. |
示例
1 | tracepath -n baidu.com # 只过程中的打印ip |
ncat
ncat 的不同版本:
关于版本的说明:
nc和netcat是同一个软件的不同名称,包含两个版本:nc.traditional: netcat 的基础版本,包含-e选项,在远程设备执行命令。nc.openbsd: netcat 的 OpenBSD 版本,包含对 IPv6、 proxies 和 Unix sockets 的支持。
ncat是为 nmap 重写的版本。
简介
- 从命令行跨网络读取和写入数据,可以产生几乎所有类型的连接。
- 可以进行端口扫描、传输文件和端口监听。
- 分为
connect mode(客户端)和listen mode(服务端),默认端口为 31337。
使用
ncat [OPTIONS...] [hostname] [port]
协议参数
1 | -4 Force IPv4 only |
连接模式参数
1 | -g hop1[,hop2,...] 设置至多8个必须经由的路由器。[测试失败] |
监听模式参数
1 | -l, --listen 监听模式。 |
SSL
1 | --ssl 连接模式:与服务器协商SSL;监听模式:仅监听传入的SSL连接;UDP模式:启动DTLS。 |
代理
1 | --proxy <addr[:port]> 指定代理地址,IPv6使用方括号地址。 |
执行命令
1 | -e, --exec <command> 建立连接后,将接受的信息都转发的命令。 |
执行命令时,会额外添加以下环境变量:
1 | NCAT_REMOTE_ADDR,NCAT_REMOTE_PORT 远程主机的IP地址和端口号。在连接模式下,它是目标的地址;在监听模式下,这是客户的地址。 |
访问控制
1 | --allow <host>[,<host>,...] 允许指定客户连接。 |
时间选项
1 | -d, --delay <time> 设置发送的延迟。 |
输出选项
1 | -o, --output <filename> 将会话保存到文件。 |
其他
1 | -C, --crlf Use CRLF for EOL sequence |
示例
1 | ncat -lve /bin/bash 2333 # 启动一个服务器后门 [其他人连接,输入命令] |