SweetEriri

运维速查

运维速查

根据进程名字查询pid并通过top显示
$ sudo pidof bioset | tr " " ',' | xargs top -bp

-b : Batch mode operation
   Starts  top  in  <A1><AF>Batch mode<A1><AF>, which could be useful for sending output from top to other programs or to a file.  In this mode, top will not accept input and runs until the iterations limit you<A1><AF>ve set with the <A1><AF>-n<A1><AF> command-line option or until killed.
配置主机名
$ sudo nmcli general hostname sweeteriri
$ sudo hostnamectl set-hostname sweeteriri
配置 IP 地址
IPADDR=$IP
DNS=$DNS
GATEWAY=$GATEWAY
NETMASK=255.255.255.0
ZONE=public
ONBOOT=yes
$ sudo systemctl restart network
查看当前最大并发数的配置
$ ulimit -n
配置主机名
$ sudo nmcli general hostname hollyshit
$ sudo hostnamectl set-hostname hollyshit
修改 /etc/security/limits.conf
* soft nofile 10240
* hard nofile 10240
neo hard nofile 10240

第一列可以指定用户或组,也可使用 *% 通配符。指定组时,组名前面加 @,如 @admin。修改后需 重启 系统才能生效。

* 代表作用于所有用户,第三行的 neo 是指定用户名。

hard 限定的值只能由管理员配置,对于用户来说,该值是上限,不可逾越。

soft 所限定的值用户自己可以用 ulimit -S -n 1024 调整,但不可超过 hard 值。

nofile :Number of Open file descriptors,即文件描述符总数的上限。

添加主机路由
$ route add -host $IP dev etho
添加默认网关
$ route add default gw 192.168.197.1
添加网络路由
$ route add -net 192.168.1.0 netmask 255.255.255.0 dev eth1
$ route add -net 192.168.1.0 netmask 255.255.255.0 gw $IP
SS与NETSTATS
$ ss -a 查看机器的socket连接数
$ ss -l 查看机器的端口情况
$ ss -s 查看机器的网络连接数
$ netstat -n | awk '/^tcp/{a[$NF]++} END{for(i in a){print i,a[i]}}' #查看 http 并发请求数以及 TCP 连接状态

如果只想查看TCP sockets,那么使用-ta选项; 如果只想查看UDP sockets,那么使用-ua选项; 如果只想查看RAW sockets,那么使用-wa选项; 如果只想查看UNIX sockets,那么使用-xa选项。

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

在Linux下,如果连接数比较大,可以使用效率更高的ss来替代netstat。 查看tomcat的并发数:netstat` `-an|grep10050|`awk `'{count[$6]++} END{for (i in count) print(i,count[i])}'**

查看哪个地址对 80 端口的访问次数最多
tcpdump 嗅探 80 端口的访问,看谁最高。
$ sudo tcpdump -i venet0 -tnn dst port 80 -c 1000 \
| awk '/^IP/{print $2}' \
| awk -F. '{print $1 "." $2 "." $3 "." $4}' \
| uniq -c \
| sort -rn
使用 tcpdump 监听 “目标主机为 192.168.1.1,目标端口为 tcp/80” 的数据,同时将输出结果保存到 tcpdump.log
$ sudo tcpdump -i ens33 'host 192.168.1.1 and port 80' > tcpdump.log
用 tcpdump 嗅探对本地 80 端口的访问流量,列出访问量最大的 IP 地址
$ sudo tcpdump -i ens33 -tnn dst port 80 -c 1000 \
| awk '/^IP/{print $2}' \
| awk -F. '{print $1 "." $2 "." $3 "." $4}' \
| uniq -c | sort -rn

-i :指定监听的网卡

-t :不显示每行的时间戳

-n :不转换地址,如把 IP 地址转换为主机名,把端口号转换为服务名

-nn :不转换协议和端口号,不把地址转换为主机名

-c :count,抓包数量

用脚本 ping 多个 IP 地址
连续 IP 地址
#!/bin/bash
for ip in `seq 1 255`
do
  ping -c 1 $ip > /dev/null 2>&1
  if [ $? -eq 0]; then
    echo $ip is ONLINE
  else
    echo $ip is OFFLINE
  fi
done
wait
不连续 IP 地址

将IP地址写入list.txt

#!/bin/bash
cat /path/to/list.txt | while read output
do
  ping -c 1 "$output" > /dev/null
  if [ $? -eq 0 ]; then
    echo "node $output is up"
  else
    echo "node $output is down"
  fi
done
三次握手与四次挥手

所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。

  • 第一次握手(SYN=1, seq=x):

客户端发送一个 TCP 的 SYN 标志位置1的包,指明客户端打算连接的服务器的端口,以及初始序号 X,保存在包头的序列号(Sequence Number)字段里。

发送完毕后,客户端进入 SYN_SEND 状态。

  • 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):

服务器发回确认包(ACK)应答。即 SYN 标志位和 ACK 标志位均为1。服务器端选择自己 ISN 序列号,放到 Seq 域里,同时将确认序号(Acknowledgement Number)设置为客户的 ISN 加1,即X+1。 发送完毕后,服务器端进入 SYN_RCVD 状态。

  • 第三次握手(ACK=1,ACKnum=y+1)

客户端再次发送确认包(ACK),SYN 标志位为0,ACK 标志位为1,并且把服务器发来 ACK 的序号字段+1,放在确定字段中发送给对方,并且在数据段放写ISN的+1

发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态,TCP 握手结束。

三次握手的过程的示意图如下:

three-way-handshake

TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),也叫做改进的三次握手。客户端或服务器均可主动发起挥手动作,在 socket 编程中,任何一方执行 close() 操作即可产生挥手操作。

  • 第一次挥手(FIN=1,seq=x)

假设客户端想要关闭连接,客户端发送一个 FIN 标志位置为1的包,表示自己已经没有数据可以发送了,但是仍然可以接受数据。

发送完毕后,客户端进入 FIN_WAIT_1 状态。

  • 第二次挥手(ACK=1,ACKnum=x+1)

服务器端确认客户端的 FIN 包,发送一个确认包,表明自己接受到了客户端关闭连接的请求,但还没有准备好关闭连接。

发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态,等待服务器端关闭连接。

  • 第三次挥手(FIN=1,seq=y)

服务器端准备好关闭连接时,向客户端发送结束连接请求,FIN 置为1。

发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个ACK。

  • 第四次挥手(ACK=1,ACKnum=y+1)

客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态,等待可能出现的要求重传的 ACK 包。

服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。

客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。

四次挥手的示意图如下:

img


发表评论

    暂无评论