抓住 1. 是否能内访问外网 2.在第几层操作,第七层说明端口号已经确定 3. 是否变更端口
有了端口映射后, 机器分了多层, 世界上的机器数量= ip数量 * 每台公网 ip 机器端口号数量.
要理解这些.就要理解
1.arp 攻击
2.arp 广播查询
3.arp 广播推送
ip 层和链路层的转换
比较好的文章.
通过 子网掩码的作用来说明 ping 内网,和 ping 外网的过程中 mac 地址的拆包,重新组装.
1.子网掩码的作用 子网掩码的第二个作用是计算网络号.是否一个内网.
看中间者对1.发送的数据,2.返回的数据解拆到哪一层.(ip 有没有动过,端口有没有动过.)
转发的数据即使自己并不是这个 ip,并不是这个端口都没有关系.
有换必有拆原则.
1.lvs 接受到消息.拆包后发现 mac 地址是自己. ip 也是自己. 但自己的作用是网络路由
故重新组装上 mac 地址
隧道模式除外. 多装了 ip 包头.
nat 只改了 to ip. realserver 配了 lvs 为网关. 不然不知道该怎么返回回去.
fullnat 改了 from 和 to ip
2. 路由器的作用也是.可以接受 mac 地址不是自己的包. 可以接受外网 ip 的包. 负责转发,不改变任何信息+并且保持回路畅通.
3. 交换机的作用也是.可以接受 mac 地址不是自己的包.
代理的作用(网络层):
1.1 修改了 ip 包的 from. 然后发出去.(端口号不变,也不去拆解关心.)
1.2 记录发送 ip. 和目标 ip 的关系.(因为未拆解发送包,所以不知道端口号)
1.3 接受回数据后.无法改成对应的客户端 ip
故算法要改1.2步,记录自己的 ip 和发送端口. 那说明已经将包的 ip 和端口都改了. 也说明将接受包的已经拆了.
说明是在 tcp 层.
反向代理的作用(tcp 层和 http 层复杂均衡):
修改了 ip 的 from 和 to 还有端口号. server 上看到的连接都是来自 ngnix 的.
需要业务来完成设定 X-Forwarded-For 参数来获取客户端真实的ip地址.默认不安装.
反向代理和 lvs fullnat 相同点和不同点: 都能负载均衡,同时修改 ip,都是用非请求 ip 进行数据组装+无法获取到源 ip,也有会话保持的问题, 只不过 ngnix 反向代理能对 uid,cookie 等进行会话保持,缺点是端口是写死的. 但是 lvs 不限定端口,也不知道端口的概念,ip 层,只能通过 ip 等进行负载会话保持,lvs 里称为persistence_timeout 持久连接. 默认是180毫秒.
HAproxy tcp 层():
交换机端口映射: 外网 ip:端口 映射到内网 ip:端口上. 内网能打通到外网. 反向代理就不行.
代理: 和交换机端口映射类似.
lvs: full nat模式和反向代理(ngnix)更相似点, 也只能外网到内网. 只是在ip层 负载均衡,不改端口号. 看不到源 ip
注意