Linux 常用网络命令大全
文章来源:
https://blog.csdn.net/shenyuanhaojie/article/details/119899419 ?
本文档概述了网络管理中的关键命令,如ifconfig配置网络接口,ip管理路由,ping测试连通性,以及nmap进行安全扫描。还介绍了nslookup和dig用于域名解析,tcpdump抓包分析,以及arp操作和nmap的深入应用。
文章目录
• 前言
• 1. ifconfig
• 2. ip
• 3. ping
• 4. route
• 5. lsof
• 6. netstat
• 7. ss
• 8. traceroute
• 9. nslookup
• 10. dig
• 11. nmcli
• 12. tcpdump
• 13. arp
• 14. nmap
前言 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #网络配置查看 ifconfig ip a #测试网络连通性 ping #显示正确的路由表 ip route #跟踪路由 traceroute tracepath mtr #确定名称服务器使用 nslookup host dig #抓包工具 tcpdump wireshark #安全扫描工具 nmap netcat :网络界的瑞士军刀,即 nc #流量控制工具 tc #查看或修改网卡配置 mii-tool ethtool modprobe dmesg rmmod ......
1. ifconfig ifconfig命令用于显示或设置网络设备,来源于 net-tools 工具包 格式:
1 ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
参数说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 add<地址> 设置网络设备IPv6的IP地址 del<地址> 删除网络设备IPv6的IP地址 down 关闭指定的网络设备 <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址 io_addr<I/O地址> 设置网络设备的I/O地址 irq<IRQ地址> 设置网络设备的IRQ media<网络媒介类型> 设置网络设备的媒介类型 mem_start<内存地址> 设置网络设备在主内存所占用的起始地址 metric<数目> 指定在计算数据包的转送次数时,所要加上的数目 mtu<字节> 设置网络设备的MTU netmask<子网掩码> 设置网络设备的子网掩码 tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址 up 启动指定的网络设备 -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理 -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能 -promisc 关闭或启动指定网络设备的promiscuous模式 [IP地址] 指定网络设备的IP地址 [网络设备] 指定网络设备的名称
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 #显示网络设备信息 ifconfig #启动关闭指定网卡 ifconfig eth0 down/up 等于 ifdown/ifup eth0 #设置最大传输单元 ifconfig eth0 mtu 1500 #临时修改 IP ifconfig ens33 192.168.10.20/24 #建立虚拟网卡(网卡别名),流量走主网卡 ifconfig ens33:0 192.168.10.21 ifconfig ens33:1 192.168.10.22 #单独显示某网卡 ifconfig eth0
2. ip ip 命令和 ifconfig 类似,但前者功能更强大,并旨在取代后者。使用 ip 命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig 是 net-tools 中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2 套件里提供了许多增强功能的命令,ip 命令即是其中之一。
在这里插入图片描述
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #显示网卡设备信息 ip a 或者 ip addr show #查看链路层的状态,但是看不到 ip 地址 ip link ip -s link #显示更全面,显示不同网络接口的统计数据 #查看接入你所在的局域网的设备的 MAC 地址 ip neighbour #开启/关闭 eth0 ip linkset eth0 up/down #临时修改网卡名称 ip linkset eth1 name syhjnet #设置网卡别名(虚拟网卡) ip addr add 172.16.100.100/16 dev eth0 label eth0:0 ip addr del 172.16.100.100/16 dev eth0 label eth0:0 #给 eth0 添加 IP 地址 ip addr add 20.0.0.19/24 dev eth0 #删除 eth0 网卡上的 IP ip addr del 20.0.0.19/24 dev eth0 ip addr flush dev eth0 #设置 eth0 默认网关为 192.168.0.2 ip route add default via 20.0.0.2 dev eth0 #查看路由表条目 ip route show #查看具体 IP 路由包从哪里来 ip route get 20.0.0.19 #更改默认路由 ip route add default via 20.0.0.196 #监控 netlink 消息 ip monitor all
参考:试试 Linux 下的 ip 命令
3. ping Linux ping 命令用于检测主机,执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。 格式:
参数
含义
-c
设置完成要求回应的次数
-i
指定收发信息的间隔时间
-s
设置数据包的大小
-w
在设定的秒后退出
示例:
1 2 3 4 5 6 7 8 9 10 11 [root@c7-1 ~]#ping -c 5 www.baidu.com PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data. 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=128 time=25.0 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=128 time=25.8 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=3 ttl=128 time=25.9 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=4 ttl=128 time=24.9 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=5 ttl=128 time=25.8 ms --- www.a.shifen.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4039ms rtt min/avg/max/mdev = 24.938/25.535/25.974/0.448 ms
4. route route 命令用于显示和操作 IP 路由表。 格式:
1 2 3 route [-nee] route add [-net|-host] [网域或主机] netmask [mask] [gw|dev] route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
选项说明:
1 2 3 4 5 6 7 8 add 添加一条路由规则 del 删除一条路由规则 -net 目的地址是一个网络 -host 目的地址是一个主机 target 目的网络或主机 netmask 目的地址的网络掩码 gw 路由数据包通过的网关 dev 为路由指定的网络接口
要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器或者同时位于两个网络的网关。在 Linux 系统中,设置路由通常是为了解决以下问题:该 Linux 系统在一个局域网中,局域网中有一个网关,能够让机器访问 internet,那么就需要将这台机器的 IP 地址设置为 Linux 机器的默认路由。要注意的是,直接在命令行下执行 route 命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了。要想永久保存,有如下方法:
1 2 3 4 1.在 /etc/rc.local 里添加 2.在 /etc/sysconfig/network 里添加到末尾 3./etc/sysconfig/static-router : any net x.x.x.x/24 gw y.y.y.y
route 命令的输出项说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Destination 目标网段或者主机 Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由 Genmask 网络掩码 Flags 标记。一些可能的标记如下: U — 路由是活动的 H — 目标是一个主机 G — 路由指向网关 R — 恢复动态路由产生的表项 D — 由路由的后台程序动态地安装 M — 由路由的后台程序修改 ! — 拒绝路由 Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用) Ref 路由项引用次数(linux 内核中没有使用) Use 此路由项被路由软件查找的次数 Iface 该路由表项对应的输出接口
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@c7-1 ~]#route -nee Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt 0.0.0.0 20.0.0.2 0.0.0.0 UG 100 0 0 eth0 0 0 0 20.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 0 0 0 #路由主要有三种:主机路由,网络路由,默认路由 #添加到主机的路由,目标 192.168.1.3 网关 172.16.0.1 route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 #添加到网络的路由,目标 192.168.0.0 网关 172.16.0.1 route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0 route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0 route add -net 192.168.8.0/24 dev eth1 metric 200 #添加默认路由,网关 172.16.0.1 route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1 route add -net 0.0.0.0/0 gw 172.16.0.1 route add default gw 172.16.0.1 #删除路由 route del -host 192.168.1.2 dev eth0:0 route del -host 10.20.30.148 gw 10.20.30.40 route del -net 10.20.30.40 netmask 255.255.255.248 eth0 route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 route del -net 192.168.1.0/24 eth1 route del default gw 192.168.1.1
5. lsof lsof(list open files)是一个查看进程打开的文件的工具 选项:
1 2 3 4 5 6 7 8 9 10 11 -a:列出打开文件存在的进程 -c<进程名>:列出指定进程所打开的文件 -u:列出 UID 号进程详情 -g:列出 GID 号进程详情 -d<文件号>:列出占用该文件号的进程 +d<目录>:列出目录下被打开的文件 +D<目录>:递归列出目录下被打开的文件 -n<目录>:列出使用 NFS 的文件 -i<条件>:列出符合条件的进程( IPV(4/6)协议 :端口 @ip ) -p<进程号>:列出指定进程号所打开的文件 -n: 不反向解析网络名字
具体示例参考:Linux 进程和计划任务管理
6. netstat netstat 用来查看当前操作系统的网络连接状态、路由表、接口统计等信息,来自于 net-tools 工具包,ss 是 netstat 的升级版。
参数
含义
-a
显示主机中所有活动的网络连接信息 (包括监听、非监听状态的服务端口)
-n
以数字的形式显示相关的主机地址、端口等信息
-p
显示与网络连接相关联的进程号、进程名称信息 (该选项需要 root 权限)
-l
显示处于监听 (Listen) 状态的网络连接及端口信息
-t
查看 TCP (Transmission Control Protocol,传输控制协议) 相关的信息
-u
显示 UDP (User Datagram Protocol,用户数据报协议) 协议相关的信息
-r
显示路由表信息
-i
显示网卡列表
-g
显示组播组的关系
-s
显示网络统计信息
常用命令选项:
1 netstat [-anpt] [-anpu] [-anptu] [-anpltu] [-ntlp]
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@c7-1 ~]#netstat -anpt Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3631/master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3421/sshd tcp 0 0 20.0.0.19:22 20.0.0.1:64385 ESTABLISHED 20165/sshd: root@pt tcp 0 52 20.0.0.19:22 20.0.0.1:60938 ESTABLISHED 30806/sshd: root@pt tcp6 0 0 ::1:25 :::* LISTEN 3631/master tcp6 0 0 :::22 :::* LISTEN 3421/sshd [root@c7-1 ~]#netstat -anpt | grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3421/sshd tcp 0 0 20.0.0.19:22 20.0.0.1:64385 ESTABLISHED 20165/sshd: root@pt tcp 0 52 20.0.0.19:22 20.0.0.1:60938 ESTABLISHED 30806/sshd: root@pt tcp6 0 0 :::22 :::* LISTEN 3421/sshd
7. ss ss 命令来自于 iproute 包,是 netstat 的升级版本。netstat 通过遍历 /proc 来获取 socket 信息,ss 使用 netlink 与内核 tcp_diag 模块通信获取 socket 信息。 格式:
选项:
1 2 3 4 5 6 7 8 9 10 11 -t: tcp协议相关 -u: udp协议相关 -w: 裸套接字相关 -x:unix sock 相关 -l: listen 状态的连接 -a: 所有 -n: 数字格式 -p: 相关的程序及 PID -e: 扩展的信息 -m:内存用量 -o:计时器信息
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #显示本地打开的所有端口 ss -l #列出当前 socket 详细信息 ss -s #显示每个进程具体打开的 socket ss -pl #显示所有 tcp socket ss -at #显示所有的 udp socket ss -au #显示所有已建立的 ssh 连接 ss -o state established '( dport = :ssh or sport = :ssh )' #显示所有已建立的HTTP连接 ss -o state established '( dport = :http or sport = :http )'
8. traceroute traceroute 命令可以用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各个中间结点的连接状态(响应时间)。对于无法响应的结点,连接状态将显示为 “*”,预设数据包大小是 40Bytes,用户可另行设置。如果没有 traceroute 命令可执行 yum -y install traceroute 安装。
格式:
参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -d 使用 Socket 层级的排错功能 -f 设置第一个检测数据包的存活数值 TTL 的大小 -F 设置勿离断位 -g 设置来源路由网关,最多可设置 8 个 -i 使用指定的网络界面送出数据包 -I 使用 ICMP 回应取代 UDP 资料信息 -m 设置检测数据包的最大存活数值 TTL 的大小 -n 直接使用 IP 地址而非主机名称 -p 设置 UDP 传输协议的通信端口 -r 忽略普通的 Routing Table,直接将数据包送到远端主机上 -s 设置本地主机送出数据包的 IP 地址 -t 设置检测数据包的 TOS 数值 -v 详细显示指令的执行过程 -w 设置等待远端主机回报的时间 -x 开启或关闭数据包的正确性检验
示例:
1 2 3 4 5 6 7 8 9 10 11 12 [root@c7-1 ~]#traceroute 20.0.0.25 traceroute to 20.0.0.25 (20.0.0.25), 30 hops max, 60 byte packets 1 20.0.0.25 (20.0.0.25) 0.942 ms 0.782 ms 0.647 ms #可以看到这两台机器之间没有经过路由,是直连或连着交换机的状态 [root@c7-1 ~]#traceroute www.baidu.com traceroute to www.baidu.com (112.80.248.75), 30 hops max, 60 byte packets 1 gateway (20.0.0.2) 5.900 ms 5.817 ms 5.758 ms 2 * * * 3 * * * 4 * * * ......
9. nslookup 域名解析工具,执行 yum -y install bind-utils 安装。 格式:
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@c7-1 ~]#nslookup www.baidu.com Server: 20.0.0.2 Address: 20.0.0.2#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 112.80.248.75 Name: www.a.shifen.com Address: 112.80.248.76 [root@c7-1 ~]#nslookup www.google.com Server: 20.0.0.2 Address: 20.0.0.2#53 Non-authoritative answer: Name: www.google.com Address: 104.244.46.208 Name: www.google.com Address: 2001::1f0d:5211 [root@c7-1 ~]#cat /etc/resolv.conf #域名解析配置文件 # Generated by NetworkManager # 一行一个 DNS,最多配置三个 DNS,优先使用第一个 DNS 服务器 nameserver 20.0.0.2 [root@c7-1 ~]#cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 112.80.248.75 www.baidu.com #/etc/hosts 文件中记录着一份主机名与 IP 地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到再去向 DNS 服务器查询。
10. dig 也是解析域名,同样来自 bind-utils 包。 格式:
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [root@c7-1 ~]#dig www.baidu.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46750 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 1280 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 5 IN CNAME www.a.shifen.com. www.a.shifen.com. 5 IN A 112.80.248.75 www.a.shifen.com. 5 IN A 112.80.248.76 ;; Query time: 2 msec ;; SERVER: 20.0.0.2#53(20.0.0.2) ;; WHEN: 三 8月 25 16:46:53 CST 2021 ;; MSG SIZE rcvd: 104
11. nmcli nmcli 命令可以完成网卡上所有的配置工作,并且可以写入配置文件永久生效。centos7 默认安装,没有执行 yum -y install NetworkManager。 nmcli 命令相关术语:
1 2 - 设备即网络接口 - 连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效
格式:
1 nmcli [OPTIONS] OBJECT { COMMAND | help }
选项:
1 2 3 4 5 6 7 8 9 10 11 12 -a 询问缺少的参数 -c 是否在输出中使用颜色 -e 转义值中的列分隔符 -f 指定要输出的字段 -g -m tabular -t -f 的快捷方式 -m 输出模式 -o 概览模式 -p 更加友好的输出方式 -s 允许显示密码 -t 简洁输出 -v 显示程序版本 -w 设置等待完成操作的超时
对象:
1 2 3 4 5 6 7 g[eneral] NetworkManager 的一般状态和操作 n[etworking] 整体网络控制 r[adio] NetworkManager 无线电开关 c[onnection] NetworkManager 的连接 d[evice] 由 NetworkManager 管理的设备 a[gent] NetworkManager 秘密代理或 polkit 代理 m[onitor] 监控 NetworkManager 的变化
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #查看帮助 nmcli con add help #显示连接信息 nmcli con show #显示活动连接 nmcli con show --active #显示具体的网络连接配置 nmcli con show eth0 #显示设备状态 nmcli dev status #显示网络接口属性 nmcli dev show eth0 #创建新连接 default,IP 通过 dhcp 自动获取 nmcli con add con-name default type Ethernet ifname eth0 #删除 default 连接 nmcli con del default #创建新连接 static ,指定静态 IP,不自动连接 nmcti con add con-name static ifname eth0 autoconnect no type Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254 #启用 static 连接配置 nmcli con up static #启用 default 连接配置 nmcli con up default #修改连接设置 nmcli con mod "static" connection.autoconnect no nmcli con mod "static" ipv4.dns 172.25.X.254 nmcli con mod "static" +ipv4.dns 8.8.8.8 nmcli con mod "static" -ipv4.dns 8.8.8.8 nmcli con mod "static" ipv4.addresses “172.16.X.10/24 172.16.X.254” nmcli con mod "static" +ipv4.addresses 10.10.10.10/16 #DNS设置存放在 /etc/resolv.conf,PEERDNS=no 表示当 IP 通过 dhcp 自动获取时,dns 仍是手动设置, 不自动获取等价于下面命令 nmcli con mod "system eth0" ipv4.ignore-auto-dns yes
nmcli 实现 bond0:
1 2 3 4 5 6 7 8 9 10 11 #添加bonding接口 nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup #添加从属接口 nmcli con add type bond-slave ifname ens37 master bond0 nmcli con add type bond-slave ifname ens33 master bond0 #注:如无为从属接口提供连接名,则该名称是接口名称加类型构成 #要启动绑定,则必须首先启动从属接口 nmcli con up bond-slave-eth0 nmcli con up bond-slave-eth1 #启动绑定 nmcli con up mybond0
12. tcpdump 网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供 and、or、not 等逻辑语句帮助去除无用的信息。 格式:
1 tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
选项:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 -a 尝试将网络和广播地址转换成名称 -c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作 -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出 -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出 -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出 -e 在每列倾倒资料上显示连接层级的文件头 -f 用数字显示网际网络地址 -F<表达文件> 指定内含表达方式的文件 -i<网络界面> 使用指定的网络截面送出数据包 -l 使用标准输出列的缓冲区 -n 不把主机的网络地址转换成名字 -N 不列出域名 -O 不将数据包编码最佳化 -p 不让网络界面进入混杂模式 -q 快速输出,仅列出少数的传输协议信息 -r<数据包文件> 从指定的文件读取数据包数据 -s<数据包大小> 设置每个数据包的大小 -S 用绝对而非相对数值列出TCP关联数 -t 在每列倾倒资料上不显示时间戳记 -tt 在每列倾倒资料上显示未经格式化的时间戳记 -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型 -v 详细显示指令执行过程 -vv 更详细显示指令执行过程 -x 用十六进制字码列出数据包资料 -w<数据包文件> 把数据包数据写入指定的文件
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡 tcpdump #监听特定网卡 tcpdump -i eth0 #限制抓包的数量,抓到 1000 个包后,自动退出 tcpdump -c 1000 #监听特定主机,监听主机 10.0.0.100 的通信包,出、入的包都会被监听 tcpdump host 10.0.0.100 #特定来源 tcpdump src host hostname #特定目标地址 tcpdump dst host hostname #如果不指定 src 跟 dst,那么来源或者目标是 hostname 的通信都会被监听 tcpdump host hostname #特定端口 tcpdump port 3000 #监听 TCP/UDP,服务器上不同服务分别用了 TCP、UDP 作为传输层,假如只想监听 TCP 的数据包 tcpdump tcp #来源主机+端口+TCP,监听来自主机 10.0.0.100 在端口 22 上的 TCP 数据包 tcpdump tcp port 22 and src host 10.0.0.100 #监听特定主机之间的通信 tcpdump ip host 10.0.0.101 and 10.0.0.102 #10.0.0.101 和除了 10.0.0.1 之外的主机之间的通信 tcpdump ip host 10.0.0.101 and ! 10.0.0.1 #保存到本地,tcpdump 默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者 tcpdump 退出时,才会将输出写到本地磁盘,可以加上 -U 强制立即写到本地磁盘(一般不建议,性能相对较差) tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap #详细示例和解释 tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap (1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数 据报的类型 (2)-i eth1 : 只抓经过接口 eth1 的包 (3)-t : 不显示时间戳 (4)-s 0 : 抓取数据包时默认抓取长度为 68 字节。加上-S 0 后可以抓到完整的数据包 (5)-c 100 : 只抓取 100 个数据包 (6)dst port ! 22 : 不抓取目标端口是 22 的数据包 (7)src net 192.168.1.0/24 : 数据包的源网络地址为 192.168.1.0/24 (8)-w ./target.cap : 保存成 cap 文件,方便用 wireshark 分析
参考: tcpdump 使用详解 tcpdump命令
13. arp arp 命令用于操作主机的 arp 缓冲区,可以用来显示 arp 缓冲区中的所有条目、删除指定的条目或者添加静态的 ip 地址与 MAC 地址对应关系。
格式:
1 2 3 4 5 arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP cache arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP entry arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from file arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add entry arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub <-''-
参数:
1 2 3 4 5 6 7 8 9 10 -a<主机>:显示 arp 缓冲区的所有条目 -H<地址类型>:指定 arp 指令使用的地址类型 -d<主机>:从 arp 缓冲区中删除指定主机的 arp 条目 -D:使用指定接口的硬件地址 -e:以 Linux 的显示风格显示 arp 缓冲区中的条目 -i<接口>:指定要操作 arp 缓冲区的网络接口 -s<主机><MAC地址>:设置指定的主机的 IP 地址与 MAC 地址的静态映射 -n:以数字方式显示 arp 缓冲区中的条目 -v:显示详细的 arp 缓冲区条目,包括缓冲区条目的统计信息 -f<文件>:设置主机的 IP 地址与 MAC 地址的静态映射
示例:
1 2 3 4 5 6 7 8 #显示 ARP 表 arp -n 或 ip neigh #ARP 静态绑定 MAC 地址可以防止 ARP 欺骗 arp -s 10.0.0.6 00:0c:29:32:80:38 #删除 arp 缓存条目 arp -d 10.0.0.6 #指定回复的 MAC 地址 arp -i eth0 -Ds 10.0.0.2 eth1 pub
kali 系统通过 arp 欺骗实现网络流量劫持
1 2 3 4 5 6 7 8 9 #启动路由转发功能 [root@kali ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #安装包 [root@kali ~]# apt-get install dsniff #欺骗目标主机,本机是网关 [root@kali ~]# arpspoof -i eth0 -t [被劫持的目标主机IP] [网关IP] #欺骗网关,本机是目标主机 [root@kali ~]# arpspoof -i eth0 -t [网关IP] [被劫持的目标主机IP]
14. nmap nmap 是一个强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测等多种技术。
1 2 3 # nmap 软件包安装 rpm -qa | grep nmap yum -y install nmap
格式:
常用参数选项:
1 2 3 4 5 6 7 8 -p:指定扫描的端口 -n:禁用反向 DNS 解析(加快扫描速度) -sS:TCP 的 SYN 扫描(半开扫描),只向目标发出 SYN 数据包,如果收到 SYN/ACK 响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放 -sT:TCP 连接扫描,这是完整的 TCP 扫描方式(默认扫描类型),用来建立一个 TCP 连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放 -sF:TCP 的 FIN 扫描,开放的端口会忽略这种数据包,关闭的端口会回应 RST 数据包。许多防火墙只对 SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性 -sU:UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢 -sP:ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描 -P0:跳过 ping 检测,这种方式认为所有的目标主机是存活的,当对方不响应 ICMP 请求时,使用这种方式可以避免因无法 ping 通而放弃扫描
TCP 控制位类型:
1 2 3 4 5 6 SYN 建立连接 ACK 确认数据包传输状况 FIN 关闭连接 PSH 推送位 RST 重置 URG 紧急
示例:
1 2 3 4 5 6 7 #分别查看本机开放的 TCP 端口、UDP 端口 nmap -sT 127.0.0.1 nmap -sU 127.0.0.1 #检测 192.168.80.0/24 网段有哪些主机提供 HTTP 服务 nmap -p 80 192.168.80.0/24 #检测 192.168.80.0/24 网段有哪些存活主机 nmap -n -sP 192.168.80.0/24
https://mp.weixin.qq.com/s/qDCF9j7GARuwr61_PviFEw?scene=1