LVS的NAT模式实战

news2024/9/21 22:39:24

目录

1.NAT模式的工作原理

 2.NAT模式实战---环境准备

1.环境规划

2.克隆主机,生成nat模式的机器

1.设置主机名称

2.更改ip地址

3.添加网卡

4.查看网卡

5.修改网卡配置文件

6.时间同步

7.停用其他服务

8.添加web服务

1.安装nginx

2.修改index.html文件

3.时间同步

9.配置dns服务器

1.安装bind

2.配置主配置文件

3.配置区域配置文件

4. 配置区域数据配置文件

5.检查配置文件

6.启动服务

7.时间同步 

10.配置client客户端测试机

3.NAT搭建

1.nat服务器配置

1.安装ipvsadm

2.清空以往的规则

3.查看规则

4.新增规则

5.添加主机

6.设置ip转发

7.设置生效

2.web服务器网关配置


1.NAT模式的工作原理

nat的请求过程

1.用户请求ds,此时请求报文会先到内核空间preroting链,此时报文ip为cip,目标为vip

2.prerouting检测发现数据包目标ip是本机,将数据包送到input链

3ipvs对比数据包请求是否为集群服务,如果是,修改数据包的目标ip 地址后为后端服务器的ip地址,然后将数据包发送给POSTROUTING链,此时报文为cip,目标报文为rip

4.POSTROUTING通过选路,将数据发送给Real Server

5.Real Server 对比发现目标ip 为自己的ip,开始购进响应报文发回给Director Server,此时报文的源ip为RIP,目标ip为CIP

6.Director Server在响应客户端前,会将源ip地址修改为自己的VIP,然后响应给客户端,目标ip为 cip,此时源报文为vip,目标为cip

NAT模型的特性

1. Rs应该是私有地址,Rs网关必须指向DIP

2. DIP和RIP必须在同一个网段内

3. 请求和响应报文都应该经过Director Server,高负载场景中Director Server容易成为性能瓶颈

4. 支持端口映射

5. Rs可是使用任意操作系统

6. 缺陷,对Ds压力会比较大,请求和响应都需要经过ds 

 2.NAT模式实战---环境准备

1.环境规划

角色作用ip
NAT负载均衡调度器DS

内网:(DIP 192.168.1.45)

外网:(VIP 192.168.10.143)

web01真实web服务器Rs192.168.1.200
web02真实web服务器Rs192.168.1.201
dns用来解析各主机的域名和ip地址192.168.1.46
client测试

2.克隆主机,生成nat模式的机器

给NAT主机增加一张网卡,命名为ens36,自动或者手工获取ip均可,理论上nat对应ds服务器应该有两张网卡(vip,dip)vip对外服务,需要使用公网ip,dip内网局域网,使用虚拟机使用仅主机模式,也可以用桥接模式和nat模式都可以。

1.设置主机名称
[root@localhost ~]# hostnamectl set-hostname nat
2.更改ip地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="89a57924-1086-4ddc-a17b-556ecc80725e"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.1.45
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost ~]# systemctl restart network
3.添加网卡

额外添加一张网卡,选择对外提供服务的桥接模式或者nat模式,选择桥接模式(ip不同)

4.查看网卡

