本文共 22684 字,大约阅读时间需要 75 分钟。
网络是运维中非常重要的一环,所以笔者就把比较常见的与网络相关的命令及一些技巧总结一下
首先我们将我们常常要得到的网络状况和命令简单的做一个对照,下面将会有对命令详细的介绍
效果 | 命令 |
---|---|
查看本机网口信息 | ifconfig,ip |
网络接口的开关 | ifup,ifdown |
查看路由表 | route,netstat(-r) |
arp相关 | arp |
探测网络中主机是否存在 | ping,nmap,arping |
查看网络tcp,udp的连接状态还有端口信息 | netstat,ss |
测试主机间连通性 | ping |
简单的TCP连接模拟 | nc |
探测目标主机的端口 | nmap |
域名解析 | nslookup,dig,host |
监听网络流量 | tcpdump |
一.功能
用于配置网卡地址或显示当前网络的接口状态,类似Windows下的ipconfig命令,如果系统中没有ifconfig命令,可以使用yum -y install net-tools来安装 二.参数选项说明参数选项 | 说明 |
---|---|
-a | 显示所有的网络接口信息,包括活动的和非活动的 |
up | 激活指定的网络接口 |
down | 关闭指定的网络接口 |
hw | 设置网络接口的物理地址 |
三.使用案例
1.查看接口信息-----ifconfig[root@k8s-master bin]# ifconfig ###查看所有docker0: flags=4099mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:e7:34:80:20 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens33: flags=4163 mtu 1500 inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255 ether 00:0c:29:ea:68:85 txqueuelen 1000 (Ethernet) RX packets 329590 bytes 477267888 (455.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 45283 bytes 4272717 (4.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1 (Local Loopback) RX packets 32 bytes 2592 (2.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 32 bytes 2592 (2.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0-------------------------------------------------------[root@k8s-master bin]# ifconfig ens33 ###查看指定接口的信息ens33: flags=4163 mtu 1500 inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255 ether 00:0c:29:ea:68:85 txqueuelen 1000 (Ethernet) RX packets 329649 bytes 477271938 (455.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 45306 bytes 4275859 (4.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.启动/关闭指定网卡—ifconfig < 网卡名称 > up | down
[root@k8s-master bin]# ifconfig docker0 down[root@k8s-master bin]# ifconfig docker0 up
除了使用这个方法外,还可以世界使用ifup和ifdown来开启和关闭网络接口
[root@k8s-master bin]# ifup ens33[root@k8s-master bin]# ifdown ens33
在这里插入代码片
3.为指定网卡配置IP地址—ifconfig < 网卡名称 >
[root@k8s-master bin]# ifconfig docker0 192.168.20.1/24
4.为指定网卡配置别名IP—ifconfig < 网卡名称 >:<编号>
[root@k8s-master bin]# ifconfig ens33:0 192.168.10.80[root@k8s-master bin]# ifconfig ens33:1 192.168.10.90[root@k8s-master bin]# ifconfigens33: flags=4163mtu 1500 inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255 ether 00:0c:29:ea:68:85 txqueuelen 1000 (Ethernet) RX packets 330158 bytes 477309271 (455.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 45533 bytes 4297033 (4.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens33:0: flags=4163 mtu 1500 inet 192.168.10.80 netmask 255.255.255.0 broadcast 192.168.10.255 ether 00:0c:29:ea:68:85 txqueuelen 1000 (Ethernet)ens33:1: flags=4163 mtu 1500 inet 192.168.10.90 netmask 255.255.255.0 broadcast 192.168.10.255 ether 00:0c:29:ea:68:85 txqueuelen 1000 (Ethernet)
一.功能
route命令可以显示或管理Linux系统的路由表,route命令设置的路由主要是静态路由 二.参数选项说明参数选项 | 说明 |
---|---|
-n | 直接使用IP地址,不进行DNS解析 |
add | 添加路由信息 |
del | 删除路由信息 |
-net | 到一个网络的路由,后面接的是一个网络号地址 |
-host | 到一个主机的路由,后面接的是一个主机地址 |
netmask NM | 为添加的路由指定网络掩码 |
gw GW | 为发往目标网络/主机的任何分组指定网关 |
dev IF | 指定由哪个网络设备发出去,后面接网络设备,如eth0 |
三.使用案例
1.查看路由信息—route | route -n 不加n的话,默认会将地址转换为域名显示出来,如果加上-n选项就会直接显示IP地址,而且显示速度会更快一些[root@k8s-master ~]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault gateway 0.0.0.0 UG 100 0 0 ens33192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0-------------------------------------------------[root@k8s-master ~]# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 192.168.10.2 0.0.0.0 UG 100 0 0 ens33192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0-------------------------------------------------字段解释Destination:表示网络号Gateway:连出网关地址,0.0.0.0表示由本机转发出去,如果有IP显示,则表示本条路由必须经过该IP才能发送出去Genmask:表示子网掩码地址,即netmaskFlags:路由标记信息 U:表示此路由为启动状态 H:表示为是主机路由 G:表示需要外部主机(Gateway)来转发数据 M:表示路由已经被修改了 D:已经由服务设定为动态路由Metric:需要经过几个网络节点才能到达目标网络地址Ref:参考到此路由规则的数目Use:有几个转送数据包参考到了此路由规则Iface:路由对应的网络设备接口
2.添加或删除默认网关—route del default | route add default gw <地址>
[root@k8s-master ~]# route del default[root@k8s-master ~]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0[root@k8s-master ~]# route add default gw 192.168.10.2[root@k8s-master ~]# route Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault gateway 0.0.0.0 UG 0 0 0 ens33192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0
3.配置网络路由
1.去往某一网段的路由[root@k8s-master ~]# route add -net 10.10.10.0/24 dev ens33 ###指定接口的写法[root@k8s-master ~]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault gateway 0.0.0.0 UG 0 0 0 ens3310.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0其他写法route add -net 10.10.10.0/24 gw 192.168.10.2 ###指定网关的写法
使用route add配置的路由,再计算机重启之后,就找不到了,如果想要开机还保持存在,可以使用以下方法
方法一:添加内容到/etc/sysconfig/static-routes (默认这个文件不存在)any net 10.10.10.0/24 gw 192.168.10.2方法二:将route命令加到开机自启执行的命令里/etc/rc.localroute add -net 10.10.10.0/24 gw 192.168.10.2
去往主机的路由route add -host 10.10.10.10/24 dev ens33
一.功能
arp命令用于操作本机的arp缓存区,可以显示arp缓存区中的所有条目,删除指定的条目或者静态的添加IP地址与MAC地址对应的关系 二.参数选项说明参数选项 | 说明 |
---|---|
-n | 显示数字IP地址 |
-s <主机><MAC地址> | 设置指定主机的IP地址和MAC地址的映射 |
-d | 从arp缓存区中删除指定主机的arp条目 |
-v | 显示详细的arp缓存区条目,包括缓冲区条目的统计信息 |
三.使用案例
1.查看arp缓存[root@k8s-master ~]# arpAddress HWtype HWaddress Flags Mask Ifacegateway ether 00:50:56:f1:1a:ab C ens33192.168.10.1 ether 00:50:56:c0:00:08 C ens33[root@k8s-master ~]# arp -nAddress HWtype HWaddress Flags Mask Iface192.168.10.2 ether 00:50:56:f1:1a:ab C ens33192.168.10.1 ether 00:50:56:c0:00:08 C ens33FLAG字段的C表示arp高速缓存中的条目,M表示静态配置的arp条目
2.查看指定的IP地址在本地对应的缓存
[root@k8s-master ~]# arp -n 192.168.10.1Address HWtype HWaddress Flags Mask Iface192.168.10.1 ether 00:50:56:c0:00:08 C ens33
3.静态绑定IP地址与MAC地址
[root@k8s-master ~]# arp -s 192.168.10.99 00:50:56:c1:01:81[root@k8s-master ~]# arp -nAddress HWtype HWaddress Flags Mask Iface192.168.10.99 ether 00:50:56:c1:01:81 CM ens33192.168.10.2 ether 00:50:56:f1:1a:ab C ens33192.168.10.1 ether 00:50:56:c0:00:08 C ens33
一.功能
用于显示本机网络的连接状态(TCP,UDP),运行端口和路由表等信息 二.参数选项说明参数选项 | 说明 |
---|---|
-n | 显示数字形式的地址而不是去解析主机,端口或用户名,默认情况下netstat命令会尝试解析并显示主机的主机名 |
-a | 显示处于监听状态和非监听状态的socket信息 |
-t | 显示所有的TCP连接情况 |
-u | 显示所有的UDP连接情况 |
-p | 显示socket所属进程的PID和名称 |
三.使用案例
1.常见组合一,显示所有连接的信息[root@k8s-master /]# netstat -anActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 36 192.168.10.10:22 192.168.10.1:53811 ESTABLISHEDtcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN udp 0 0 0.0.0.0:111 0.0.0.0:* udp 0 0 127.0.0.1:323 0.0.0.0:* udp 0 0 0.0.0.0:887 0.0.0.0:* udp6 0 0 :::111 :::* udp6 0 0 ::1:323 :::* udp6 0 0 :::887 :::* raw6 0 0 :::58 :::* 7 Active UNIX domain sockets (servers and established)Proto RefCnt Flags Type State I-Node Pathunix 2 [ ACC ] STREAM LISTENING 39936 /run/gssproxy.sockunix 2 [ ] DGRAM 69923 /var/run/chrony/chronyd.sockunix 2 [ ACC ] STREAM LISTENING 88883 /var/run/docker.sockunix 2 [ ACC ] STREAM LISTENING 39935 /var/lib/gssproxy/default.sockunix 2 [ ACC ] STREAM LISTENING 89419 /var/run/docker/metrics.sock整个显示分为两部分,上边的部分是活动的TCP/IP连接,下边的部分是unix socket连接
对各列信息进行分析
名称 | 含义 |
---|---|
Proto | socket使用的协议(TCP,UDP,RAW) |
Recv-Q | 接受到但是还未处理的字节数 |
Send-Q | 已经发送但是未被远程主机确认收到的字节数 |
Local Address | 本地主机地址和端口 |
Foreign Address | 远程主机地址和端口 |
State | socket的状态,通常仅仅有TCP的状态,状态值可能有ESTABLISHED,SYN_SENT,SYN_RECV,FIN_WAIT1,FIN_WAIT2,TIME_WAIT等 |
对各个状态的详细解释
状态 | 含义 |
---|---|
ESTABLISHED | socket已经建立连接,表示处于连接状态,一般认为有一个ESTABLISHED是一个服务的并发连接,该连接状态在生产场景中很重要 |
SYN_SENT | socket正在积极建立一个连接,即处于发送后连接前的一个等待但未匹配进入连接状态 |
SYN_RECV | 已经从网上收到一个连接请求 |
FIN_WAIT | socket已经关闭,连接正在或正要关闭 |
FIN_WAIT2 | 连接已经关闭,并且socket正在等待远端结束 |
TIME_WAIT | socket正在等待关闭处理仍在网络上的数据报,这个连接状态在生产场景中很重要,需要重点关注 |
CLOSED | socket已经不再被占用了 |
CLOSED_WAIT | 远端已经结束,等待socket关闭 |
LAST_ACK | 远端已经结束,并且socket也已经关闭,等待acknowledgment |
LISTEN | socket正在监听连接请求 |
CLOSING | socket关闭,但是我们仍旧没有发送数据 |
UNKNOWN | socket状态未知 |
三次握手过程
2.常见组合二:显示所有TCP和UDP正在监听的信息
netstat -lntup -l:显示所有监听状态的网络连接 -n:显示ip地址,不进行DNS解析成主机名,域名 -t:显示所有TCP连接 -u:显示所有UDP连接 -p:显示进程号和进程名[root@k8s-master ~]# netstat -lnutpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1129/sshd tcp6 0 0 :::111 :::* LISTEN 809/rpcbind tcp6 0 0 :::22 :::* LISTEN 1129/sshd udp 0 0 0.0.0.0:983 0.0.0.0:* 809/rpcbind udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd udp 0 0 127.0.0.1:323 0.0.0.0:* 826/chronyd udp6 0 0 :::983 :::* 809/rpcbind udp6 0 0 :::111 :::* 809/rpcbind udp6 0 0 ::1:323 :::* 826/chronyd
3.显示当前路由表
[root@k8s-master ~]# netstat -rnKernel IP routing tableDestination Gateway Genmask Flags MSS Window irtt Iface0.0.0.0 192.168.10.2 0.0.0.0 UG 0 0 0 ens33172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
4.使用选项-i显示网络的接口状况
[root@k8s-master ~]# netstat -iKernel Interface tableIface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgdocker0 1500 0 0 0 0 0 0 0 0 BMUens33 1500 340 0 0 0 141 0 0 0 BMRUlo 65536 32 0 0 0 32 0 0 0 LRU
5.使用netstat查找指定服务名称的进程号
根据服务查找PID[root@k8s-master ~]# netstat -luntp | grep nginxtcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2040/nginx: master 或者使用ps[root@k8s-master ~]# ps -ef | grep nginxroot 2040 1 0 08:57 ? 00:00:00 nginx: master process /application/nginx-1.6.3/sbin/nginxnginx 2041 2040 0 08:57 ? 00:00:00 nginx: worker processroot 2114 1728 0 08:59 pts/0 00:00:00 grep --color=auto nginx
一.功能:
ss是类似并取代netstat的一条命令,他能用来查看网络状态信息,包括TCP.UDP连接,端口等。他的优点是能够显示更多更详细的有关网络连接状态的信息,而且比netstat更快速更高效 二.ss的参数使用大致和netstat一样,这里就不再赘述 ss命令属于iproute包,因此安装命令是yum -y install iproute 三.使用案例 1.显示所有的socket连接ss -anss -an | columt -t ###将上面的输出进行格式化,不然显示会有点乱
2.显示所有正在监听的TCP和UDP连接
ss -lntup | cloumn -t ###显示所有正在监听的TCP和UDP连接
3.显示socket统计
[root@k8s-master ~]# ss -sTotal: 523 (kernel 1020)TCP: 6 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0Transport Total IP IPv6* 1020 - - RAW 1 0 1 UDP 6 3 3 TCP 6 4 2 INET 13 7 6 FRAG 0 0 0
一.功能:
ping命令可用于测试主机之间网络的连通性。执行ping命令会使用ICMP传输协议,发出要求回应的消息,若远端主机的网络功能没有问题,就会回应该信息,因而可以得知该主机运作正常 二.参数选项说明参数选项 | 说明 |
---|---|
-c <次数> | 指定发送ICMP报文的次数,否则ping命令将会一致发送报文 |
-I | 相邻两次发送报文的时间间隔,默认为1S |
-s <数据包大小> | 设置发送数据包的大小,默认大小为56字节,再加上8字节的ICMP头,一共是64字节的ICMP包 |
-t <生存期> | 设置发送的数据报其生存期(TTL)的值 |
一.功能
traceroute命令用于显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况 二.参数选项说明参数 | 说明 |
---|---|
-q | 设置每一跳的探测包数量 |
-I | 使用ICMP echo探测,即ping |
-n | 直接使用IP地址而不使用主机名 |
-m | 设置最大的跳数,默认为30 |
三.使用案例
1.查看某主机的路由状态[root@k8s-master ~]# traceroute www.baidu.comtraceroute to www.baidu.com (61.135.169.125), 30 hops max, 60 byte packets 1 gateway (192.168.10.2) 0.151 ms 0.102 ms 0.092 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * *会有***号,一般为路由器关闭了,应答teaceroute消息,因为会暴露出许多安全问题,导致安全问题的产生
2.加快查询时间,traceroute默认使用的是UDP协议,有时候性能可能不是很好,加-I选项调用icmp协议,可以有效的提高速度,因为icmp是网络层的协议,更加高效一些
一.功能
arping命令是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包检测局域网内所有设备的硬件地址。除此之外,还可以使用arping来探测目的主机是否存活 二.参数选项说明参数选项 | 说明 |
---|---|
-c | 发送指定次数的arp报文后退出命令 |
-f | 当收到第一个应道报文时,立即退出命令,此选项用于判断目的主机是否存在或者正常运行 |
-I <网络接口> | 指定网络接口发送arp报文 |
-w <截至时间> | 设置命令的执行截至时间 |
三.使用案例
1.探测目的主机是否存活[root@k8s-master ~]# arping -f -I ens33 192.168.10.2ARPING 192.168.10.2 from 192.168.10.10 ens33Unicast reply from 192.168.10.2 [00:50:56:F1:1A:AB] 0.846msSent 1 probes (1 broadcast(s))Received 1 response(s)
一.功能
nc是一个简单,可靠,强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的TCP和UDP端口,进行端口扫描,处理ipv4和ipv6数据包 二.参数选项说明参数选项 | 说明 |
---|---|
-l | 指定监听端口,然后一直等待网络连接 |
-z | 表示zero,表示扫描时不发送任何数据 |
-v | 显示详细输出 |
-w | 设置超时时间,对-l选项失效 |
-p | 指定nc命令使用的端口,不能和-l选项一起使用,可能引起错误 |
-u | 使用UDP连接,默认是TCP连接 |
三.使用案例
实现以下演示,需要关闭防火墙和selinux,不然可能会出现一些错误 1.模拟TCP连接并传输文本内容在同一台机器上,开启多个终端(利用Xshhl开打多个对话框)在第一个终端上执行创建一个测试文件,然后使用nc -l 命令开放端口供测试[root@k8s-master ~]# touch test_from_b[root@k8s-master ~]# nc -l 12345 > test_from_b ###开放端口监听,将收到的内容放入test_from_b这个文件中在第二台终端上使用netstat可以检测到端口已经开启[root@k8s-master ~]# netstat -luntp Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN 6138/nc 在第三台终端上使用nc命令发送文件(为了看到实验效果,和第一个开启的终端在不同的目录下)[root@k8s-master test]# cat from_bthis one is from [root@k8s-master test]# nc 192.168.10.10 12345
2.利用nc进行端口扫描
nc -z 192.168.10.10 20-30 /扫描主机上的20到30端口
一.功能:
wget命令用于从网络上下载某些资料,该命令对于能够连接到互联网的Linux系统的作用非常大,可以直接从网络上下载自己所需要的文件 wget特点: 支持断点下载功能 支持FTP和HTTP下载方式 支持代理服务器 二.参数选项说明参数选项 | 说明 |
---|---|
-o | 将命令的执行结果写入文件中 |
-O | 指定保存的文件名后下载文件 |
–limit-rate | 限速下载 |
-b | 转入后台执行程序 |
–tries=< number > | 设置重试的次数 |
–spider | 模拟爬虫访问(可以用来探测网络是否正常) |
一.功能
nslookup命令时常用的域名解析查询工具,如果某有该命令则需要安装对应软件,yum -y install bind-utils 二.参数选项说明 nslookup有两种模式 交互模式:用户可以向域名服务器查询各类主机,域名的消息,或者输出域名中的主机列表 非交互模式:针对一个主机或域名仅仅获取特定的名称或所需的信息 三.使用案例 1.交互式查询------直接在命令行中输入nslookup[root@k8s-master ~]# nslookup> www.baidu.com ###在>后键入要查询的域名Server: 8.8.8.8Address: 8.8.8.8#53Non-authoritative answer:www.baidu.com canonical name = www.a.shifen.com.Name: www.a.shifen.comAddress: 182.61.200.6Name: www.a.shifen.comAddress: 182.61.200.7
2.非交互式查询
[root@k8s-master ~]# nslookup www.baidu.comServer: 8.8.8.8Address: 8.8.8.8#53Non-authoritative answer:www.baidu.com canonical name = www.a.shifen.com.Name: www.a.shifen.comAddress: 61.135.169.121Name: www.a.shifen.comAddress: 61.135.169.125
一.功能
nmap命令是一款开放源代码的网络探测和安全审核工具,是Network Mapper的缩写,其涉及目标是快速扫描大型网络。nmap可以发现网络上有哪些主机,主机提供了什么服务,并探测操作系统的类型及版本信息 二.参数选项说明参数 | 说明 |
---|---|
-sS | TCP同步扫描(TCP SYN) |
-sT | TCP连接扫描 |
-sn | 不进行端口扫描,只检查哪些主机正在运行 |
-sU | 扫描UDP端口 |
-sV | 探测服务器版本信息 |
-v | 显示扫描过程中的详细信息 |
-p <端口> | 指定要扫描的端口,可以是一个单独的端口,也可以用逗号分隔开多个端口 |
-n | 不进行DNS解析,加快扫描速度 |
-O | 激活对TCP/IP指纹特征的扫描,获得远程主机的标志,也就是操作系统类型 |
三.使用案例
1.查看当前主机开放的端口[root@k8s-master ~]# nmap 192.168.10.10Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-21 15:08 CSTNmap scan report for k8s-master (192.168.10.10)Host is up (0.0000050s latency).Not shown: 997 closed portsPORT STATE SERVICE22/tcp open ssh80/tcp open http111/tcp open rpcbind
2.扫描主机的指定端口
[root@k8s-master ~]# nmap -p 1024-65535 192.168.10.10Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-21 15:12 CSTNmap scan report for k8s-master (192.168.10.10)Host is up (0.0000050s latency).All 64512 scanned ports on k8s-master (192.168.10.10) are closedNmap done: 1 IP address (1 host up) scanned in 0.79 seconds
3.扫描局域网内所有IP
[root@k8s-master ~]# nmap 192.168.10.0/24Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-21 15:13 CSTNmap scan report for 192.168.10.1Host is up (0.00045s latency).Not shown: 993 closed portsPORT STATE SERVICE135/tcp open msrpc139/tcp open netbios-ssn443/tcp open https445/tcp open microsoft-ds902/tcp open iss-realsecure912/tcp open apex-mesh5357/tcp open wsdapiMAC Address: 00:50:56:C0:00:08 (VMware)Nmap scan report for 192.168.10.2Host is up (0.00035s latency).Not shown: 999 closed portsPORT STATE SERVICE53/tcp open domainMAC Address: 00:50:56:F1:1A:AB (VMware)Nmap scan report for k8s-master (192.168.10.10)Host is up (0.0000050s latency).Not shown: 997 closed portsPORT STATE SERVICE22/tcp open ssh80/tcp open http111/tcp open rpcbindNmap done: 256 IP addresses (3 hosts up) scanned in 3.37 seconds
4.探测目标主机的服务和操作系统的版本
[root@k8s-master ~]# nmap -O -sV 192.168.10.10Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-21 15:15 CSTNmap scan report for k8s-master (192.168.10.10)Host is up (0.000096s latency).Not shown: 997 closed portsPORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 7.4 (protocol 2.0)80/tcp open http nginx 1.6.3111/tcp open rpcbind 2-4 (RPC #100000)Device type: general purposeRunning: Linux 3.XOS CPE: cpe:/o:linux:linux_kernel:3OS details: Linux 3.7 - 3.9Network Distance: 0 hopsOS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 13.66 seconds
一.功能说明
tcpdump命令是一个截获网络数据包的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来以提供分析。它支持针对网络层,协议,主机,端口等的过滤,并支持与,或,非逻辑语句协助过滤有效信息 二.参数选项说明选项 | 说明 |
---|---|
-c <数据包数目> | 接收到指定的数据包数目后退出命令 |
-i<网络接口> | 指定要监听数据包的网络接口 |
-n | 不进行DNS解析,加快显示速度 |
-nn | 不将协议和端口数字等转换成名字 |
-q | 以快速输出的方式运行,此选项仅显示数据包的协议概要信息,输出信息较短 |
三.使用案例
1.不加任何参数运行tcpdump监听网络,将监视第一个网络接口上所有流过的数据包(可以指定参数 -i 监听指定网卡上收到的数据包)[root@k8s-master ~]# tcpdump -i ens33tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes15:26:39.153988 IP k8s-master.ssh > 192.168.10.1.56207: Flags [P.], seq 311182213:311182401, ack 2647658138, win 254, length 18815:26:39.154314 IP k8s-master.46736 > dns.google.domain: 58810+ PTR? 1.10.168.192.in-addr.arpa. (43)15:26:39.154614 IP 192.168.10.1.56207 > k8s-master.ssh: Flags [.], ack 188, win 4104, length 015:26:39.198762 IP dns.google.domain > k8s-master.46736: 58810 NXDomain 0/0/0 (43).......... ###此处省略掉一些内容163 packets captured ###当使用CTRL+C结束抓捕流量时,最后会显示出一共抓捕了多少包163 packets received by filter0 packets dropped by kernel
2.精简输出信息 -q选项
[root@k8s-master ~]# tcpdump -i ens33 -qtcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes^C15:30:13.144435 IP k8s-master.ssh > 192.168.10.1.56207: tcp 1881 packet captured7 packets received by filter0 packets dropped by kernel###会有一定的包被过滤掉
3.监听指定主机的数据包(对IP数据包的源地址进行检测)
[root@k8s-master ~]# tcpdump -n -i ens33 host 192.168.10.1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes15:32:20.742921 IP 192.168.10.10.ssh > 192.168.10.1.56207: Flags [P.], seq 312239901:312240089, ack 2647662106, win 254, length 18815:32:20.743064 IP 192.168.10.10.ssh > 192.168.10.1.56207: Flags [P.], seq 188:360, ack 1, win 254, length 17215:32:20.743136 IP 192.168.10.10.ssh > 192.168.10.1.56207: Flags [P.], seq 360:508, ack 1, win 254, length 148
4.监听指定端口的数据包
[root@k8s-master ~]# tcpdump -nn -i ens33 port 22 tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes15:34:46.448924 IP 192.168.10.10.22 > 192.168.10.1.56207: Flags [P.], seq 313054325:313054513, ack 2647667642, win 254, length 18815:34:46.449130 IP 192.168.10.1.56207 > 192.168.10.10.22: Flags [.], ack 188, win 4104, length 015:34:46.449231 IP 192.168.10.10.22 > 192.168.10.1.56207: Flags [P.], seq 188:360, ack 1, win 254, length 17215:34:46.449299 IP 192.168.10.10.22 > 192.168.10.1.56207: Flags [P.], seq 360:604, ack 1, win 254, length 24415:34:46.449448 IP 192.168.10.10.22 > 192.168.10.1.56207: Flags [P.], seq 604:752, ack 1, win 254, length 148
5.多个过滤条件混合使用
[root@k8s-master ~]# tcpdump -n -i ens33 host 192.168.10.10 and ! 192.168.10.1###获取主机192.168.10.10与除了192.168.10.1之间的所有通信的IP数据包
转载地址:http://bwttd.baihongyu.com/