文章目录
前言
#网络配置查看
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 工具包
格式:
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地址]
参数说明:
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地址
[网络设备] 指定网络设备的名称
示例:
#显示网络设备信息
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 命令即是其中之一。
示例:
#显示网卡设备信息
ip a 或者 ip addr show
#查看链路层的状态,但是看不到 ip 地址
ip link
ip -s link #显示更全面,显示不同网络接口的统计数据
#查看接入你所在的局域网的设备的 MAC 地址
ip neighbour
#开启/关闭 eth0
ip link set eth0 up/down
#临时修改网卡名称
ip link set 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
3. ping
Linux ping 命令用于检测主机,执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
格式:
ping [参数选项] [主机名或IP地址]
参数 | 含义 |
---|---|
-c | 设置完成要求回应的次数 |
-i | 指定收发信息的间隔时间 |
-s | 设置数据包的大小 |
-w | 在设定的秒后退出 |
示例:
[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 路由表。
格式:
route [-nee]
route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
选项说明:
add 添加一条路由规则
del 删除一条路由规则
-net 目的地址是一个网络
-host 目的地址是一个主机
target 目的网络或主机
netmask 目的地址的网络掩码
gw 路由数据包通过的网关
dev 为路由指定的网络接口
要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器或者同时位于两个网络的网关。在 Linux 系统中,设置路由通常是为了解决以下问题:该 Linux 系统在一个局域网中,局域网中有一个网关,能够让机器访问 internet,那么就需要将这台机器的 IP 地址设置为 Linux 机器的默认路由。要注意的是,直接在命令行下执行 route 命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了。要想永久保存,有如下方法:
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 命令的输出项说明:
Destination 目标网段或者主机
Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码
Flags 标记。一些可能的标记如下:
U — 路由是活动的
H — 目标是一个主机
G — 路由指向网关
R — 恢复动态路由产生的表项
D — 由路由的后台程序动态地安装
M — 由路由的后台程序修改
! — 拒绝路由
Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
Ref 路由项引用次数(linux 内核中没有使用)
Use 此路由项被路由软件查找的次数
Iface 该路由表项对应的输出接口
示例:
[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)是一个查看进程打开的文件的工具
选项:
-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 | 显示网络统计信息 |
常用命令选项:
netstat [-anpt] [-anpu] [-anptu] [-anpltu] [-ntlp]
示例:
[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 信息。
格式:
ss [OPTION]... [FILTER]
选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock 相关
-l: listen 状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及 PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
示例:
#显示本地打开的所有端口
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 安装。
格式:
traceroute [参数] [主机|IP]
参数:
-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 开启或关闭数据包的正确性检验
示例:
[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 安装。
格式:
nslookup 域名
示例:
[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 包。
格式:
dig 域名
示例:
[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 命令相关术语:
- 设备即网络接口
- 连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效
格式:
nmcli [OPTIONS] OBJECT { COMMAND | help }
选项:
-a 询问缺少的参数
-c 是否在输出中使用颜色
-e 转义值中的列分隔符
-f 指定要输出的字段
-g -m tabular -t -f 的快捷方式
-m 输出模式
-o 概览模式
-p 更加友好的输出方式
-s 允许显示密码
-t 简洁输出
-v 显示程序版本
-w 设置等待完成操作的超时
对象:
g[eneral] NetworkManager 的一般状态和操作
n[etworking] 整体网络控制
r[adio] NetworkManager 无线电开关
c[onnection] NetworkManager 的连接
d[evice] 由 NetworkManager 管理的设备
a[gent] NetworkManager 秘密代理或 polkit 代理
m[onitor] 监控 NetworkManager 的变化
示例:
#查看帮助
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:
#添加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 等逻辑语句帮助去除无用的信息。
格式:
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
选项:
-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<数据包文件> 把数据包数据写入指定的文件
示例:
#不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡
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 分析
13. arp
arp 命令用于操作主机的 arp 缓冲区,可以用来显示 arp 缓冲区中的所有条目、删除指定的条目或者添加静态的 ip 地址与 MAC 地址对应关系。
格式:
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 <-''-
参数:
-a<主机>:显示 arp 缓冲区的所有条目
-H<地址类型>:指定 arp 指令使用的地址类型
-d<主机>:从 arp 缓冲区中删除指定主机的 arp 条目
-D:使用指定接口的硬件地址
-e:以 Linux 的显示风格显示 arp 缓冲区中的条目
-i<接口>:指定要操作 arp 缓冲区的网络接口
-s<主机><MAC地址>:设置指定的主机的 IP 地址与 MAC 地址的静态映射
-n:以数字方式显示 arp 缓冲区中的条目
-v:显示详细的 arp 缓冲区条目,包括缓冲区条目的统计信息
-f<文件>:设置主机的 IP 地址与 MAC 地址的静态映射
示例:
#显示 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 欺骗实现网络流量劫持
#启动路由转发功能
[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 扫描、多端口检测等多种技术。
# nmap 软件包安装
rpm -qa | grep nmap
yum -y install nmap
格式:
nmap [扫描类型] [选项] [扫描目标]
常用参数选项:
-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 控制位类型:
SYN 建立连接
ACK 确认数据包传输状况
FIN 关闭连接
PSH 推送位
RST 重置
URG 紧急
示例:
#分别查看本机开放的 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