5.修改网卡配置文件
#复制ens33的网卡文件作为ens36的网卡模板
[root@nat ~]#  cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts//ifcfg-ens36
#获得uuid
[root@nat ~]# uuidgen
ea4b53e2-8cc3-4818-8c6a-4b150fdef8d4
#编写ens36的网卡文件
[root@nat ~]#  vim /etc/sysconfig/network-scripts//ifcfg-ens36
TYPE="Ethernet"
BOOTPROTO="none"
NAME="ens36"
UUID="ea4b53e2-8cc3-4818-8c6a-4b150fdef8d4"
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.10.143
NETMASK=255.255.255.0
6.时间同步
#下载服务
[root@nat ~]# yum -y install ntpdate
[root@nat ~]# yum -y install ntp
#启动服务
[root@nat ~]# systemctl start ntpd
[root@nat ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
#时间同步
[root@nat ~]# ntpdate cn.ntp.org.cn
13 Aug 16:08:51 ntpdate[2248]: the NTP socket is in use, exiting
7.停用其他服务
#停用SELINUX
[root@nat ~]# setenforce 0
[root@nat ~]# sed -i '/SELINUX=enforcing/cSELINUX=disabled' /etc/selinux/config
#停用防火墙
[root@nat ~]# systemctl stop firewalld
[root@nat ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
#停用NetworkManager
[root@nat ~]# systemctl stop NetworkManager
[root@nat ~]# systemctl disable NetworkManager &>/dev/null
8.添加web服务

提前设置主机名称,关闭防火墙,固定ip地址,关闭SELinux,关闭NetworkManager。

web01:192.168.1.200

web02:192.168.1.201

1.安装nginx
[root@web01 ~]# yum -y install nginx
2.修改index.html文件
[root@web01 ~]# echo "web===========01" > /usr/share/nginx/html/index.html
[root@web01 ~]# nginx

 

3.时间同步
[root@web01 ~]# yum -y install ntpdate
[root@web01 ~]# yum -y install ntp

[root@web01 ~]# systemctl start ntpd
[root@web01 ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
[root@web01 ~]# ntpdate cn.ntp.org.cn
13 Aug 16:17:07 ntpdate[1741]: the NTP socket is in use, exiting

web02做以上同样的操作 。

9.配置dns服务器

web01        192.168.1.200 

web02        192.168.1.201

nat        192.168.1.45

Ds        192.168.10.143

dns服务器也是提前设置主机名称,关闭防火墙,固定ip地址,关闭SELinux,关闭NetworkManager。

1.安装bind
[root@dns ~]# yum -y install bind
2.配置主配置文件
[root@dns ~]# vim /etc/named.conf

 

3.配置区域配置文件

进入配置文件,在命令模式下输入:set number显示行号,将12-18行可复制(:12,18 co 42)到42行后面进行编辑。

[root@dns ~]# vim /etc/named.rfc1912.zones   #正向解析
...
zone "qingtang" IN {
        type master;
        file "qingtang.zone";
        allow-update { none; };
};
4. 配置区域数据配置文件
[root@dns ~]# ls /var/named/
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@dns ~]# cd /var/named/
[root@dns named]# cp -r named.localhost qingtang.zone
[root@dns named]# vim qingtang.zone 

5.检查配置文件
	[root@dns named]# named-checkconf /etc/named.conf
	[root@dns named]# named-checkconf /etc/named.rfc1912.zones
	[root@dns named]# named-checkzone qingtang.zone qingtang.zone 
	zone qingtang.zone/IN: loaded serial 0
	OK
6.启动服务
[root@dns named]# systemctl restart named
7.时间同步 
[root@dns ~]# yum -y install ntpdate
[root@dns ~]# yum -y install ntp
[root@dns ~]# systemctl start ntpd
[root@dns ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
[root@dns ~]# ntpdate cn.ntp.org.cn
13 Aug 19:05:02 ntpdate[5446]: the NTP socket is in use, exiting
10.配置client客户端测试机
#指定dns服务器
[root@client ~]# echo "nameserver 192.168.1.45" >> /etc/hosts

3.NAT搭建

1.nat服务器配置

1.安装ipvsadm
[root@nat ~]# yum -y install ipvsadm
2.清空以往的规则
[root@nat ~]# ipvsadm -C
3.查看规则
[root@nat ~]# ipvsadm -L -n
4.新增规则
[root@nat ~]# ipvsadm -A -t 192.168.10.143:80 -s rr
5.添加主机
[root@nat ~]# ipvsadm -a -t 192.168.10.143:80 -r 192.168.1.200:80 -m
[root@nat ~]# ipvsadm -a -t 192.168.10.143:80 -r 192.168.1.201:80 -m
6.设置ip转发
[root@nat ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward=1
7.设置生效
[root@nat ~]# sysctl -p

net.ipv4.ip_forward = 1

2.web服务器网关配置

[root@web01 ~]# route del default
[root@web01 ~]# route add default gw 10.1.1.100
[root@web02 ~]# route del default
[root@web02 ~]# route add default gw 10.1.1.100

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NFS实现多服务器文件的共享

文章目录 一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服务端:配置exports文件4、客户端挂载5、客户端:卸载 三、附录1、NFS服务基本命令2、/etc/exports参数解释3、exportfs命令 参考资料 …

Mysql-B树和B+树的区别

当我们为ID去建立一个主键索引的时候,Mysql底层就会为我们去维护一棵树的结构,从而提升我们的数据检索效率,树的共同特性:小的索引在左边,大的索引在右边,每一次结点的寻址,都是一次磁盘的IO&am…

STM32 F103C8T6学习笔记19:定时器读取旋转编码器

今日学习STM32 F103C8T6 单片机驱动读取旋转编码器,并传输数据给串口: 文章提供测试代码讲解、完整工程下载、测试效果图 目录 旋转编码器: 输入捕获: 硬件连接: 代码编程: 测试效果视频: 测试工程下载&…

Mybatis(2)

目录 一. 参数传递 1. 单个参数 2. 多个参数 二. mybatis增删改 1. 新增 2. 删除 3. 修改 三. mybatis查询 1. 单张表查询 2. 多表查询 2.1 查询单个学生信息 2.2 mybatis自动映射级别 2.3 查询所有学生信息 3. 嵌套查询 3.1 查询单个学生信息 3.2 查询多个学生…

DDColor部署安装,在服务器Ubuntu22.04系统——点动科技

DDColor图片上色项目的部署安装,在服务器Ubuntu22.04系统——点动科技 一、ubuntu22.04基本环境配置1.1 更换清华Ubuntu镜像源1.2 更新包列表:2. 安装英伟达显卡驱动2.1 使用wget在命令行下载驱动包2.2 更新软件列表和安装必要软件、依赖2.2 卸载原有驱动…

24.8.9.11数据结构|链栈和队列

链栈 1、理解 实际上是一个仅在表头进行操作的单链表,头指针指向栈顶结点或头结点,以下恋栈均指带头结点的链栈. 2、 基本操作 1、定义结构:节点含有数据域和指针域 2、初始化操作:建立一个带头结点的空栈 3、取栈顶元素操作:取出栈的栈顶元…

Mybatis_springboot与mybatis-plus

一 Mybatis_springboot MyBatis 是一个流行的持久层框架,可以与 Spring Boot 无缝集成。下面是如何在 Spring Boot 项目中使用 MyBatis 的基本步骤。 1. 创建 Spring Boot 项目 你可以使用 Spring Initializr 创建一个新的 Spring Boot 项目。选择以下依赖项&…

只要15分钟,TiDB国产化数据库快速入门,简单高效

TiDB国产化数据库快速入门 1.TiDB服务部署2.TiDB服务核心组件说明2.1 PD(Placement Driver)- 交通指挥中心2.2 TiDB(SQL Layer)- 餐厅前台2.3 TiKV(分布式存储层)- 仓库存储系统2.4 TiFlash(列式…

java数据库连接池介绍与使用

一. 使用数据库连接池有什么优势 在程序开发的过程中如果不使用数据库连接池 , 可能会导致我们每执行一次sql语句 , 就会向数据库发送请求链接与断开 , 这会消耗我们的内存资源 1. 资源重用更佳 减少开销:数据库连接池通过复用现有的数据库连接,显著减…

冒泡,选择,插入,希尔,快速,归并

冒泡&#xff0c;选择&#xff0c;插入&#xff0c;希尔&#xff0c;快速&#xff0c;归并 选择类的排序&#xff1a;选择排序&#xff0c;堆排序 交换类的排序&#xff1a;冒泡&#xff0c;快排 #include <stdio.h> #include<stdbool.h> #include<stdlib.h&…

Hidden Marlov Model(HMM)

一、Model 1、将声学特征设为X&#xff0c;经过语音识别得到的tokens设为Y&#xff0c;目标是找到通过X得到Y的最大概率&#xff0c;可以通过概率公式改变为 分为两个概率 2、将tokens序列Y转化为states序列S&#xff0c;声学特征分得更细 3、从states到声学特征的过程 二、HM…

力扣面试经典算法150题:罗马数字转整数

罗马数字转整数 今天的题目是力扣面试经典150题中的数组的简单题: 罗马数字转整数 题目链接&#xff1a;https://leetcode.cn/problems/roman-to-integer/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 将一个罗马数字转换成相应的整数。输入是一…

面向未来的低代码开发:人工智能与机器学习的结合

引言 在当今飞速发展的数字化世界中&#xff0c;技术的进步正以前所未有的速度改变着各个行业的运营方式。其中&#xff0c;低代码开发和人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;这两大技术的结合&#xff0c;正在推动着软件开发领域的又一次变…

身份证OCR识别接口如何用Java调用

一、什么是身份证OCR识别接口&#xff1f; 身份证OCR识别接口又叫身份证识别&#xff0c;身份证图像识别&#xff0c;身份证文字识别&#xff0c;即自动识别和提取身份证上的文字和数字信息。它可以通过图像处理和模式识别算法&#xff0c;将身份证中的姓名、性别、民族、出生…

我们从过去一年的大模型构建过程中学到的经验

当下正是使用大型语言模型&#xff08;LLM&#xff09;构建应用的好时机。过去一年&#xff0c;LLM 已经发展到了足够用于实际应用的水平。LLM 的进化速度与社交媒体层出不穷的演示应用&#xff0c;将在 2025 年吸引对 AI 领域的约 2000 亿美元投资。LLM 的门槛也很低&#xff…

Dbeaver 直连数据库下载数据到本地

参考文章&#xff1a;win11中DBeaver超详细下载与数据库MySQL 要使用 DBeaver 直接连接数据库并将数据下载到本地&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 连接到数据库 打开 DBeaver。点击左上角的“Database”菜单&#xff0c;选择“New Database Connection”…

【数学建模】【2024国赛前必看内容】python基础速成教学及常用python代码包

一、内容介绍 Python在各个编程语言中比较适合新手学习&#xff0c;Python解释器易于扩展&#xff0c;可以使用C、C或其他可以通过C调用的语言扩展新的功能和数据类型。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库&#xff0c;提供了适用于各个主要系统…

<Qt> 系统 - 文件

目录 一、Qt文件概述 二、输入输出设备类 三、文件读写类 四、文件和目录信息类 一、Qt文件概述 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 提供了很多关于文件的类&#xff0c;通过这些类能够对文件系统进行操…

Linux centos stream 9命令及源码

学过linux操作系统的人,对文件、命令比较熟悉。最多的操作是用命令处理文件。 随着学习的深入,会提出疑问:命令长什么样? 出于好奇,会找到命令存放的地方,用cat命令看一下,结果可想而知。 我们知道,命令分内部命令和外部命令,存放在不同的位置。外部命令就是一个可执…

Emacs1.0版本之重要特性及用法实例(一百五十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…