测试网络连通性 ping

ping

显示正确的路由表

ip route
route

跟踪路由

traceroute
tracepath
mtr

确定名称服务器使用

nslookup
host
dig

抓包工具 tcpdump wireshark

tcpdump
wireshark

安全扫描工具

nmap
netcat :网络界的瑞士军刀,即nc

流量控制工具

tc

fping

相对于ping多个主机时性能要高得多。 fping完全不同于ping,可以在命令行上定义任意数量的主机,或者指定包含要ping的IP地址或主机列表的文件, 常在shell 脚本中使用

  1. [root@centos8 ~]#yum -y install fping
  2. [root@centos8 ~]#fping 10.0.0.7
  3. 10.0.0.7 is alive
  4. [root@centos7 ~]#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  5. [root@centos8 ~]#fping 10.0.0.7
  6. 10.0.0.7 is unreachable
  7. [root@centos8 ~]#fping 10.0.0.7
  8. 10.0.0.7 is unreachable
  9. [root@centos8 ~]#fping 10.0.0.7 10.0.0.8
  10. 10.0.0.8 is alive
  11. 10.0.0.7 is unreachable
  12. #-g 选项可以指定网段或地址范围
  13. [root@centos8 ~]#fping -g 10.0.0.0/24
  14. 10.0.0.1 is alive
  15. 10.0.0.2 is alive
  16. 10.0.0.8 is alive
  17. 10.0.0.100 is alive
  18. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.3
  19. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.3
  20. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6
  21. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6
  22. ......
  23. [root@cent
  24. #对文件中的主机时行测试
  25. [root@centos8 ~]#tee hosts.txt <<EOF
  26. 10.0.0.7
  27. 10.0.0.6
  28. EOF
  29. 10.0.0.7
  30. 10.0.0.6
  31. [root@centos8 ~]#fping < hosts.txt
  32. 10.0.0.6 is alive
  33. 10.0.0.7 is unreachable

tcpdump

网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
语法:

  1. tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
  2. 参数说明:
  3. -a 尝试将网络和广播地址转换成名称。
  4. -c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
  5. -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
  6. -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
  7. -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
  8. -e 在每列倾倒资料上显示连接层级的文件头。
  9. -f 用数字显示网际网络地址。
  10. -F<表达文件> 指定内含表达方式的文件。
  11. -i<网络接口> 使用指定的网络截面送出数据包。
  12. -l 使用标准输出列的缓冲区。
  13. -n 不把主机的网络地址转换成名字。
  14. -N 不列出域名
  15. -O 不将数据包编码最佳化。
  16. -p 不让网络界面进入混杂模式。
  17. -q 快速输出,仅列出少数的传输协议信息。
  18. -r<数据包文件> 从指定的文件读取数据包数据。
  19. -s<数据包大小> 设置每个数据包的大小。
  20. -S 用绝对而非相对数值列出TCP关联数。
  21. -t 在每列倾倒资料上不显示时间戳记。
  22. -tt 在每列倾倒资料上显示未经格式化的时间戳记。
  23. -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
  24. -v 详细显示指令执行过程。
  25. -vv 更详细显示指令执行过程。
  26. -x 用十六进制字码列出数据包资料。
  27. -w<数据包文件> 把数据包数据写入指定的文件。
  1. #查看网卡
  2. [root@centos8 ~]#tcpdump -D
  3. 1.eth0 [Up, Running]
  4. 2.lo [Up, Running, Loopback]
  5. 3.any (Pseudo-device that captures on all interfaces) [Up, Running]
  6. 4.bluetooth-monitor (Bluetooth Linux Monitor) [none]
  7. 5.nflog (Linux netfilter log (NFLOG) interface) [none]
  8. 6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
  9. 7.usbmon0 (All USB buses) [none]
  10. 8.usbmon1 (USB bus number 1) 9.usbmon2 (USB bus number 2) #不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
  11. tcpdump
  12. #监听特定网卡
  13. tcpdump -i en0
  14. #监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。
  15. tcpdump host 10.0.0.100
  16. #特定来源、目标地址的通信
  17. #特定来源
  18. tcpdump src host hostname
  19. #特定目标地址
  20. tcpdump dst host hostname
  21. #如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
  22. tcpdump host hostname
  23. #面试题
  24. [root@centos8 ~]#tcpdump -i eth0 -nn icmp and src host 10.0.0.6 and dst host 10.0.0.7
  25. #特定端口
  26. tcpdump port 3000
  27. #监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
  28. tcpdump tcp
  29. #来源主机+端口+TCP,监听来自主机10.0.0.100在端口22上的TCP数据包
  30. tcpdump tcp port 22 and src host 10.0.0.100
  31. #监听特定主机之间的通信
  32. tcpdump ip host 10.0.0.101 and 10.0.0.102
  33. #10.0.0.101和除了10.0.0.1之外的主机之间的通信
  34. tcpdump ip host 10.0.0.101 and ! 10.0.0.1
  35. #详细示例
  36. tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24
  37. -w ./target.cap
  38. (1)tcp: ip icmp arp rarp tcpudpicmp这些选项等都要放到第一个参数的位置,用来过滤数
  39. 据报的类型
  40. (2)-i eth1 : 只抓经过接口eth1的包
  41. (3)-t : 不显示时间戳
  42. (4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
  43. (5)-c 100 : 只抓取100个数据包
  44. (6)dst port ! 22 : 不抓取目标端口是22的数据包
  45. (7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
  46. (8)-w ./target.cap : 保存成cap文件,方便用wireshark分析
  47. #限制抓包的数量,如下,抓到1000个包后,自动退出
  48. tcpdump -c 1000
  49. #保存到本地,tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,
  50. 才会将输出写到本地磁盘,可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)
  51. tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap

nmap

扫描远程主机工具,功能远超越用世人皆知的 Ping 工具发送简单的 ICMP 回声请求报文

  1. nmap [Scan Type(s)] [Options] {target specification}
  2. 命令选项
  3. -sT TCP connect() 扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的
  4. 日志中会记录大批的连接请求以及错误信息
  5. -sS TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描
  6. (half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志
  7. -sF,-sX,-sN 秘密 FIN 数据包扫描、圣诞树 (Xmas Tree)、空 (Null) 扫描模式。这些扫描方式
  8. 的理论依据是:关闭的端口需要对你的探测包回应 RST 包,而打开的端口必需忽略有问题的包
  9. -sP ping 扫描,用 ping 方式检查网络上哪些主机正在运行。当主机阻塞 ICMP echo 请求包是
  10. ping 扫描是无效的。nmap 在任何情况下都会进行 ping 扫描,只有目标主机处于运行状态,才会进行后
  11. 续的扫描
  12. -sU UDP 的数据包进行扫描,想知道在某台主机上提供哪些 UDP 服务,可以使用此选项
  13. -sA ACK 扫描,这项高级的扫描方法通常可以用来穿过防火墙。
  14. -sW 滑动窗口扫描,非常类似于 ACK 的扫描
  15. -sR RPC 扫描,和其它不同的端口扫描方法结合使用。
  16. -b FTP 反弹攻击 (bounce attack),连接到防火墙后面的一台 FTP 服务器做代理,接着进行端口
  17. 扫描。
  18. -P0 在扫描之前,不 ping 主机。
  19. -PT 扫描之前,使用 TCP ping 确定哪些主机正在运行
  20. -PS 对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。
  21. -PI 设置这个选项,让 nmap 使用真正的 ping(ICMP echo 请求)来扫描目标主机是否正在运行。
  22. -PB 这是默认的 ping 扫描选项。它使用 ACK(-PT) ICMP(-PI) 两种扫描类型并行扫描。如果
  23. 防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
  24. -O 这个选项激活对 TCP/IP 指纹特征 (fingerprinting) 的扫描,获得远程主机的标志,也就是操
  25. 作系统类型
  26. -I 打开 nmap 的反向标志扫描功能。
  27. -f 使用碎片 IP 数据包发送 SYNFINXMASNULL。包增加包过滤、入侵检测系统的难度,使其无
  28. 法知道你的企图
  29. -v 冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
  30. -S <IP> 在一些情况下,nmap 可能无法确定你的源地址 。在这种情况使用这个选项给出指定 IP
  31. -g port 设置扫描的源端口
  32. -oN 把扫描结果重定向到一个可读的文件 logfilename
  33. -oS 扫描结果输出到标准输出。
  34. --host_timeout 设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制
  35. --max_rtt_timeout 设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者
  36. 超时。默认值是大约 9000 毫秒
  37. --min_rtt_timeout 设置 nmap 对每次探测至少等待你指定的时间,以毫秒为单位
  38. -M count 置进行 TCP connect() 扫描时,最多使用多少个套接字进行并行的扫描

范例:

  1. #Tcp ack 扫描,并发2000,速度快
  2. nmap -n -PA --min-parallelism 2000 172.16.0.0/16
  3. #仅列出指定网段上的每台主机,不发送任何报文到目标主机.
  4. [root@centos8 ~]#nmap -sL 10.0.0.0/24
  5. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:28 CST
  6. Nmap scan report for 10.0.0.0
  7. Nmap scan report for 10.0.0.1
  8. ......
  9. Nmap scan report for 10.0.0.254
  10. Nmap scan report for 10.0.0.255
  11. Nmap done: 256 IP addresses (0 hosts up) scanned in 1.04 seconds
  12. #可以指定一个IP地址范围
  13. [root@centos8 ~]#nmap -sP 10.0.0.1-10
  14. #批量扫描一个网段的主机存活数
  15. nmap -sP -v 192.168.1.0/24
  16. nmap v sn ip/24
  17. #有些主机关闭了ping检测,所以可以使用-P0跳过ping的探测,可以加快扫描速度.
  18. nmap -P0 192.168.1.100
  19. #扫描主机
  20. nmap v A IP
  21. #一次性扫描多台目标主机
  22. [root@centos8 ~]#nmap 10.0.0.6 10.0.0.7
  23. #从一个文件中导入IP地址,并进行扫描
  24. [root@centos8 ~]#cat hosts.txt
  25. 10.0.0.7
  26. 10.0.0.6
  27. 58.87.87.99
  28. [root@centos8 ~]#nmap -iL hosts.txt
  29. #探测目标主机开放的端口,可指定一个以逗号分隔的端口列表(如-PS22,443,80)
  30. [root@centos8 ~]#nmap -PS22,80,443 10.0.0.1
  31. #使用SYN半开放扫描
  32. [root@centos8 ~]#nmap -sS 10.0.0.1
  33. #只扫描UDP端口
  34. nmap e eth1 -sU -O 10.0.0.1
  35. #扫描TCP和UDP端口
  36. nmap -sTU -O 10.0.0.1
  37. 查看主机当前开放的端口
  38. nmap localhost
  39. #查看主机端口(1024-65535)中开放的端口
  40. nmap -p 1024-65535 localhost
  41. #探测目标主机开放的端口
  42. nmap -PS 10.0.0.1
  43. #探测所列出的目标主机端口
  44. nmap -PS22,80,3306 10.0.0.1
  45. #探测目标主机操作系统类型
  46. nmap -O 10.0.0.1
  47. #探测目标主机操作系统类型
  48. nmap -A 10.0.0.1