Tracing iptables on CentOS
前提条件
iptables
已开启并激活
步骤 1: 标记要跟踪的数据包
DNS端口示例
1 | PORT=53 |
iptables
已开启并激活1 | PORT=53 |
BPF 的全称是 Berkeley Packet Filter, 即伯克利报文过滤器,它的设计思想来源于 1992 年的一篇论文“The BSD packet filter: A New architecture for user-level packet capture” (《BSD数据包过滤器:一种用于用户级数据包捕获的新体系结构》)。最初,BPF是在 BSD 内核实现的, 后来,由于其出色的设计思想,其他操作系统也将其引入, 包括 Linux。tcpdump
使用的libpcap是基于BPF的,在使用tcpdump或者libpcap时传入的“host 192.168.1.1”、“tcp and port 80”等是过滤表达式。
1 | # man iptables |
本文将基于cURL命令简单演示如何以REST的方式使用Kubernetes API,方便您使用开发语言原生的HTTPS方式操作Kubernetes集群。演示包括创建和删除Pod,创建和修改Deployment。
1 | cat ./kubeconfig |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > ./client-cert.pem |
显示所有活动的网络连接
1 | netstat -na |
查看同时连接到哪个服务器 IP 比较多,cc 攻击用。使用双网卡或多网卡可用
1 | netstat -an|awk '{print $4}'|sort|uniq -c|sort -nr|head |
本次演講主要是探討封包基於 Docker Container 的預設環境下,不同走向實際上對應到 iptables/ebtables 的實際流向。
演講中主要針對三個方向進行探討,分別是
每個方向都包含了雙向來回,譬如Host to Container
其實也包含了 Container to Host
Container to WAN
也包含了 WAN to Containe
主要差別在於誰發起了連線,這中間差異不大 (WAN to Container
可能會有 DNAT)
最近线上的一个项目遇到了内存泄露的问题,查了heap之后,发现 http包的 dialConn函数竟然占了内存使用的大头,这个有点懵逼了,后面在网上查询资料的时候无意间发现一句话
10次内存泄露,有9次是goroutine泄露。
结果发现,正是我认为的不可能的goroutine泄露导致了这次的内存泄露,而goroutine泄露的原因就是 没有调用 response.Body.Close()
部署规划
1 | 10.211.55.18 k8s-node1 |
备注:第1步~第8步,所有的节点都要操作,第9、10步Master节点操作,第11步Node节点操作。 如果第9、10、11步操作失败,可以通过 kubeadm reset 命令来清理环境重新安装。