[svc]容器网络学习索引及网络监控
整理的可能有些误失,抽时间在细细的分类完善下. 发现这篇对于网络从低到高层协议整理的还不错
每层都有一些有意思的话题
一些协议有一些设计上的弱点, 所以产生了种种的网络层安全问题
一般我们学一些
- 1,以太网2的数据格式
- 2,ip 数据格式
- 3,tcp/udp数据格式 .玩明白这些后,会晚一些有用
网络里有意思的大概有这些.
二层的广播,arp(代理arp,免费arp)
ip层的ping的ttl(多窗口ping回包问题(win给所有包统一编号/unix每个窗口进程号)), mtu分片
基于ip的icmp(1,端口不可达 2,目标不可达u,回包可告知到哪里unreachable,可关. 默认路由+ping不存在的ip) RTT(对端收到后将时间戳原本拷贝到数据包回传) ping的频率也可以被限制
tcp层的端口号
udp的traceroute程序(ttl递增 不是我,回icmp超时, 是我回icmp端口不可达): 参考: http://www.freebuf.com/articles/network/118221.html
dns/tftp/语音视频
必有有趣的有代理(不算arp代理了),如ccproxy或一些ss等原理
可能会感兴趣一些https vpn 内网穿透啊 这类
[tcp的13]
TCP半连接与SYN攻击
TCP连接的“三次握手”与“四次挥手”
可以发现一些协议的弱点.这个工具钻了一些协议的空子.
yersinia
监控web连接数(tcp的11种状态)
跟着zabbix使用脚本监控
(包含里面的参考链接)溜一遍,zabbix的本末就在脑海里有个影子了.
高性能web要求监控:
-
系统监控: 一般系统安装完毕,需要加入zabbix,
-
网络监控: smokping/站长工具 监控宝/听云/安全宝/流量宝/易日志
-
应用监控: 需要监控他的端口,及系统总的tcp的的11种状态, 每个app的tcp连接状态.
原来zabbix监控进程与端口是如此的简单!
Zabbix监控(十二):自动监控Linux端口
Zabbix监控端口服务TCP连接状态
网络基础
文字标题 | 链接 |
---|---|
二三层数据格式&&三层数据如何匹配路由 | http://www.cnblogs.com/iiiiher/p/8081252.html |
arp协议的细枝末节 | http://www.cnblogs.com/iiiiher/p/8085415.html |
dhcp细枝末节 | http://www.cnblogs.com/iiiiher/p/8080314.html |
gns3模拟器及探讨几个bgp问题 | http://www.cnblogs.com/iiiiher/p/8075349.html |
docker&k8s网络原理
文字标题 | 链接 |
---|---|
docker4种网络最佳实战 | http://www.cnblogs.com/iiiiher/p/8047114.html |
k8s pod的3种网络模式最佳实战 | http://www.cnblogs.com/iiiiher/p/8051947.html |
二层网络
文字标题 | 链接 |
---|---|
linux的ip命令操作接口和路由表 | http://www.cnblogs.com/iiiiher/p/8056930.html |
通过bridge连接单机的多个网络namespace | http://www.cnblogs.com/iiiiher/p/8057922.html |
linux下网桥-docker网桥 | http://www.cnblogs.com/iiiiher/p/8052974.html |
macvlan最佳实战: | http://www.cnblogs.com/iiiiher/p/8059032.html |
macvlan实现双vlan互通 | http://www.cnblogs.com/iiiiher/p/8067226.html |
三层网络
文字标题 | 链接 |
---|---|
linux iptables实战 | http://www.cnblogs.com/iiiiher/p/8066036.html |
docker网络-直接路由模式 | http://www.cnblogs.com/iiiiher/p/8065415.html |
linux上vxlan实战 | http://www.cnblogs.com/iiiiher/p/8082779.html |
docker自带的overlay网络实战 | http://www.cnblogs.com/iiiiher/p/8120300.html |
使用quaaga实现(rip ospf)实现主机间容器互通 | http://www.cnblogs.com/iiiiher/p/8076257.html |
docker calico网络&docker cluster-store | http://www.cnblogs.com/iiiiher/p/8110617.html |
附: edis-memcached-nginx-tcp11监控脚本
具体集成到zabbix,参考
$ cat zabbix_linux_plugins.sh
#!/bin/bash
############################################################
# $Name: zabbix_linux_plugins.sh
# $Version: v1.2
# $Function: zabbix plugins
# $Author: Maotai
# $organization: http://www.cnblogs.com/iiiiher/
# $Create Date: 2018-03-03
# $Description: Monitor Linux Service Status
############################################################
tcp_status_fun(){
TCP_STAT=$1
#netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,state[key]}' > /tmp/netstat.tmp
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/netstat.tmp
TCP_STAT_VALUE=$(grep "$TCP_STAT" /tmp/netstat.tmp | cut -d ' ' -f2)
if [ -z $TCP_STAT_VALUE ];then
TCP_STAT_VALUE=0
fi
echo $TCP_STAT_VALUE
}
nginx_status_fun(){
NGINX_PORT=$1
NGINX_COMMAND=$2
nginx_active(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
nginx_reading(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
nginx_writing(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
nginx_waiting(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
nginx_accepts(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
nginx_handled(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
nginx_requests(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
esac
}
memcached_status_fun(){
M_PORT=$1
M_COMMAND=$2
echo -e "stats\nquit" | nc 127.0.0.1 "$M_PORT" | grep "STAT $M_COMMAND " | awk '{print $3}'
}
redis_status_fun(){
R_PORT=$1
R_COMMAND=$2
(echo -en "INFO \r\n";sleep 1;) | nc 127.0.0.1 "$R_PORT" > /tmp/redis_"$R_PORT".tmp
REDIS_STAT_VALUE=$(grep ""$R_COMMAND":" /tmp/redis_"$R_PORT".tmp | cut -d ':' -f2)
echo $REDIS_STAT_VALUE
}
main(){
case $1 in
tcp_status)
tcp_status_fun $2;
;;
nginx_status)
nginx_status_fun $2 $3;
;;
memcached_status)
memcached_status_fun $2 $3;
;;
redis_status)
redis_status_fun $2 $3;
;;
*)
echo $"Usage: $0 {tcp_status key|memcached_status key|redis_status key|nginx_status key}"
esac
}
main $1 $2 $3