LVS-NAT模式的实现

LVS-NAT部署

LVS-NAT模式的实现

nat模式本质是将多目标IP的DNAT通过请求报文中的目标地址和目标端口修改为某真实服务器的真实IP和端口实现转发
nat模式实现的前提

·真实服务器和客户端IP在同一个IP网络中,且应该使用私网地址,真实服务器的网关指向lvs内网IP地址
·请求报文和响应报文都必须在lvs服务器进行转发,lvs服务器容易成为系统瓶颈
·支持端口映射,即可修改请求报文中的目标port,真实服务器的端口号可以进行修改
·lvs服务器必须为linux系统,真实服务器可以是任意OS系统
·该模式存在input链前方
·需要将iptables规则进行清空
·需要开启ip_forward

在这里插入图片描述
环境准备

准备4台主机
客户端:
centos6:192.168.10.6/24 仅主机模式 无GW,直接访问同网段的vip
lvs服务器:
centos8:
eth0:192.168.10.100/24 仅主机模式
eth1:10.0.0.8/24 NAT模式
RS服务器:
RS1:centos7:10.0.0.7 WG:10.0.0.8 NAT模式
RS2:centos7:10.0.0.17 WG:10.0.0.8 NAT模式
配置环境

#客户端6主机网卡配置,网卡为仅主机模式
[root@internet ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
NAME=eth0
IPADDR=192.168.10.6
PREFIX=24
BOOTPROTO=static
#lvs服务器网卡配置,网卡eth1为仅主机模式,eth0为nat模式
#注意:在配置网卡之前建议将相关包文件提前安装例如:ipvsadm包,修改网卡之后连接不到互联网
[root@lvs network-scripts]# vim ifcfg-eth0
DEVICE=eth0
NAME=eth0
IPADDR=10.0.0.8
PREFIX=24
BOOTPROTO=static
[root@lvs network-scripts]# vim ifcfg-eth1
DEVICE=eth1
NAME=eth1
IPADDR=192.168.10.100
PREFIX=24
BOOTPROTO=static
#RS1网卡配置,nat模式
[root@rs1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
NAME=eth0
IPADDR=10.0.0.7
PREFIX=24
GATEWAY=10.0.0.8
BOOTPROTO=static
[root@rs2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
IPADDR=10.0.0.17
PREFIX=24
GATEWAY=10.0.0.8
BOOTPROTO=static   
#注意配置完网卡之后重启网卡是IP生效,同时使用lvs服务器ping两个网段,如果可以ping通表示环境准备成功
#在后端服务器即RS1,RS2主机上安装http服务
[root@rs1 ~]# yum -y install httpd;systemctl enable --now httpd
[root@rs2 ~]# yum -y install httpd;systemctl enable --now httpd
[root@rs1 ~]# echo  `hostname -I; hostname` > /var/www/html/index.html
[root@rs2 ~]# echo  `hostname -I; hostname` > /var/www/html/index.html
#通过lvs访问两个页面,可以实现
[root@lvs ~]# curl 10.0.0.7
10.0.0.7 rs1
[root@lvs ~]# curl 10.0.0.17
10.0.0.17 rs2
#通过客户端访问,不可实现
[root@internet ~]# curl 10.0.0.7
curl: (7) Failed to connect to 10.0.0.7: Network is unreachable
[root@internet ~]# curl 10.0.0.17
curl: (7) Failed to connect to 10.0.0.17: Network is unreachable
#lvs服务器开启路由转发功能
[root@lvs ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

添加集群

#下载相关包
[root@lvs ~]# yum -y install ipvsadm httpd
[root@lvs ~]# systemctl enable --now httpd
#添加集群,指定调度算法为wrr,加权轮询
[root@lvs ~]# ipvsadm -A -t 192.168.10.100:80 -s wrr
#将10.0.0.7和10.0.0.17加入集群,指定端口为80端口,指定为-m模式即nat模式
[root@lvs ~]# ipvsadm -a -t 192.168.10.100:80 -r 10.0.0.7:80 -m
[root@lvs ~]# ipvsadm -a -t 192.168.10.100:80 -r 10.0.0.17:80 -m
#查看集群
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.100:80 wrr
  -> 10.0.0.7:80                  Masq    1      0          0    #轮询调度比例为1:1    
  -> 10.0.0.17:80                 Masq    1      0          0         

测试访问

#在客户端设置循环命令每隔0.5s进行访问vip,查看调度的详细情况
[root@internet ~]# while true;do curl 192.168.10.100;sleep 0.5;done
<think>嗯,用户想了解LVS-NAT模式的设置方法,需要根据之前的引用整理步骤。首先,回顾引用内容:引用[1]提到NAT模式下需要开启路由转发、设置防火墙为trusted区域,以及真实服务器网关指向调度器。引用[2]补充了添加VIP和开启路由转发的具体命令。引用[3]说明应用场景,引用[4][5]描述数据包转发原理。 用户明确要求设置方法,核心步骤应包含:1)网络配置(VIP添加、路由转发);2)防火墙设置;3)真实服务器网关配置。需要特别注意CentOS7的特殊设置项,比如sysctl.conf的修改和firewall-cmd的调整。引用[2]的示例命令很关键,要转化为可操作的步骤。 用户可能在实际操作中遇到问题,比如路由转发不生效或防火墙阻断,所以最后考虑补充调试建议。相关问题的设计应围绕常见痛点:性能优化、高可用扩展和应用场景选择,这样能帮用户后续深入。 </think>以下是LVS-NAT模式的详细设置步骤(基于CentOS 7环境): ### 📋 核心配置步骤 1. **网络准备** ``` # 添加VIP(通常在新网卡上操作) [root@lvs-server ~]# ip addr add dev ens37 192.168.50.128/24 ``` *注:`ens37`需替换为实际外网网卡名,VIP地址需符合网络规划[^2]* 2. **开启路由转发** ```bash [root@lvs-server ~]# vim /etc/sysctl.conf # 修改配置项: net.ipv4.ip_forward = 1 # 使配置生效 [root@lvs-server ~]# sysctl -p ``` *(关键步骤,否则数据包无法转发[^1][^2])* 3. **防火墙设置** ```bash [root@lvs-server ~]# firewall-cmd --set-default-zone=trusted ``` *(解决CentOS 7默认禁止转发的问题[^1])* 4. **真实服务器配置** - 网关必须指向LVS内网IP(如`192.168.10.1`) - 需部署实际服务(如Web服务) 5. **配置LVS规则(关键命令)** ```bash # 添加虚拟服务 ipvsadm -A -t 192.168.50.128:80 -s rr # 添加真实服务器(假设内网IP为192.168.10.10-20) ipvsadm -a -t 192.168.50.128:80 -r 192.168.10.10 -m ipvsadm -a -t 192.168.50.128:80 -r 192.168.10.11 -m ``` ### 🌐 工作原理 1. 客户端请求VIP(`192.168.50.128:80`) 2. LVS进行DNAT转换:目标IP改为真实服务器IP[^5] 3. 真实服务器响应时,LVS进行SNAT转换:源IP改回VIP[^4] 4. 数据包通过LVS返回客户端,实现透明代理 ### ️ 注意事项 - **网络拓扑**:需双网卡(外网VIP+内网DIP) - **性能瓶颈**:所有流量经LVS转发,需确保其网络带宽充足[^3] - **会话保持**:可通过`-p`参数设置持久连接(如`ipvsadm -A -t ... -p 600`) ### 🔍 调试命令 ```bash ipvsadm -Ln # 查看规则 tcpdump -i ens37 host 192.168.50.128 # 抓包分析 ``` > 📌 *典型应用场景*:中小规模Web集群,需隐藏后端服务器真实IP的环境[^3] --- ### ❓相关问题 1. LVS-NAT模式与DR模式的主要性能差异是什么? 2. 如何验证LVS-NAT模式下的数据包转发路径? 3. 当真实服务器故障时,LVS如何实现自动剔除节点? 4. 在超大规模集群中,NAT模式可能遇到哪些瓶颈? > 引用说明: > [^1]: NAT模式需开启路由转发及网关指向 > [^2]: VIP配置与转发功能开启方法 > [^3]: 适用场景及架构限制 > [^4]: 数据包地址转换过程 > [^5]: 请求转发核心机制
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值