LVS的NAT模式实战

目录

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. 配置区域数据配置文件](#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服务器Rs | 192.168.1.200 |
| web02 | 真实web服务器Rs | 192.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
相关推荐
神秘的土鸡1 小时前
Linux中使用Docker容器构建Tomcat容器完整教程
linux·运维·服务器·docker·容器·tomcat
shuxianshrng1 小时前
大气网格化精细化监管监测系统
大数据·服务器·windows·经验分享
friklogff1 小时前
【C#生态园】构建你的C#操作系统:框架选择与实践
服务器·开发语言·c#
TravisBytes1 小时前
linux 系统是如何收发数据包
linux·运维·服务器
平头哥在等你3 小时前
《计算机网络名词解释》
服务器·网络·计算机网络
德迅--文琪3 小时前
SCDN是服务器吗?SCDN防御服务器有什么特点?
运维·服务器
ice___Cpu3 小时前
Linux 基本使用和 web 程序部署 ( 8000 字 Linux 入门 )
linux·运维·前端
z202305083 小时前
linux 之0号进程、1号进程、2号进程
linux·运维·服务器
秋已杰爱3 小时前
HTTP中的Cookie与Session
服务器·网络协议·http
code bean4 小时前
【C#基础】函数传参大总结
服务器·开发语言·c#