【进阶篇 / DNS】(7.0) ❀ 03. 巧用 FortiGate DNS 服务器构建内外网统一解析 ❀ 防火墙实战

张开发
2026/4/19 2:05:26 15 分钟阅读

分享文章

【进阶篇 / DNS】(7.0) ❀ 03. 巧用 FortiGate DNS 服务器构建内外网统一解析 ❀ 防火墙实战
1. 为什么需要内外网统一DNS解析想象一下这样的场景公司内部部署了OA系统、ERP系统和文件服务器分别使用IP地址192.168.1.100、192.168.1.101和192.168.1.102。员工每天都需要记住这些数字组合来访问系统不仅容易出错而且当IP变更时需要通知所有人更新。更麻烦的是有些系统同时拥有内网和公网访问需求比如公司的官网可能在内网测试环境使用192.168.1.200而在公网使用203.0.113.100。传统做法是在每台电脑的hosts文件中手动添加记录或者在内网搭建独立的DNS服务器。前者维护成本极高后者又增加了基础设施复杂度。FortiGate防火墙的DNS服务器功能正好能解决这个痛点——它既可以为内网域名提供专属解析又能将公网查询转发给上游DNS实现一套系统、两种解析的智能分流。我在实际部署中发现这种方案特别适合以下场景拥有多个自建服务的中小型企业经常需要变更服务器IP的开发测试环境需要为不同区域提供相同域名但不同IP解析的分布式架构希望对内网DNS查询进行审计和监控的安全敏感场景2. 配置FortiGate DNS数据库2.1 启用隐藏的DNS功能FortiGate的DNS服务器功能默认是隐藏的需要先开启可见性。进入【系统管理】→【可见功能】找到DNS数据库选项并启用。这个设计很贴心——毕竟不是所有用户都需要这个进阶功能隐藏起来可以避免误操作。注意启用新功能后建议刷新浏览器页面有些菜单变更需要重新加载才能生效2.2 创建内网域名解析记录进入【网络】→【DNS服务器】→【DNS数据库】点击新建。这里有几个关键参数需要注意类型保持默认的主用即可除非你需要配置DNS集群查看设置这个安全选项决定了谁能看到你的DNS记录Shadow仅内网用户可见推荐选择Public对外公开慎用权威除非你要搭建完整的权威DNS服务器否则保持关闭我通常会给每个服务类别创建独立的区域比如oa.company.local → 办公自动化系统erp.company.local → 企业资源计划fs.company.local → 文件服务器集群每个条目需要填写主机名如mail、web等易记名称FQDN系统会自动补全为完整域名IP地址对应的内网IP# 示例CLI方式添加DNS记录 config system dns-database edit internal_services set domain company.local set view shadow config dns-entry edit 1 set hostname oa set ip 192.168.1.100 next edit 2 set hostname erp set ip 192.168.1.101 next end next end2.3 批量导入DNS记录当需要添加大量记录时手动操作效率太低。我常用的方法是在Excel中整理好主机名-IP对照表使用另存为CSV功能生成数据文件通过FortiGate CLI的import命令批量导入# 批量导入示例 execute dns-database import internal_services /path/to/dns_records.csv3. 配置递归DNS解析3.1 理解三种解析模式DNS服务接口提供三种工作模式我用实际案例说明它们的区别场景用户查询oa.company.local内网域名和baidu.com公网域名递归模式推荐查询oa.company.local → 返回192.168.1.100本地数据库查询baidu.com → 转发给8.8.8.8等上游DNS相当于先查本地查不到再问别人非递归模式查询oa.company.local → 返回192.168.1.100查询baidu.com → 直接返回域名不存在相当于只认本地记录转发至系统DNS所有查询都直接扔给上游DNS本地记录完全失效相当于完全外包3.2 接口DNS服务配置进入【网络】→【DNS服务器】→【DNS服务】为内网接口通常是lan或internal创建服务选择需要提供DNS服务的接口模式选择递归保持其他参数默认# CLI配置示例 config system dns-server edit lan_dns set mode recursive set interface lan next end实测发现如果同时有多个内网接口如办公网、生产网建议为每个接口单独启用DNS服务避免跨网段DNS查询带来的性能损耗。4. 系统DNS与性能优化4.1 选择合适的上游DNS在【网络】→【DNS】设置中推荐组合使用多个公共DNS主DNS8.8.8.8Google备DNS114.114.114.114国内第三DNS可以考虑添加运营商DNS这样配置有三个好处当Google DNS被干扰时自动切换国内DNS解析FortiGuard等国际服务时使用Google DNS解析国内网站时使用114DNS获得更优路径4.2 调整DNS缓存参数通过CLI可以查看和优化缓存设置# 查看当前缓存配置 diagnose test application dnsproxy 2 # 调整缓存大小默认5000条建议根据内网规模调整 config system dns set dns-query-limit 10000 end # 设置缓存有效期单位秒默认86400即24小时 config system dns set cache-ttl 43200 # 设置为12小时 end在内网终端超过200台的环境中我将缓存扩大到15000条后DNS查询的CPU占用从25%降到了8%。4.3 监控与排错技巧当DNS解析出现问题时这几个命令能快速定位原因# 实时查看DNS查询日志 diagnose debug enable diagnose debug application dnsproxy -1 # 测试特定域名解析 execute dns-lookup google.com execute dns-lookup oa.company.local # 清除DNS缓存强制刷新 execute dns-cache flush5. 客户端配置与验证5.1 终端DNS设置有三种方式让客户端使用FortiGate DNSDHCP分配在接口设置中将DNS服务器指定为与接口IP相同手动指定将电脑DNS服务器设置为防火墙内网接口IP组策略推送通过域控或MDM工具统一配置# 查看DHCP分配的DNS信息 diagnose ip dhcp lease list5.2 全面验证解析结果测试时建议覆盖以下场景内网域名解析应返回内网IP国内公网域名如baidu.com国际域名如google.com不存在的域名应快速返回NXDOMAIN# Windows端测试命令 nslookup oa.company.local # 应返回内网IP ping erp.company.local # 应能ping通 tracert www.baidu.com # 应能正常追踪路由6. 性能考量与适用边界虽然这个方案很优雅但并不是所有场景都适用。根据我的踩坑经验以下情况需要谨慎推荐使用场景内网主机数500台防火墙型号≥60F主要解析内网域名公网查询量不大不建议使用的情况大型企业总部建议用专业DNS服务器高并发公网查询场景如开放WiFi热点防火墙已经高负载CPU持续70%一个实用的性能判断标准用get system performance status命令查看DNS进程的CPU占用如果持续超过15%就应该考虑分流部分DNS查询到专业服务器。

更多文章