防火墙 地址转换 "TCP/IP详解" 第七章 读书笔记
防火墙
防火墙分为包过滤防火墙和代理防火墙.
包过滤防火墙
将企业网络分为内部区域和DMZ区域.
DMZ区域是企业向外部提供服务的区域, 因此防火墙可以允许特定的向DMZ流入的流量. 作为对比的是, 防火墙不允许任何外部主动流向内部的流量.
代理防火墙
- 外出连接在防火墙处终止
- 进入连接只是运行到代理处
比包过滤防火墙安全, 但是缺乏灵活性.
代理防火墙最常见的是HTTP代理. 对于用户来说, 它就是一个Web服务器; 对于真正的Web来说, 它是一个用户.
另一个是SOCKS防火墙, 一旦配置完成, 客户端可以使用SOCKS代理 来进行网络连接
NAT
在私有范围内也可以使用全局地址空间, 唯一的缺点是不能再访问这些全局的地址空间
NAT的终止
对于一个TCP连接来说, 收到了FIN意味着NAT表可以被删除, 或者RST也可以代表删除.
对于传出的SYN包, 会设立一个激活计时器, 如果收到了ACK, 那么就设立一个会话计时器, 这个计时器的超时时间更长
NAT & TCP
一种有趣的TCP的NAT穿越方式是simultaneous open(同时打开), 双方同时发送SYN包, 这种方式连接的速度比常规的三次握手还快
IP分片并不能被NAT正确处理(没有端口号信息)
NAT不只是处理IP和端口信息, 同时可能还要处理有效荷载, 比如FTP或者隧道数据(PPTP), 甚至重新计算校验和, 大大增加了NAT的工作量, 称为"NAT编辑器"
NAT 的发夹行为
考虑这样一个拓扑: 两个主机在同一个NAT后面, 但是主机A想通过主机B的公网地址访问主机B, 因此, 在建立连接的时候, NAT发现源地址也是自己, 目的地址也是自己, 那么这个时候要不要修改源地址? 如果修改了, 就称为NAT的发夹行为. 发夹行为是被推荐启用的
STUN和TURN
一句话: STUN打洞, TURN辅助传输流量.
TURN服务器一般需要登录凭证或者注册用户, 以防止功能被滥用
iptables
iptables由过滤表格组成, 每一个表格有链.
三个预定义的表格是filter(处理基本包过滤), nat, mangle
链有进入, 转发, 和出口, 链上动作为接受, 丢弃, QUEUE(交给用户程序处理), RETURN(交给另一个链处理)
UPNP
当设备通过DHCP获取到IP地址后, 使用SSDP向控制点宣布设备的存在. SSDP使用UDP来实现一种简单的HTTP, 目的地址使用239.255.255.250, 端口1900.
传输使用XML格式, 目的是学习NAT映射和配置端口转发能力.
IPv4和IPv6的隧道
方法包括Teredo, DS-Lite和 6rd
DS-Lite
核心思想, 只在边缘使用了Ipv4的NAT, 最大限度的减少IPv4地址的使用
6rd
将IPv6映射到IPv4, 使用一个特定的算法, 无状态
地址转换有一个很有趣的注意事项: 校验和中立, 使用前缀64:ff9b/96, 这些值的四位分的十六进制和是ffff, 补码正好是0, 完全不改变TCP或者UDP的校验和