查看
查看
如网络连接,路由表,接口状态,无效连接,组播成员等
默认情况下,netstat显示打开的套接字的列表,如果不指定地址族,则将打印所有已配置地址族的活动套接字
选项 | 含义 |
---|---|
-a | 系统中所有网络连接 包括:已经连接的网络服务、监听的网络服务和Socket套接字 |
-t | TCP连接 |
-u | UDP连接 |
-l | 列出正在监听的网络服务 不包括已经连接的网络服务 |
-n | 显示服务对应的端口 |
-p | 列出该服务的进程PID |
-s | 按各个协议进行统计 |
-c Num | 每隔一段时间,自动执行该命令 |
-r | 路由信息 |
状态 | 解释 |
---|---|
CLOSED | 初始(无连接)状态。 |
LISTEN | 侦听状态,等待远程机器的连接请求。 |
SYN_ SEND | 在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态, 等待对方的ACK包。 |
SYN_ RECV | 在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。 |
ESTABLISHED | 完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。 |
FIN_ WAIT_1 | 在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。 |
FIN_ WAIT_2 | 在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。 |
TIME_WAIT | 在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。 |
CLOSING | 在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。 |
CLOSE_WAIT | 在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。 |
LAST_ACK | 在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。 |
端 | 可能的状态 |
---|---|
主动连接端 | CLOSED,SYN_SEND,ESTABLISHED |
主动关闭端 | FIN_WAIT_1,FIN_WAIT_2,TIME_WAIT |
被动连接端 | LISTEN,SYN_ RECV,ESTABLISHED |
被动关闭端 | CLOSE_WAIT,LAST_ ACK,CLOSED |
表项 | 含义 |
---|---|
Proto | 数据包的协议,分为TCP和UDP |
Recv-Q | 已在本地缓存未被进程取走的数据包数量 |
Send-Q | 对方未收到或未回复的仍在本地缓冲区的数据包数量 |
Local Address | 本地IP:端口 通过端口可以知道本机开启了哪些服务 |
Foreign Address | 远程主机:端口 |
State | 连接状态 ESTABLISED | LISTEN |
PID/Program name | 进程ID/进程命令 |
netstat -tunlp
[root@zycentos7 ~]# netstat -tunlp
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:22 0.0.0.0:* LISTEN 6872/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7029/master
tcp6 0 0 :::21 :::* LISTEN 21637/vsftpd
tcp6 0 0 :::22 :::* LISTEN 6872/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7029/master
netstat -na
[root@zycentos7 ~]# netstat -na
……
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 34150 /var/run/vmware/guestServicePipe
……
表项 | 含义 |
---|---|
Proto | 协议,一般为unix |
RefCnt | 连接到此Socket的进程数量 |
Flags | 连接标识 |
Type | Socket访问类型 |
State | 连接状态,已经建立连接(ESTABLISED)和监听两种状态(LISTEN) |
I-Node | 程序文件的Inode号 |
Path | Socket程序的路径,或者相关数据的输出路径 |
netstat -route
查看路由表[root@zycentos7 ~]# netstat -route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens33
192.168.232.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
练习1 列出所有的端口,包括监听的和未监听的
[root@zycentos7 ~]# netstat -a
练习2 列出所有的tcp协议的端口
[root@zycentos7 ~]# netstat -t
练习3 寻找特定程序sshd运行的端口
[root@zycentos7 ~]# netstat -nltp|grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6872/sshd
tcp6 0 0 :::22 :::* LISTEN 6872/sshd
练习4 寻找特定端口对应的程序
[root@zycentos7 ~]# netstat -nltp|grep 6872
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6872/sshd
tcp6 0 0 :::22 :::* LISTEN 6872/sshd
练习5 查看本机路由信息
[root@zycentos7 ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 ens33
192.168.232.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW
sockets, Unix domain sockets等统计
相比其他工具,ss多展示了tcp和state信息,是一个非常实用、 快速、有效的跟踪IP连接和sockets的新工具
很多流行的Linux发行版都支持ss以及很多监控工具使用ss命令
ss [options] [ FILTER ]
选项 | 参数 |
---|---|
-t | TCP连接 |
-u | UDP连接 |
-n | 显示服务对应的端口 |
-a | 所有状态的连接 |
-l | 监听状态的连接 |
-p | 显示进程名称,pid以及fd |
-e | 显示扩展信息 |
-m | 显示套接连接使用的内存信息 |
-o state established | 状态 |
-d | DCCP,数据包拥塞控制协议 |
-w | RAW,原始套接字,接收本机网卡上的数据帧或包 |
-x | Unix domain sockets,同一主机上的进程间通信 |
常用的state状态
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : All of the above states
connected : All the states except for listen and closed
synchronized : All the connected states except for syn-sent
bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
big : Opposite to bucket state.
ss -o state established '( dport = :http or sport = :http )'
监控中常用来代替netstat获取http并发连接数ss -o state fin-wait-1 '( sport = :http or sport = :https )'
ss -ta
ss -tunlp
[root@client ~]# ss -s
Total: 483 (kernel 918)
TCP: 4 (estab 2, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
#当前已经连接、关闭、等待的tcp连接
Transport Total IP IPv6
* 918 - -
RAW 1 0 1
UDP 0 0 0
TCP 4 3 1
INET 5 3 2
FRAG 0 0 0
ss -x src /tmp/.X11-unix/*
#列出来自192.168.213.1的连接
ss src 192.168.213.1
#列出到192.168.213.1,80端口的连接
ss src 192.168.213.1:http
ss src 192.168.213.1:80
ss dport OP PORT
#OP运算符
<= or le : 小于等于 >= or ge : 大于等于
== or eq : 等于
!= or ne : 不等于端口
< or lt : 小于这个端口 > or gt : 大于端口
#OP实例
ss sport = :http 也可以是 ss sport = :80
ss dport = :http
ss dport \> :1024
ss sport \< :32000
ss sport eq :22
ss dport != :22
ss state connected sport = :http
ss \( sport = :http or sport = :https \)
ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
在Linux下,如果连接数比较大,可以使用效率更高的ss来替代netstat
为什么ss比netstat快:
netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息,所以ss执行的时候消耗资源和时间都比netstat少很多
示例: 统计服务器并发连接数
[root@client ~]# time netstat -ant | grep EST | wc -l
4700
real 0m12.960s
user 0m0.334s
sys 0m12.561s
[root@client ~]# time ss -o state established | wc -l
4709
real 0m0.030s
user 0m0.005s
sys 0m0.026s
[root@client ~]# time netstat -aut
[root@client ~]# time ss -aut
https://www.cnblogs.com/kevingrace/p/6211509.html
[root@zycentos7 ~]# traceroute 192.168.232.2
traceroute to 192.168.232.2 (192.168.232.2), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 *^C
-r 以报告模式显示
-s 指定ping数据包的大小
-c 设置每秒发送数据包的数量,默认10
-n no-dns不对IP地址做域名解析
-a 设置发送数据包的IP地址
-i 设置ICMP返回时间,默认1s
-4 IPv4
-6 IPv6
[root@zycentos7 ~]# mtr www.baidu.com
My traceroute [v0.85]
zycentos7 (0.0.0.0) Mon Nov 18 20:10:38 2019
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.232.2 0.0% 38 0.2 0.5 0.2 6.7 1.0
表项 | 含义 |
---|---|
Host | P地址和本机域名 |
Loss% | 每个对应IP的丢包率 |
Snt | 每秒发送数据包的数量 |
Last | 最近一次的返回时延 |
Avg | 发送ping包的平均时延 |
Best | 最短时延 |
Wrst | 最长时延 |
StDev | 标准偏差 |
telnet服务 25端口
[root@zycentos7 ~]# telnet 192.168.232.111 80
Trying 192.168.232.111...
Connected to 192.168.232.111.
Escape character is '^]'.
Connection closed by foreign host.
-P dirname 指定下载后保存在本地的路径
-O filename 指定下载后保存在本地的文件名
-r 递归下载目录及其子目录,生成目录结构
-rnd --no-directories,将下载所有的文件放到当前目录,不生成目录结构
-rnH 生成的目录结构去掉第一级
-r --cut-dirs=num 生成目录结构的级数,与-rnH连用会再少1级
-r --level=num 下载目录递归的深度,level设置为0或inf时,表示无限递归,默认的递归深度为5
- -limit-rate=num 配置下载的速度,单位是B/s, 可以自己设置单位–limit-rate=20k 当执行wget的时候,它默认会占用全部宽带下载
-o file 将wget的下载输出信息写入file文件中
-a file 将wget的下载输出信息追加到file文件中
-c 支持断点续传 下载大文件
- -no-rmove-listing 将目录清单保存为.listing隐藏文件
-q wget执行时,不输出任何提示信息
-t num 当网络不好等情况时,wget重试的次数,默认20次,num为0或inf时,表示重试无限次
systemctl stop firewalld ;关闭防火墙
setenforce 0
yum install vsftpd -y ;安装vsftpd
systemctl start vsftpd ;启动
[root@zycentos7 pub]# ps -ef|grep vsftpd
root 21637 1 0 18:30 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[root@zycentos7 ~]# cd /var/ftp/pub
[root@zycentos7 pub]# mkdir test
[root@zycentos7 pub]# cd test/
[root@zycentos7 test]# touch file{01..10}
[root@zycentos7 test]# dd if=/dev/zero of=test.tar.gz bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 25.9099 s, 40.5 MB/s
[root@zycentos7 test]# ls
file01 file03 file05 file07 file09 test.tar.gz
file02 file04 file06 file08 file10
wget -r
[root@zycentos7 tmp]# wget -r ftp://192.168.232.125/pub/apple/
[root@zycentos7 tmp]# tree 192.168.232.125/
192.168.232.125/
└── pub
└── apple
└── banana
├── file
└── test
5 directories, 0 files
wget -rnd
[root@zycentos7 tmp]# tree /var/ftp/pub/apple/
/var/ftp/pub/apple/
├── banana
│ ├── file
│ ├── file2
│ └── test
└── file1
[root@zycentos7 tmp]# wget -rnd ftp://192.168.232.125/pub/apple/
[root@zycentos7 tmp]# ls
file1 file2
wget -rnH
[root@zycentos7 tmp]# wget -rnH ftp://192.168.232.125/pub/apple/
[root@zycentos7 tmp]# tree pub/
pub/
└── apple
├── banana
│ ├── file
│ ├── file2
│ └── test
└── file1
查看下载进度 tail -f wget-log
练习1 使用wget下载单个文件
从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间
[root@zycentos7 tmp]# wget ftp://192.168.232.125/pub/test/file01
--2019-11-18 20:48:39-- ftp://192.168.232.125/pub/test/file01
=> ‘file01’
Connecting to 192.168.232.125:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD (1) /pub/test ... done.
==> SIZE file01 ... done.
==> PASV ... done. ==> RETR file01 ... done.
[ <=> ] 0 --.-K/s in 0s
2019-11-18 20:48:39 (0.00 B/s) - ‘file01’ saved [0]
[root@zycentos7 tmp]# ls
file01
练习2 使用wget -O下载并以不同的文件名保存
[root@zycentos7 tmp]# wget -O ybc ftp://192.168.232.125/pub/test/file01
[root@zycentos7 tmp]# ls
file01 ybc
练习3 使用wget --limit-rate限速下载
当执行wget的时候,它默认会占用全部宽带下载
[root@zycentos7 tmp]# wget --limit-rate=300K ftp://192.168.232.125/pub/test/file06
--2019-11-18 20:57:20-- ftp://192.168.232.125/pub/test/file06
=> ‘file06’
Connecting to 192.168.232.125:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD (1) /pub/test ... done.
==> SIZE file06 ... 20971520
==> PASV ... done. ==> RETR file06 ... done.
Length: 20971520 (20M) (unauthoritative)
100%[==========================================>] 20,971,520 311KB/s in 68s
2019-11-18 20:58:28 (301 KB/s) - ‘file06’ saved [20971520]
练习4 使用wget -c断点续传
使用wget -c重新启动下载中断的文件,对于下载大文件时突然由于网络等原因中断有所帮助
[root@zycentos7 tmp]# wget -c --limit-rate=1M ftp://192.168.232.125/pub/test/file06
--2019-11-18 21:04:25-- ftp://192.168.232.125/pub/test/file06
……
30% [===========> ] 6,291,456 1024KB/s eta 15s ^C
[root@zycentos7 tmp]# wget -c --limit-rate=1M ftp://192.168.232.125/pub/test/file06
--2019-11-18 21:04:42-- ftp://192.168.232.125/pub/test/file06
……
100%[++++++++++++===============================>] 20,971,520 1.00MB/s in 7.2s
2019-11-18 21:04:49 (1.00 MB/s) - ‘file06’ saved [20971520]
练习5 使用wget -b后台下载
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载
[root@zycentos7 tmp]# wget -b ftp://192.168.232.125/pub/test/file06
Continuing in background, pid 30213.
Output will be written to ‘wget-log’.
[root@zycentos7 tmp]# ls
file06 wget-log
练习6 使用wget --spider测试下载链接是否有效
【在以下几种情况下使用spider参数】
1.定时下载之前进行检查
2.间接检测网站是否可用
3.检查网站页面的死链接
[root@zycentos7 tmp]# wget --spider ftp://192.168.232.125/pub/test/file03
--2019-11-18 21:16:13-- ftp://192.168.232.125/pub/test/file03
=> ‘file03’
Connecting to 192.168.232.125:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD (1) /pub/test ... done.
==> SIZE file03 ... done.
==> PASV ... done. --2019-11-18 21:16:13-- ftp://192.168.232.125/pub/test/file03
=> ‘.listing’
==> CWD (1) /pub/test ... done.
==> PASV ... done. ==> LIST ... done.
[ <=> ] 830 --.-K/s in 0s
Removed ‘.listing’.
File ‘file03’ exists.
练习7 使用wget --tries增加重试次数
如果网络有问题下载一个大文件有可能失败,wget默认重试20次连接下载文件,可以使用–tries增加重试次数
[root@zycentos7 tmp]# wget --tries=40 ftp://192.168.232.125/pub/test/file03
练习8 使用wget -i下载多个文件
[root@zycentos7 tmp]# cat filelist.txt
ftp://192.168.232.125/pub/test/file01
……
ftp://192.168.232.125/pub/test/file10
[root@zycentos7 file]# wget -i filelist.txt
[root@zycentos7 file]# ls
file01 file03 file04 file05 file07 file08 file09 file10 filelist.txt
练习9 使用wget --mirror下载整个镜像网站
wget --mirror -p --convert-links -P ./LOCAL URL
参数 | 含义 |
---|---|
--miror | 镜像下载 |
-p | 下载所有为了html页面显示正常的文件 |
–convert-links | 下载后,转换成本地的链接 |
-P ./LOCAL | 保存所有文件和目录到本地指定目录 |
练习10 使用wget -o把下载信息存入日志文件
不希望下载信息直接显示在终端
[root@zycentos7 tmp]# wget -o download.log ftp://192.168.232.125/pub/test/file10
练习11 使用wget -Q限制总下载文件大小
递归下载时有效,超过下载配额也会下载完当前文件,下一个文件不再下载
[root@zycentos7 tmp]# wget -rQ 5M ftp://192.168.232.125/pub/apple/
……
FINISHED --2019-11-20 10:26:39--
Total wall clock time: 0.04s
Downloaded: 3 files, 6.0M in 0.02s (267 MB/s)
Download quota of 5.0M EXCEEDED!
练习12 使用wget FTP下载
wget ftp-url
使用wget用户名和密码认证的ftp下载
wget --ftp-user=USERNAME --ftp-password=PASSWORD url
参数 | 含义 |
---|---|
-r | 递归 |
-o | -o StrictHostKeyChecking=no 不提示,直接把对方的公钥保存到.ssh/known_hosts |
-q | 静默模式,不输出提示 |
-p | 保留原文件时间戳、权限信息 |
-l | 限速,单位k |
-P port | 指定端口号,默认22(SSH) |
-p参数:
[root@zycentos7 test]# ll file01
-rwxr-xr-x. 1 root root 0 Nov 21 20:05 file01
[root@zycentos7 test]# scp -p file01 192.168.232.111:/root
[root@localhost ~]# ll file01
-rwxr-xr-x. 1 root root 0 Nov 21 20:05 file01
远程下载:
[root@zycentos7 ~]# scp -r 192.168.232.111:/root/test /root
用指定用户下载:
[root@zycentos7 ~]# scp -r [email protected]:/root/test /root
iproute和net-tools都是Linux下网络管理工具包合集,iproute用户界面更直观,管理语法一致。
MTU num 设置网络最大传输单元
eth0 查看eth0网卡信息
eth0:str 单网卡绑定多IP
ifconfig eth0 up/down 开启/关闭网卡 有/etc/sysconfig/network-scripts/ifcfg-eth0配置文件
ifconfig设置的参数都是临时生效,重启网卡后即失效
yum install net-tools
练习1 查看所有的网络接口
ifconfig
练习2 列出ens33网卡的信息
ifconfig ens33
练习3 修改ens36网卡ip、gateway、netmask、broadcast
[root@zycentos7 ~]# ifconfig ens36 192.168.232.88 gateway 192.168.232.2 netmask 255.255.255.0 broadcast 92.168.232.255
练习4 设置mtu
[root@zycentos7 ~]# ifconfig ens36 mtu 800
练习5 绑定IP
[root@zycentos7 ~]# ifconfig ens33:10 192.168.232.201
[root@zycentos7 ~]# ifconfig ens33:10
ens33:10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.232.101 netmask 255.255.255.0 broadcast 192.168.232.255
ether 00:0c:29:5d:ae:cb txqueuelen 1000 (Ethernet)
[root@zycentos7 ~]# ip a|grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.232.125/24 brd 192.168.232.255 scope global ens33
inet 192.168.232.101/24 brd 192.168.232.255 scope global secondary ens33:10
练习6 关闭网卡
[root@zycentos7 ~]# ifconfig ens33:10 down
[root@zycentos7 ~]# ifconfig ens33:10 up ;绑定的IP ifconfig down后失效,需重新绑定
SIOCSIFFLAGS: Cannot assign requested address
只对在 /etc/sysconfig/network-script/
目录下有对应配置文件的网卡起作用
ifup eth0
ifdown eth0
练习1 查看本机路由表
[root@zycentos7 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.232.2 0.0.0.0 UG 0 0 0 ens33
表项 | 含义 |
---|---|
Destination | 目标网络或目标主机,0.0.0.0代表默认网关 |
Gateway | 网关地址,0.0.0.0表示当前记录对应的 Destination 跟本机在同一个网段 |
Genmask | Destination 字段的网络掩码,Destination 是主机时需要设为 255.255.255.255,是默认路由时会设置为 0.0.0.0 |
Flags | 标记 U:该路由是启动的 H:目标是一台主机而非网络 G:需要通过外部的主机来传递数据包 R:使用动态路由时,恢复路由标志 D:动态路由 |
Metric | 路由距离,到达指定网络所需的中转数 |
Ref | 路由项引用次数 |
Use | 此路由项被路由软件查找的次数。 |
Iface | 网卡名字 |
练习2 添加/删除默认路由
ifconfig绑定新ip地址后centos7会自动添加对应网关到route表,不需要手动添加网关即可ping通
route {
add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]
参数 | 含义 |
---|---|
-net | 后面接的路由为一个网域 |
-host | 连接到单部主机的路由 |
netmask | 设定 netmask 决定网域的大小 |
gw | gateway,后接IP数值 |
dev | 指定网卡 |
route add -net 10.0.0.0/24 dev ens33
route add -n 10.0.0.20 dev ens33
route add -n 10.0.0.20 gw 192.168.232.2 dev ens33
route del -net 10.0.0.0/24 dev ens33
练习3 添加/删除默认网关路由
route {
add | del } default gw {
IP-ADDRESS} {
INTERFACE-NAME}
IP-ADDRESS:用于指定路由器(网关)的IP地址。
INTERFACE-NAME:用于指定接口名称,如eth0。
route add/del default gw 192.168.1.1 eth0
练习4 添加/删除到指定网络的路由规则
route {
add | del } -net {
NETWORK-ADDRESS} netmask {
NETMASK} dev {
INTERFACE-NAME}
NETWORK-ADDRESS:用于指定网络地址。
NETMASK:用于指定子网掩码。
INTERFACE-NAME:用于指定接口名称,如eth0。
route add/del -net 192.168.1.0 netmask 255.255.255.0 dev eth0
练习5 添加/删除路由到指定网络为不可达
设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达
route {
add | del } -net {
NETWORK-ADDRESS} netmask {
NETMASK} reject
NETWORK-ADDRESS:用于指定网络地址。
NETMASK:用于指定子网掩码。
route add/del -net 10.0.0.0 netmask 255.0.0.0 reject
当TCP/IP需要向某个IP地址发起通信时,它会对路由表进行评估,以确定如何发送数据包。评估过程如下:
-s 显示出设备的统计数据
ip link set 改变设备的属性
addr/address 多个IP的实现
route 与路由有关的相关设置
练习1 显示本机所有的接口信息
ip link show
ip link show ens33
ip -s link show ens33
练习2 网卡的启动与关闭
ip link set ens33:1 up/down
练习3 ip命令设置mtu
ip link set ens33 mtu 1000
练习4 修改网卡名与mac
先关闭网卡再设置
ip link set ens33 name aaa
ip link set ens33 address aa:aa:aa:aa:aa:aa
练习5 添加/删除网络接口
ip addr add/del 192.168.42.200/24 dev eth0 label eth0:0
练习6 显示当前的路由信息
ip route show
练习7 添加路由,主要是本机直接可联通的网络
ip addr add 10.0.0.0/24 dev eth0 label eth0:0
练习8 添加静态路由
ip route add 10.0.0.0/24 dev eth0
练习8 增加可以通往外部的路由
ip route add 192.168.192.0/24 via 192.168.42.181 dev eth0
练习9 增加静态路由
ip route add default via 192.168.42.2 dev eth0
练习10 删除路由
ip route del 192.168.192.0/24
ip route del default
/etc/sysconfig/network-scripts/ifcfg-ens33
【Centos6.8】/etc/sysconfig/hostname
/etc/hostname
【Centos7.6】永久生效,写入配置文件 cat /etc/hostname
hostnamectl set-hostname zhao
静态主机名
hostnamectl set-hostname --static zhao
临时设置
hostname zhao
nmap基本功能
Nmap [ 扫描类型 ... ] [ 通用选项 ] {
扫描目标说明 }
-sT TCP connect()扫描 容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息 全开扫描
-sS TCP同步扫描(TCP SYN),又称半开扫描(half-open),很少有系统能够把这记入系统日志
-sP ping扫描,当主机阻塞ICMP echo请求包时ping扫描是无效的,默认进行,只有目标主机处于运行状态,才会进行后续的扫描
-sU UDP服务
-sA ACK扫描,用来穿过防火墙
-b FTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描
-s 显示出设备的统计数据
-n 不进行反向DNS解析 节省时间
-v 冗余模式,给出扫描过程中的详细信息
-sP ping扫描,用ping方式检查网络上哪些主机正在运行
-p 端口 指定要进行扫描的端口号的范围
-O 获得远程主机的操作系统类型
-A 全面的系统探测
-I 反向扫描
-iL filename 从filename文件中读取扫描的目标
-iR 随机挑选主机进行扫描
-p 端口 选择要进行扫描的端口号的范围,如:-p 20-30,139,60000
-exclude 排除指定主机
-excludefile 排除指定文件中的主机
练习1 扫描指定IP开放端口
[root@zycentos7 ~]# nmap -v 192.168.232.125
练习2 检查某网段存活的主机(ping扫苗)
[root@zycentos7 tmp]# nmap -n -sP 192.168.232.0/24
练习3 扫描指定IP的指定端口
[root@zycentos7 ~]# nmap -p 80 192.168.232.125
练习4 探测主机操作系统
[root@zycentos7 ~]# nmap -O 192.168.232.125
练习5 全面的系统探测
[root@zycentos7 ~]# nmap -A 192.168.232.125
练习6 穿透防火墙进行扫描
[root@zycentos7 ~]# nmap -sA 192.168.232.125
练习7 隐蔽扫描(半开扫描)
[root@zycentos7 ~]# nmap -sS 192.168.232.125
练习8 UDP扫描
[root@zycentos7 ~]# nmap -sU 192.168.232.125
练习9 Ident扫描(Ident Scanning)
寻找对于某些进程存在漏洞的电脑,比如,一个以root运行的Linux WEB服务器,如果目标机运行了identd,一个攻击者使用Nmap通过"-I"选项的TCP连接,就可以发现哪个用户拥有http守护进程
[root@zycentos7 ~]# nmap -sT -p 80 -I -O www.baidu.com
采用命令行方式对接口的数据包进行筛选抓取,默认抓取第一个网络接口,进程终止停止抓包
选项 | 含义 |
---|---|
-c # | 指定要抓取的包数量 |
-D | 列出可用于抓包的接口 |
-i | interface,指定要监听的接口 |
-n | 不做主机名解析 |
-nn | 不做主机名解析,把端口显示为数值(否则显示端口服务名) |
-x/-xx | 以16进制和ASCII两种方式同时输出包的头部数据,-xx更详细 |
-v/-vv/-vvv | 分析打印时产生详细的输出,v越多越详细 |
-e | 输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC |
-X | 把协议头和包内容原文显示 |
-w | 将抓包数据输出到文件中 |
-r | 从给定的数据包文件中读取进行分析 |
tcpdump -i
找到第一个符合条件的接口,搜寻结束,不指定该选项则从接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口),any
关键字表示所有网络接口
tcpdump -i lo
抓取loopback接口
[root@zycentos7 ~]# tcpdump -i ens33 -e -nn -X -c 1 "port 22"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:23:03.017797 00:0c:29:5d:ae:cb > 00:50:56:c0:00:08, ethertype IPv4 (0x0800), length 90: 192.168.232.125.22 > 192.168.232.1.24612: Flags [P.], seq 2055749647:2055749683, ack 2526480855, win 320, length 36
0x0000: 4510 004c afd1 4000 4006 38fa c0a8 e87d E..L..@[email protected]....}
0x0010: c0a8 e801 0016 6024 7a88 400f 9697 09d7 ......`$z.@.....
0x0020: 5018 0140 520f 0000 3c8c b800 d611 2c56 P..@R...<.....,V
0x0030: 18b5 bf21 c061 224f 1b20 7442 f7a3 3417 ...!.a"O..tB..4.
0x0040: cdea 0820 010b f23f e5b6 1244 .......?...D
1 packet captured
2 packets received by filter
0 packets dropped by kernel
表项 | 含义 |
---|---|
seq 2055749647:2055749683 | 序号 |
ack 2526480855 | 确认号 |
win 320 | 窗口大小 |
length 36 | 长度 |
Flags[ .]选项 | 含义 |
---|---|
P | PUSH,传送数据标志 |
S | SYN,发起连接标志 |
F | FIN,关闭连接标志 |
RST | RESET,异常关闭连接 |
. | 表示确认包ack |
tcpdump [options] [not] proto dir type
表项 | 可选 |
---|---|
proto | ether,ip,ip6,arp,rarp,tcp,udp 没有指定,监听所有 |
dir | src , dst ,dst or src, dst and src(默认) |
type | host(默认),net,port |
表达式单元之间可以使用操作符 and
&&
or
||
not
!
进行连接
练习1 抓取所有经过网卡1,目的IP为192.168.232.125的网络数据
tcpdump -i ens33 host 192.168.232.125
练习2 抓取所有经过网卡1,目的端口为22的网络数据
tcpdump -i ens33 dst port 22
练习3 抓取所有经过网卡1,协议类型为UDP的网络数据
tcpdump -i ens33 udp
练习4 抓取所有经过22端口的UDP网络数据
tcpdump udp port 22
练习5 抓取所有经过网卡1的SYN类型数据包
tcpdump -i ens33 'tcp[tcpflags] = tcp=syn'
练习6 抓取经过网卡1的所有DNS数据包(默认端口)
tcpdump -i ens33 udp dst portdst port 53
练习7 抓取所有经过网卡1,目的网络是192.168.232.0,但目的主机不是192.168.232.125的TCP数据
tcpdump -i ens33 '((tcp) and ((dst net 192.168.232.0) and (not dst host 192.168.232.125)))'
练习8 抓取所有经过网卡1,目的主机为192.168.232.125的端口22的网络数据并存储
tcpdump -i ens33 dst host 192.168.232.125 and port 22 -w /tmp/tcpdump.cap
练习9 抓取本地环路数据包
tcpdump -i lo udp 抓取UDP数据
tcpdump -i lo udp port 22 抓取端口22的UDP数据
tcpdump -i lo port 22 抓取端口22的数据
[root@zycentos7 ~]# tty
/dev/pts/1
[root@zycentos7 ~]# tcpdump -i ens33 -e -nn -x host www.baidu.com
[root@zycentos7 ~]# tty
/dev/pts/0
[root@zycentos7 ~]# curl www.baidu.com
行为 | 源地址--->目的地址 | Flags | seq | ack | win | options | length |
---|---|---|---|---|---|---|---|
第一次握手 | 192.168.232.125.60672 > 39.156.66.18.80 | Flags [S] | seq 1667391184 | - | win 29200 | options [mss 1460,sackOK,TS val 23603577 ecr 0,nop,wscale 7] | length 0 |
第二次握手 | 39.156.66.18.80 > 192.168.232.125.60672 | Flags [S.] | seq 153638172 | ack 1667391185 | win 64240 | options [mss 1460] | length 0 |
第三次握手 | 192.168.232.125.60672 > 39.156.66.18.80 | Flags [.] | - | ack 1 | win 29200 | - | length 0 |
第一次数据传输 | 192.168.232.125.60672 > 39.156.66.18.80 | Flags [P.] | seq 1:78 | ack 1 | win 29200 | - | length 77 |
最后一次数据传输 | 192.168.232.125.60672 > 39.156.66.18.80 | Flags [P.] | - | ack 2782 | win 35040 | - | length 0 |
第一次挥手 | 192.168.232.125.60672 > 39.156.66.18.80 | Flags [F.] | seq 78 | ack 2782 | win 35040 | - | length 0 |
第二次挥手 | 139.156.66.18.80 > 192.168.232.125.60672 | Flags [.] | seq 78 | ack 79 | win 64239 | - | length 0 |
第三次挥手 | 139.156.66.18.80 > 192.168.232.125.60672 | Flags [FP.] | seq 2782 | ack 79 | win 64239 | - | length 0 |
第四次挥手 | 192.168.232.125.60672 > 39.156.66.18.80 | Flags [.] | - | ack 2783 | 35040 | - | length 0 |