代理服务器-LVS的NAT模式

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

我们上一章介绍了Web服务器,其中以Nginx为主,本章我们来讲解几个代理软件:Squid,Haproxy,LVS,FRP(内网穿透)。

前面两个小节,我们介绍了LVS的相关概念和里面涉及到3种模式和算法。由于算法相对固定,并且Nginx里面也有类似的算法,所以下面2个小节,我们来讲讲里面的其中两种模式。

一、NAT 模式的核心原理

NAT 模式通过修改数据包的 源 IP 和 目标 IP 实现流量转发,是 LVS 三种工作模式中配置最简单但性能较低的一种。
关键流程

  1. 客户端发送请求到 VIP(Virtual IP),Director 接收请求。Director 修改请求包的 目标 IP(VIP → Real Server IP),并通过 DIP(Director IP) 转发给 Real Server。

  2. Real Server 响应:Real Server 处理请求后,将响应返回给 Director 的 DIP。Director 修改响应包的 源 IP(Real Server IP → VIP),返回给客户端。

流量路径示意图

Client → [VIP] Director [DIP] → Real Server   Client ← [VIP] Director [DIP] ← Real Server  

二、NAT 模式的关键配置

1.网络拓扑

此图来源于网络

图片

2.内核参数:Director 必须开启 IP 转发net.ipv4.ip_forward=1)。


三、NAT 模式的部署

原本打算使用单网卡来模拟这个情况的,但是最后测试发现DR在转发请求到后端RS的时候,只修改目的IP,不修改源端IP,导致没办法回包,所以请求失败,所以下面这个还是基于2张网卡来实现。其中

VIP:192.168.31.19(模拟外网IP)《网卡1》

DR:192.168.179.130 《网卡2》

图片

RS:192.168.179.131/132(部署Nginx提供web服务)

这里我按照前面的小节完成ipvsadm的部署,以及内核转发功能的打开。

DR:添加ipvs规则​​​​​​​

#  添加 NAT 规则(将 VIP:80 的请求转发到 Real Server)ipvsadm -A -t 192.168.31.19:80 -s rr        ipvsadm -a -t 192.168.31.19:80 -r 192.168.179.131:80 -mipvsadm -a -t 192.168.31.19:80 -r 192.168.179.132:80 -m

-A: 添加一个新的虚拟服务。

-t: 指定TCP协议的服务。

-s rr: 指定调度算法(scheduler),这里的rr代表轮询(Round Robin)。

-a: 向已有的虚拟服务添加真实服务器(real server)。

-t: 再次指定虚拟服务的IP地址和端口(192.168.31.19:80)。

-r: 指定真实服务器的IP地址和端口(192.168.179.131:80)。

-m:请求将通过NAT方式转发到真实服务器。

图片

RS:启用Nginx,将服务器网关指向192.168.179.130

图片

测试访问

图片

后端RS日志

图片

这里有个小疑问,以前没怎么关注这个问题。从后端RS的日志发现,这里的发现DR只修改了目标地址,并没有修改源IP地址。和传统的NAT(同时修改目标地址和源地址)这里说的是一种DNAT-only允许后端服务器直接获取客户端真实IP,适用于需要审计或基于IP的访问控制场景。这一特性在2010年代随着云计算和微服务架构的普及被广泛采用。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值