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

news2024/12/24 0:05:04

一、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技术与实践——李学昭

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

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

相关文章

Redis基础---Java客户端应用

目录 一、介绍 二、Jedis的使用 三、SpringDataRedis的使用 创建: 一、介绍 在Redis官网,提供了多种编程语言的客户端,如Java、C等,官网地址:Clients | Redis 而对于Java的客户端有很多,但是用的最多的就是…

42、网络编程/多点通信和域套接字通信模型20240304

一、多点通信之广播的收发端实现 1.广播发送端代码&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int sfdsocket(AF_INET,SOCK_DGRAM,0);//创建套接字if(sfd-1){perror("socket,error");return -1;}int broadcast1;//设置套接字广…

【AI视野·今日NLP 自然语言处理论文速览 第八十一期】Mon, 4 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 4 Mar 2024 Totally 48 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Mitigating Reversal Curse via Semantic-aware Permutation Training Authors Qingyan Guo, Rui Wang, Junlia…

J013_简易商家外卖系统

一、需求描述 1、完成菜品的上架功能 2、完成菜品的浏览功能 二、开发设计 1、需要设计一个菜品类&#xff0c;用于创建菜品对象 2、需要一个菜品操作类&#xff0c;用于封装菜品上架和菜品浏览功能 3、测试程序 三、代码实现 3.1 Food类 package com.itheima.arrayli…

Linux下安装MinDoc文档

文章目录 背景下载文件将M i n D o c放到目录内解压文件创建数据库配置数据库启动程序演示图 背景 由于日前自己的项目&#xff0c;需要分对外的公开文档&#xff0c; 但是又不想写页面&#xff0c;所以就在网上找了份文档项目。 具体使用步骤如下&#xff1a; 下载文件 请从…

Flutter中Widget的生命周期

Widget生命周期&#xff1a; createState-initState-didChangeDependency-build-deactive-dispose 可通过WidgetsBinding类对widget生命周期的回调进行监控。 createState&#xff1a;StatefulWidget 中用于创建 State&#xff1b; initState&#xff1a;State 的初始化操作&am…

电脑提示bluescreen蓝屏怎么解决? 电脑蓝屏bluescreen修复方法

电脑提示bluescreen蓝屏怎么解决&#xff1f;电脑突然蓝屏提示blueScreen&#xff0c;该怎么解决这个问题呢&#xff1f;下面我们就来分享三种电脑蓝屏bluescreen修复方法&#xff0c;需要的朋友可以参考下 不少朋友都遇到了bluescreen蓝屏的现象&#xff0c;那么出现这种情况…

2.8k star! 用开源免费的edge-tts平替科大讯飞的语音合成服务

edge-tts是github上的一个开源项目&#xff0c;可以免费将文本转为语音&#xff0c;别看它只有2.8k star&#xff0c;替代科大讯飞的收费TTS服务完全没问题&#xff0c;因为这个项目实际是调用的微软edge的在线语音合成服务&#xff0c;支持40多种语言&#xff0c;300多种声音&…

YOLOv8从入门到入土使用教程!(一)训练模型

⭐⭐⭐瞧一瞧看一看&#xff0c;新鲜的YOLOv9魔改专栏来啦&#xff01;⭐⭐⭐ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文将演示如何使用YOLOv8进行训练及预测&#xff01; 二…

three.js如何实现简易3D机房?(一)基础准备-上

目录 一、tips 二、功能说明 1.模型初始化 2.功能交互 三、初始化准备 1.目录结构 2.创建三要素 3.创建轨道控制器 4.初始化灯光 5.适配 6.循环渲染 一、tips 1.three.js入门的相关基础性知识就不在此过多赘述了&#xff0c;可以自行提前了解 three.js docs&…

MySql缓冲池命中率

缓冲池 大小查看 show variables like innodb_buffer_pool_size; 太小的innodb_buffer_pool_size是不利于性能的提升 命中率查看 一 、 通过以下命令查看相关数据&#xff1a; show global status like Innodb_buffer_pool_read%;结果如下&#xff1a; 命中率公式&#xff1…

SkyWalking链路追踪上下文TraceContext的追踪身份traceId生成的实现原理剖析

结论先行 SkyWalking 通过字节码增强技术实现&#xff0c;结合依赖注入和控制反转思想&#xff0c;以SkyWalking方式将追踪身份traceId编织到链路追踪上下文TraceContext中。 是不是很有趣&#xff0c;很有意思&#xff01;&#xff01;&#xff01; 实现原理剖析 TraceConte…

bun build

Bun 的快速原生打包器现已进入测试版阶段。可通过 bun build CLI 命令或 Bun.build() JavaScript API 使用。 bun build ./index.tsx --outdir ./build await Bun.build({entrypoints: [./index.tsx],outdir: ./build, }); 速度很快。下面的数字代表 esbuild 在 three.js 基…

PHP+MySQL实现后台管理系统增删改查之够用就好

说明 最近要给博客弄个后台&#xff0c;不想搞得很复杂&#xff0c;有基本的增删改查就够了&#xff0c;到网上找了一圈发现这个不错&#xff0c;很实用&#xff0c;希望可以帮到大家&#xff0c;需要的朋友评论区留下邮箱&#xff0c;我安排发送。 演示效果 项目介绍 本项目…

libigl 极小曲面(局部迭代法)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 我们的目标是想得到一个曲率处处为0的曲面,具体操作如下所述: 二、实现代码 #include <igl/colon.h> #include

『Linux从入门到精通』第 ㉕ 期 - System V 共享内存

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f427;共享内存原理&#x1f427;共享内存相关函数&#x1f426;key 与 shmid 区别 &#x1f427;代码实例 &#x1f490;专栏导读 &#x1f338;作者简介&#xff1a;花想云 &#xff0c;在读本科生一枚&#xff0…

智能电网监控:图像分类技术在能源电力领域的创新应用

一、引言 在当今这个对能源效率要求日益增长的时代&#xff0c;电力行业正面临着前所未有的挑战。为了满足日益增长的电力需求&#xff0c;同时确保电网的稳定性和可靠性&#xff0c;我们采用了一种革命性的方法&#xff1a;通过智能算法和自动化技术来优化电网的运行。这一项…

最短路径Floyd算法

第一题&#xff1a;[USACO08OPEN] Clear And Present Danger S #include<bits/stdc.h> using namespace std; int n,m; int g[105][105]; int arr[100005]; long long sum; int main() {scanf("%d%d",&n,&m);for(int i1;i<m;i){scanf("%d"…

Python不换行print在终端中不显示

问题描述 当使用不换行 print 即 print(‘test, end) 后立即关闭标准输出 sys.stdout open(os.devnull, w)则 print 的内容不会显示在正常的终端上&#xff08;例外是 PyCharm 中的终端能够正常显示&#xff09;。 复现问题 复现该问题的简易代码&#xff1a; import sys,…

带你全方位体验 Amazon Connect

1.前言 授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道。 近日亚马逊云科技在拉斯维加斯拉开了年度客户大会-亚马逊云科技 re:Invent 的序…