思考问题角度:
0. 前置数据和条件
1. 正常流程
2. 一个人多次,多个人多次
3.每个对象身上的状态
对于 lvs :
1.正常流程:
client: ip地址. 每次传输时 mac 地址获取机制? .传输出去的 ip 和 mac
路由器: 接受到的 ip,mac 地址. 发出去的 ip,mac 地址. 如何获取的?
lvs: 同上.
realserver: 配置.
未完.
前置理解: 内网的数据传输和 ip 包,链路层的包.
包的层级封装关系拉平后变成"数组数据的前后关系.
二、子网掩码的第二个作用是计算网络号
例1:A电脑IP地址为192.168.1.1,子网掩码为255.255.255.0;B电脑IP地址为192.168.1.2,子网掩码为255.255.225.0。大家都知道这二台电脑在同一网段,相互能PING通。
例2:A电脑的IP地址为192.168.1.1,子网掩码为255.255.255.0;B电脑的IP地址为192.168.2.1,子网掩码为255.255.0.0。大家分析一下二台电脑能相互PING通吗?
分析:这个问题需要大家理解子网掩码在网络通讯时的作用。不能简单的认为A电脑处在192.168.1.0网段,B电脑处在192.168.0.0网段,所以不能PING通。正确的分析应该如下:
⑴ 每台电脑事先会把自己IP和自己的子网掩码进行“与”操作,得到自己的网段号,如A电脑处在192.168.1.0网段,B电脑处在192.168.0.0网段。
⑵ B电脑向A电脑发数据包时,会把A电脑的IP与B电脑的子网掩码进行“与”操作,得到网络号是192.168.0.0,B电脑会认为A电脑与自己在同一网段,所以数据包会顺利发出。
⑶ A电脑由于与B电脑在同一网段,肯定能收到B电脑发出的数据包,由于PING操作要求A电脑回应一个响应包。这样A电脑会把B电脑的IP与A电脑的子网掩码进行“与”操作,得到网络号192.168.2.0,A电脑发现网络号与自己所处的192.168.1.0不在同一网段,由于A电脑目前没有设置默认网关,所以对该数据包将进行丢弃操作,结果B电脑当然就无法收到A电脑的回应包,所以B电脑上会显示“Request timed out”,即网络超时。
⑷ 如果在A电脑上去PING B电脑,根据前面的分析,A电脑会认为B电脑与A电脑不在网段,而A电脑又没有设置默认网关,所以会显示“Destination host unreachable”,即目标主机不可达。
NOTE:当发现掩码后,和自己的掩码前缀不一致. 那么就通过网关发出去. ip包不变. 加一个网关的 mac 头. (局域网内通过 mac 地址,传输数据)
1. vpn的隧道原理 通俗易懂版本
1.1VPN的原理(内含流程图) http://guoyueheng148.blog.163.com/blog/static/6016709120100851830647/
(但是这个封包被送到VPN Server(A)之后②,VPN Server 会把这个封包以特殊的方式来处理,如图8-5 所示,VPN Server 会把原本的整个封包当做其所要传递的数据内容)
类似本地的vpn虚拟网卡. 所有流量都经过该软件改包.
1.2 vpn的实现原理 http://jingyan.baidu.com/article/02027811886aee1bcd9ce54f.html
(分公司B局域网的VPN网关在接收到终端(192.168.2.2)发出的访问数据包①时对其目标地址(192.168.1.252)进行检查,发现目标地址属于公司总部A网络的地址,)
1.3. 专业版本 vpn分类.
https://wenku.baidu.com/view/3e5dd9ea172ded630b1cb699.html
vpn和代理的区别.
vpn是将两个局域网联结到一起,需要本地vpn服务器封装ip头,远端vpn服务器拆解ip头,双方都要安装统一的 vpn 模块, 相当于在原来的 ip 头和数据之间又安插了一个头. 工作在网络层(ip)
代理服务器: 代理服务器把ip头的源地址替换. 只有一个服务器.http代理,工作在应用层第7层.socket代理工作在传输层(tcp).
隧道的好处: 1. 能够在自己的pc 上,通过软件配置后, 访问一个本来访问不到的ip. 2. 代理比较简单, 只能某个浏览器里使用,不能加密. 隧道可以做的更多,网卡层. 都是在 ip 和 mac 中间横插了一个头部.
数据依赖和层级,类似于互联网架构. 怎么组装,装饰上层业务决定.
lvs原理:
文嵩博士 2006写的: 可伸缩网络服务的设计与实现 http://zh.linuxvirtualserver.org/node/7
运维lvs配置的几个阶段,实战版理解: LVS集群部署详细过程(LVS+OSPF) http://navyaijm.blog.51cto.com/4647068/1346053/
Document
http://kb.linuxvirtualserver.org/wiki/IPVS_FULLNAT_and_SYNPROXY
Media:lvs-fullnat-synproxy-doc.zip
lvs直接:
需要理解 :
1.arp_ignore 避免vip的请求落到realServer上
2.回环接口上配置和lvs机器相同的vip, 保证能接受lvs的DR转发
LVS-DR工作原理图文详解http://www.cnblogs.com/czh-liyu/archive/2011/11/29/2267963.html
其他参考文章
LVS DR模式中arp_ignore和arp_announce的作用解释http://blog.csdn.net/gzh0222/article/details/856651
lvs持久性工作原理和配置http://www.cnblogs.com/zengkefu/p/5494028.html
Linux中的lo回环接口详细介绍:http://soft.chinabyte.com/os/327/11628327.shtml
lvs隧道: 类似vpn隧道. 故realServer也是隧道的另一端,需要配置一个vpn拆包模块.对新增加的 ip 头部解析.
好处: lvs 和realServer可以不在同一个网段.
lvs隧道和 vpn隧道的不同是 , response直接和client交互,不需要经过vpn隧道网关.
lvs nat:
理解核心:
1.改dst ip
2. 返回数据经过lvs的原因是 real server的 网关配置的是lvs机器的vip
LVS配置NAT模式简单示例http://blog.csdn.net/kkdelta/article/details/39454303
所以只能相同局域网.(通过网关的. 要一个内网.)
LVS NAT模式简介 mtu层面的关注.
lvs fullNat: 淘宝开源的. 结合
理解核心:
1. in 修改source ip 和 dst ip .可以不在一个网段. out也要修改,见下面. 有啥好处?
full nat 跟nat 相比的优点是:保证RS回包一定能够回到LVS;因为源地址就是LVS--> 不确定
- 引入local address(内网IP地址)。cip-vip转换为lip->rip,而 lip和rip均为IDC内网IP,可以跨VLAN通讯。
2.需要增加sessionMap
http://zymlinux.net/ADC2012/3_%E6%99%AE%E7%A9%BA_LVS%E5%9C%A8%E6%B7%98%E5%AE%9D%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8.pdf
- FULLNAT技术概述https://help.aliyun.com/knowledge_detail/39444.html#%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F
- OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),
-
SynProxy 工作原理
nat模式下报文变化
发送 接收
cip ---> vip
cip ---> rip ( DNAT )
rip ---> cip
vip ---> cip ( SNAT )
fullnat模式下报文变化
发送 接收
cip ---> vip
lip ---> rip ( SNAT + DNAT )
rip ---> lip
vip ---> cip ( SNAT + DNAT )
注释:
- cip为客户端的地址
- vip为虚拟地址
- rip为真实的服务器
- lip为本地地址
- SNAT为来源地址转换
- DNAT为目的地址转换
LVS DR、NAT、FULL NAT、IP TUNNEL 模式的区别:
DR 模式因为只修改 package的 MAC地址通过ARP广播的形势找到realserver,所以 要求LVS 的VIP 和realserver的IP 必须在同一个网段内,也就是在挂载VIP 时先确认LVS的工作模式,如果是DR模式需要先确认这个IP 只是否能挂在这个LVS下面。
其他模式因为都会修改DST ip 为 realserver的IP 地址,所以不需要在同一个网段内
2. 是否需要在realserver 绑定LVS vip 的IP 地址:
realserver 收到package后会判断dst ip 是否是自己的ip,如果不是就直接丢掉包;因为DR模式dst 没有修改还是LVS的VIP;所以需要在realserver上面绑定VIP;IP TUNNEL 模式只是对package 重新包装一层,realserver解析后的IP包的DST 仍然是 LVS的VIP ;也需要在realserver上面绑定VIP;其他的都不需要
3. 四种模式的性能比较:
因为DR模式 TP TUNELL 模式都是在package in 时经过LVS ;在package out是直接返回给client;所以二者的性能比NAT 模式高;但IP TUNNEL 因为是TUNNEL 模式比较复杂,其性能不如DR模式;FULL NAT 模式因为不仅要更换 DST IP 还更换 SOURCE IP 所以性能比NAT 下降10%
所以,4中模式的性能如下:DR --> IP TUNNEL --->NAT ----->FULL NAT
LVS 实践中的积累
1. lvs 不会主动断开连接
比如 client 通过LVS VIP 采用长链接方式访问server,即使我们把LVS下面的realserver的status.html文件删除了;本来通过LVS 跟这台realserver 链接的请求也不会被LVS
强制断开;要等到client自己断开连接;【在client主动断开期间;client可以跟这台realserver 正常通信】;这样有个好处时在网络抖动时;LVS不会频繁的流量截断,到不同的RS上面