链路负载均衡之DNS透明代理

一、DNS透明代理

一般来说,企业的客户端上都只能配置一个运营商的DNS服务器地址,DNS服务器通常会将域名解析成自己所在ISP内的Web服务器地址,这将导致内网用户的上网流量都集中在一个ISP的链路上转发,最终可能会造成链路拥塞,影响用户的上网体验。同时,由于其他ISP的链路资源没有被使用,也造成了资源的浪费。

为了解决上述问题,可以使用DNS透明代理功能。防火墙配置DNS透明代理功能后,对于命中DNS透明代理策略的DNS请求报文,防火墙会根据DNS请求报文选择的出接口,修改请求报文的目的地址(DNS服务器地址),即将其修改为其他ISP内的DNS服务器地址,DNS请求被转发到不同的ISP,解析后的Web服务器地址也就属于不同的ISP,所以上网流量将通过不同的ISP链路转发,充分利用了所有链路资源。

二、DNS透明代理策略

管理员通过DNS透明代理策略来定义哪些DNS请求报文是否需要代理。DNS透明代理策略的具体规则如下:

①定义DNS请求报文的源和目的地址,默认为any,并执行配置的动作;

②各个匹配条件之间是“与”的关系,与安全策略类似;

③一个匹配条件中如果可以配置多个值,与安全策略类似;

④防火墙可以有多条DNS透明代理策略,DNS请求报文将按照策略的配置顺序依次进行匹配;

⑤只要匹配到其中一条策略,就按照此策略的动作进行处理,不再继续匹配剩余的其他策略。

注意:防火墙默认提供了一个DNS透明代理策略"default",所有报文不做代理,default位于策略列表的最底部,优先级最低。

三、DNS透明代理处理流程

1、DNS请求报文命中DNS透明代理策略后,对于需要做DNS透明代理的报文,防火墙首先判断待解析的域名是否为排除域名:

(1)若是排除域名,防火墙不会做DNS透明代理;

①对于排除域名,若需要更换DNS服务器来解析该域名,则防火墙会将DNS请求报文的目的地址修改为指定DNS服务器的地址。

(2)不是排除域名,防火墙会为报文做一个DNS透明代理标记,此标记用于后续流程的判断。

2、DNS请求报文根据智能选路或者普通静态/动态路由选路选择出接口。

优先级关系为:DNS透明代理自身配置的智能选路方式> 策略路由> 全局选路策略 > 普通静态/动态路由选路。

当出接口上绑定了DNS服务器,且报文有DNS透明代理标记时,防火墙才会做DNS透明代理。两个条件中有一个不满足时,FW都不会做DNS透明代理

注意:

防火墙在每个出接口上最多绑定2个DNS服务器,一个为首选DNS服务器,一个为备用DNS服务器,它们都属于该出接口直连的ISP网络。只有当首选DNS服务器的状态为DOWN时,才使用备用DNS服务器的地址进行替换。

可配置健康检查,检查主用DNS服务器是否故障,当首选DNS服务器和备用DNS服务器都不可用,则DNS透明代理不生效。

四、DNS透明代理配置

某企业分别从ISP1和ISP2租用了一条链路,ISP1链路的带宽为100M,ISP2链路的带宽为50M。ISP1的DNS服务器地址为8.8.8.8和8.8.8.9,ISP2的DNS服务器地址为9.9.9.8和9.9.9.9。内网用户客户端的DNS服务器地址均设置为10.10.10.10。

企业提出对应的需求如下:

①192.168.1.0/24网段内网用户的上网流量按照2:1的比例分配到ISP1和ISP2链路,保证各条链路得到充分利用且不会发生拥塞,提升内网用户的上网体验。

②内网用户访问域名www.example.com时,不做DNS透明代理,但是要在指定的DNS服务器(8.8.8.10)上解析该域名对应的Web服务器地址。

③当一条ISP链路过载(阈值为90%)时,可以使用另一条ISP链路进行流量转发。

1、配置思路

①内网用户的上网流量按照2:1的比例分配到ISP1和ISP2链路,智能选路的方式设置为根据链路带宽负载分担的全局选路策略;

②健康检测(可选,模拟器无法实现,忽略);

③配置接口的IP地址、安全区域、网关地址、带宽和过载保护阈值,并在接口上应用健康检查;

④配置基本的安全策略,允许企业内网用户访问外网资源。

⑤配置ISP选路功能。制作isp1.csv和isp2.csv两个ISP地址文件,并上传到防火墙上;

⑥配置DNS透明代理功能。在出接口上绑定DNS服务器地址,配置DNS透明代理策略来指定做DNS透明代理的流量,并配置要排除的域名;

⑦配置全局选路策略。配置智能选路方式为根据链路带宽负载分担,并指定FW和ISP1、ISP2网络直连的出接口作为智能选路成员接口;

