云计算|Linux 常用网络命令大全


文章目录

  • 前言
  • 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

前言
#网络配置查看 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<地址>][<硬件地址>][io_addr][irq][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]

参数说明:
add<地址> 设置网络设备IPv6的IP地址 del<地址> 删除网络设备IPv6的IP地址 down 关闭指定的网络设备 <硬件地址> 设置网络设备的类型与硬件地址 io_addr 设置网络设备的I/O地址 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 命令即是其中之一。
云计算|Linux 常用网络命令大全
文章图片

示例:
#显示网卡设备信息 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

参考:试试 Linux 下的 ip 命令
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 DestinationGatewayGenmaskFlags Metric RefUse IfaceMSSWindow irtt 0.0.0.020.0.0.20.0.0.0UG10000 eth0000 20.0.0.00.0.0.0255.255.255.0U10000 eth0000#路由主要有三种:主机路由,网络路由,默认路由 #添加到主机的路由,目标 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 AddressForeign AddressStatePID/Program name tcp00 127.0.0.1:250.0.0.0:*LISTEN3631/master tcp00 0.0.0.0:220.0.0.0:*LISTEN3421/sshd tcp00 20.0.0.19:2220.0.0.1:64385ESTABLISHED 20165/sshd: root@pt tcp052 20.0.0.19:2220.0.0.1:60938ESTABLISHED 30806/sshd: root@pt tcp600 ::1:25:::*LISTEN3631/master tcp600 :::22:::*LISTEN3421/sshd [root@c7-1 ~]#netstat -anpt | grep sshd tcp00 0.0.0.0:220.0.0.0:*LISTEN3421/sshd tcp00 20.0.0.19:2220.0.0.1:64385ESTABLISHED 20165/sshd: root@pt tcp052 20.0.0.19:2220.0.0.1:60938ESTABLISHED 30806/sshd: root@pt tcp600 :::22:::*LISTEN3421/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 120.0.0.25 (20.0.0.25)0.942 ms0.782 ms0.647 ms #可以看到这两台机器之间没有经过路由,是直连或连着交换机的状态[root@c7-1 ~]#traceroute www.baidu.com traceroute to www.baidu.com (112.80.248.75), 30 hops max, 60 byte packets 1gateway (20.0.0.2)5.900 ms5.817 ms5.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#53Non-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#53Non-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.1localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1localhost 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 SIZErcvd: 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 staticifname eth0 autoconnect no type Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway172.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.dns8.8.8.8 nmcli con mod "static"-ipv4.dns8.8.8.8 nmcli con mod "static" ipv4.addresses “172.16.X.10/24172.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 分析

参考:
tcpdump 使用详解
tcpdump命令
13. arp arp 命令用于操作主机的 arp 缓冲区,可以用来显示 arp 缓冲区中的所有条目、删除指定的条目或者添加静态的 ip 地址与 MAC 地址对应关系。
格式:
arp [-vn][] [-i ] [-a] []<-Display ARP cache arp [-v][-i ] -d[pub]<-Delete ARP entry arp [-vnD] [] [-i ] -f[]<-Add entry from file arp [-v][] [-i ] -s[temp]<-Add entry arp [-v][] [-i ] -Ds [netmask ] pub<-''-

参数:
-a<主机>:显示 arp 缓冲区的所有条目 -H<地址类型>:指定 arp 指令使用的地址类型 -d<主机>:从 arp 缓冲区中删除指定主机的 arp 条目 -D:使用指定接口的硬件地址 -e:以 Linux 的显示风格显示 arp 缓冲区中的条目 -i<接口>:指定要操作 arp 缓冲区的网络接口 -s<主机>:设置指定的主机的 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紧急

【云计算|Linux 常用网络命令大全】示例:
#分别查看本机开放的 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

    推荐阅读