网络排查
抓包
技术
- tcpdump:依赖一个底层能力:BPF
- tcptrace:命令行分析抓包文件工具
- wireshark
- BPF:BSD Packet Filter,基于寄存器的虚拟机抓包方式
- libpcap:BPF 的一层 API 封装
- WinPcap:libpcap 的 Windows 版本
- eBPF:更加通用的内核接口,不仅能支持网络抓包,还能支持网络以外的内核观测点的信息收集等工作
文件类型
- pcap:libpcap 的格式,也是 tcpdump 和 Wireshark 等工具默认支持的文件格式
- cap:含有一些 libpcap 标准之外的数据格式
- pcapng:单个抓包文件就可以包含多个网络接口上抓取到的报文
网络诊断
- 探测类工具:ping、traceroute、mtr、nc、telnet 等,它们都是从一端发起,对另外一端发送探测报文,然后观测报文的丢失、乱序、时延等情况,nc 和 telnet,则主要是测试传输层连通性的
- 统计类工具:netstat 主要是通过 /proc 文件系统收集信息的,而 ss 主要通过 netlink 内核接口获取数据
IP透传
- 应用层:HTTP协议的X-Forwarded-For 头部
- 传输层:TCP首部Options字段 使用最长为 40 字节的位置来存储真实IP,需要通信双方都进行改造
- 网络层:可以直接通过修改数据包的源IP字段来进行透传,这种方式前端LB就无法收到回包
- 协议改造:客户端在 TCP 握手完成之后,在应用层数据发送之前,插入一个包,这个包的 payload 就是真实源 IP