2、配置步骤

①配置ISP1和ISP2链路的健康检查功能;

进入对象——健康检查——新建

healthcheck enable
healthcheck name ISP1_health
destination 1.1.1.2 interface GigabitEthernet 1/0/1 protocol tcp

healthcheck name ISP2_health
destination 2.2.2.2 interface GigabitEthernet 1/0/2 protocol tcp

②配置接口的IP地址、安全区域、网关地址、带宽和过载保护阈值,并在接口上应用健康检查(存在BUG,忽略)

interface g1/0/1
ip address 1.1.1.1 24
gateway 1.1.1.254
bandwidth ingress 100000 threshold 90
bandwidth egress 100000 threshold 90
healthcheck ISP1_health

interface g1/0/2
ip address 2.2.2.1 24
gateway 2.2.2.254
bandwidth ingress 50000 threshold 90
bandwidth egress 50000 threshold 90
healthcheck ISP2_health
interface g1/0/0
ip address 192.168.1.254 24

firewall zone trust
add interface G1/0/0

firewall zone untrust
add interface G1/0/1
add interface G1/0/2

③配置基本的安全策略,允许企业内网用户访问外网资源

security-policy 
rule name trust_to_untrust
source-zone trust
destination-zone untrust
source-address 192.168.1.0 mask 255.255.255.0
service any
action permit

④配置ISP选路功能。制作isp1.csv和isp2.csv两个ISP地址文件,并上传到防火墙上

ip name isp1 set filename isp1.cv
ip name isp2 set filename isp2.cv

ip route-isp isp1 interface g1/0/1 1.1.1.2
ip route-isp isp2 interface g1/0/2 2.2.2.2

⑤配置DNS透明代理功能。在出接口上绑定DNS服务器地址,配置DNS透明代理策略来指定做DNS透明代理的流量,并配置要排除的域名

[USG6000V1]dns-transparent-policy
[USG6000V1-policy-dns]dns-transparent-policy enable
[USG6000V1-policy-dns]display this
2024-03-04 09:00:45.470 
#
dns-transparent-policy
 rule name DNS_policy
  source-address 192.168.1.0 mask 255.255.255.0
  action tpdns
#
[USG6000V1-policy-dns]dns server bind interface gigabitethernet 1/0/1 preferred 8.8.8.8 alternate 8.8.8.9 health-check enable
[USG6000V1-policy-dns]dns server bind interface gigabitethernet 1/0/2 preferred 9.9.9.8 alternate 9.9.9.9 health-check enable
[USG6000V1-policy-dns]dns transparent-proxy exclude domain www.example.com serve
r preferred 8.8.8.10

⑥配置全局选路策略。配置智能选路方式为根据链路带宽负载分担,并指定FW和ISP1、ISP2网络直连的出接口作为智能选路成员接口

multi-interface
mode proportion-of-bandwidth
add interface GigabitEthernet 1/0/1
add interface GigabitEthernet 1/0/2
load-balance flow hash source-ip

参考资料:防火墙和VPN技术与实践——李学昭

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++之智能指针

