本文记录了一些工作中常见的网络问题以及网络工具使用方法,包括:NAT是什么、tcpdump用法、connect超时等。 在 linux 上我们可以使用 tcpdump 来分析流量包,wireshark 分析包,strace 查看进程调用。 fiddler 用于分析 http 协议,wireshark 用于分析 tcp/udp 的网络封包 https 包抓取 网络流量的这些工具为了能够解析 https 的包,通常都是自己签发证书,然后让系统信任自己证书,以作为中间人去转发、解析 https 流量。 如果仅仅只是为了代理 https 流量而不解析,可以使用 http 的隧道协议,使用 CONNECT method 去连接代理服务器,然后代理服务自动转发握手请求,相当于客户端直接与目标服务连接。 NAT(Net Address Translation) NAT 常用于虚拟化技术中,又分为三类: 静态NAT:此类NAT在本地和全局地址之间做一到一的永久映射。须注意静态NAT要求用户对每一台主机都有一个真实的Internet IP地址。 动态NAT:允许用户将一个未登记的IP地址映射到一个登记的IP地址池中的一个。采用动态分配的方法将外部合法地址映射到内部网络,无需像静态NAT那样,通过对路由器进行静态配置来将内部地址映射到外部地址,但是必须有足够的真正的IP地址来进行收发包。 地址端口NAT(NAPT):最为流行的NAT配置类型。通过多个源端口,将多个未登记的IP地址映射到一个合法IP地址(多到一)。使用PAT能够使上千个用户仅使用一个全局IP地址连接到Internet。NAPT 又根据转换源头或者目标不同又分为 SNAT 和 DNAT。实现 NAPT 的常见手段是设备维护一张转换表,里面存储了由 源地址:端口 到 转换后地址:端口 的映射关系 Tips SNAT, DNAT, MASQUERADE都是NAT, MASQUERADE是SNAT的一个特例, SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,而 MASQUERADE 则是用指定用网卡 IP 来替换。最开始了解 SNAT 和 DNAT 时觉得两者就是相互的,一旦产生了一个 SNAT,回包时就必须有 DNAT 的操作,但是事实上区分两者时是以发送数据包的动作来区分,而不是接收。因为路由是按照目的地址来选择的,因此DNAT是在PREROUTING链 上来进行,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的