为什么会有智能指针 前面我们知道使用异常可能会导致部分资源没有被正常释放, 因为异常抛出之后会直接跳转到捕获异常的地方从而跳过了一些很重要的的代码, 比如说下面的情况: int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument(&q…

windows下的反调试探究——原理

原理 我们在前面介绍了一些反调试的手段,基本上都是通过对内核的某个标志进行修改来达到反调试的效果,但是这里有一个问题就是,如果分析人员对我们的样本的API进行了hook,那么我们的反调试手段都将作废,也就是说我们还…

【LeetCode】升级打怪之路 Day 13:优先级队列的应用

今日题目: 23. 合并 K 个升序链表 | LeetCode378. 有序矩阵中第 K 小的元素 | LeetCode373. 查找和最小的 K 对数字 | LeetCode703. 数据流中的第 K 大元素 | LeetCode347. 前 K 个高频元素 | LeetCode 目录 Problem 1:合并多个有序链表 【classic】LC 2…

2核4G服务器支持多少人在线?腾讯云全访问测试

腾讯云轻量应用服务器2核4G5M配置一年优惠价165元、252元15个月、三年756元,100%CPU性能,5M带宽下载速度640KB/秒,60GB SSD系统盘,月流量500GB,折合每天16.6GB流量,超出月流量包的流量按照0.8元每GB的价格支…

WSL2安装Ubuntu18.04到指定路径(非C盘)

1 系统设置开启WSL 1.1 在搜索框搜索“启动或关闭Windows功能”或在“控制面板”->“程序”->“启用或关闭 windows 功能” 开启 Windows 虚拟化和 Linux 子系统(WSL2)以及Hyper-V 按照提示重启计算机,开启WSL。 2 将WSL2 设置为默认版本 wsl --se…

Mysql删除重复项:力扣196. 删除重复的电子邮箱

题目链接:196. 删除重复的电子邮箱 - 力扣(LeetCode) 题目描述 sql语句 # Write your MySQL query statement below delete a from person as a inner join person as b where a.email b.email and a.id > b.id 思路:内连接…

MySQL NDB Cluster 分布式架构搭建 自定义启动、重启和关闭集群Shell脚本

此次NDB Cluster使用三台虚拟机进行搭建,一台作为管理节点;而对于另外两台服务器,每一台都充当着数据节点和SQL节点的角色。注意不是MGR主从复制架构,而是分布式MySQL架构。 创建 /var/lib/mysql-cluster/config.ini Cluster全局…

uipath调用python代码获取网站验证码

用uipath自带的ocr读验证码不是很准确,选择调用python读验证码,需要导入ddddocr(3.8以下版本支持ddddocr) 用uipath程序将验证码图片保存到本地(也可以直接用python处理图片,保存到本地比较简单&#xff0…

xss.haozi.me:0X0D

alert(1) -> 记住要回车一下-->是js的一个注释符但是只能用在最前面前面有一个空格都不行

C++:String的模拟实现

模拟实现的节奏比较快,大家可以先去看看博主的关于string的使用,然后再来看这里的模拟实现过程 C:String类的使用-CSDN博客 String模拟实现大致框架迭代器以及迭代器的获取(public定义,要有可读可写的也要有可读不可写…

基于springboot+vue的医院药品管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

【Android】源码解析 Activity 的构成

本文是基于 Android 14 的源码解析。 当我们写 Activity 时会调用 setContentView() 方法来加载布局。现在来看看 setContentView() 方法是怎么实现的,源码如下所示: 路径:/frameworks/base/core/java/android/app/Activity.javapublic void…

Linux中服务端开发

1 创建socket,返回一个文件描述符lfd---socket(); 2 将lfd和IP,PROT进行绑定---bind(); 3 将lfd由主动变成被动监听---listen(); 4 接收一个新的连接,得到一个的文件描述符cfd--accept() --该文件描述符用于与客户端通信 5 while(1) { 接受数据&a…

【扩散模型系列3】DiT开源项目

文章目录 DiT原始项目Fast-DiT readmeSamplingTraining训练之前的准备训练DiTPyTorch 训练结果改进训练效果 Evaluation (FID, Inception Score, etc.) 总结 DiT原始项目 该项目仅针对DiT训练,并未包含VAE 的训练 项目地址 论文主页 Fast-DiT readme 该项目仅针…

性能优化篇(七) UI优化注意事项以及使用Sprite Atlas打包精灵图集

UI优化注意事项 1.尽量避免使用IMGUI(OnGUI)来做游戏时的UI,因为IMGUI的开销比较大。 2.如果一个UGUI的控件不需要进行射线检测,则可以取消勾选Raycast Target 3.尽量避免使用完全透明的图片和UI控件。因为即使完全透明,我们看不见它&#xf…

论文笔记:Code Llama: Open Foundation Models for Code

导语 Code Llama是开源模型Llama 2在代码领域的一个专有模型,作者通过在代码数据集上进行进一步训练得到了了适用于该领域的专有模型,并在测试基准中超过了同等参数规模的其他公开模型。 链接:https://arxiv.org/abs/2308.12950机构&#x…

[cg] Games 202 - NPR 非真实感渲染

NPR特性(基于真实感渲染) 真实感--》翻译成非真实感的过程 NPR风格 需要转换为渲染中的操作 1.描边 B-->普通边界(不是下面几种的) C-->折痕 M-->材质边界 S-->需要在物体外面一圈上,并且是多个面共享…

win11部署自己的privateGpt(2024-0304)

什么是privateGpt? privategpt开源项目地址 https://github.com/imartinez/privateGPT/tree/main 官方文档 https://docs.privategpt.dev/overview/welcome/welcome PrivateGPT是一个可投入生产的人工智能项目,利用大型语言模型(LLMs)的…

流行 NFT 的必备指南

​作者:stellafootprint.network 编译:mingfootprint.network 来源:Footprint Analytics Blog 随着爱好者们对 NFT 的兴趣不断高涨,Footprint Analytics 发布了一系列文章,重点介绍各种热门 NFT 系列。这些文章深入…

GBU808-ASEMI整流桥GBU808参数、封装、尺寸

编辑:ll GBU808-ASEMI整流桥GBU808参数、封装、尺寸 型号:GBU808 品牌:ASEMI 封装:GBU-4 最大重复峰值反向电压:800V 最大正向平均整流电流(Vdss):8A 功率(Pd):中小功率 芯片个数&#…