当本地 IP 地址发生变化时,可以借助动态 DNS 服务提供商的帮助更新 DNS 注册。OPNsense 提供了os-ddclient
插件,为使用 ddclient 软件的多种服务提供帮助。
DDclient 是一个 Perl 客户端,用于更新动态 DNS 网络服务提供商帐户的动态 DNS 条目。DDclient 最初由 Paul Burry 创建,后来被 wimpunk 进行了大规模修改。该软件可在多种 UNIX 操作系统上运行,并已在 GNU/Linux 和 FreeBSD 上进行了测试。支持的功能包括作为守护进程运行、手动和自动更新、静态和动态更新、针对多个地址的优化更新、MX 记录、通配符、避免滥用、重试不成功的更新以及将更新状态传输到系统日志和电子邮件中。
本教程将介绍使用 ddclient 插件在OPNsense 防火墙上配置Cloudflare 动态DNS的方法。
主要分以下三个步骤:
- 安装动态 DNS 插件
- 配置动态 DNS 插件
- 配置动态 DNS 提供商账户
先决条件:在安装和使用此插件之前,您应该在其中一个受支持的动态 DNS 服务上注册一个帐户,且您的ISP给提供的动态IP地址是公网地址。
什么是动态DNS
动态DNS(DDNS)是指以动态、实时的方式自动更新和管理域名到IP地址的映射的方法。ISP 为客户提供两种外部 IP 地址:静态和动态。大多数公司设置使用静态外部 IP 地址,这对于服务白名单和防火墙配置等任务至关重要。然而,有些情况下(尤其是家庭 ISP 服务)会分配动态 IP 地址。因此,给出的外部 IP 地址会定期变化。在这种情况下,VPN、在线服务(使用端口转发)和其他工具的功能可能会因外部 IP 地址的变化而中断。因此,尝试与以前的 IP 地址建立连接的客户端不会得到响应。
要解决此问题,您可以使用动态 DNS 服务建立域名。这将使您的路由器或网络上的任何其他设备能够使用您的 IP 地址定期更新该域名的DNS记录。每次您使用该域名访问您的网络时,它都应始终显示您网络的准确且当前的 IP 地址。
启用动态 DNS 主机名配置可确保您所连接的外部 IP 地址始终更新。如果外部 IP 地址发生任何变化,OPNsense将自动更新 DDNS 主机名。
安装动态 DNS插件
请按照以下步骤操作:
导航至系统→ 固件→ 插件,在搜索字段中输入os-ddclient查找动态 DNS 插件,单击添加图标安装插件。然后会将被重定向到更新菜单选项卡。
图 1. os-ddclient
OPNsense 上的插件安装
配置动态DNS插件
按照以下步骤快速配置动态 DNS 插件:
导航到服务→动态 DNS →设置,配置一个或多个动态 DNS 服务。
图 2. OPNsense 上的动态 DNS 设置
选择“常规设置”选项卡可以访问防火墙上已配置的所有动态 DNS 服务的默认配置。点击高级模式切换栏来查看高级设置。确保选中“启用”选项,根据需要启用详细日志记录选项,或者将其保持未选中状态。将间隔选项设置为默认值 300 秒,这是查询地址更改的持续时间。将后端设置为ddclient
。或者您可以选择此选项的“本机”设置以启用对自定义 HTTP 请求的支持。输入完成以后,单击“应用”以激活设置。
图 3. OPNsense 上的动态 DNS 常规设置
动态DNS提供商
可以注册一个或多个动态 DNS 提供商。这些提供商将用于通过对指定服务的 HTTP API 调用来更新 DNS 注册。要在 OPNsense 防火墙上配置动态 DNS 提供商帐户,您可以按照以下步骤操作:
- 导航至服务→动态 DNS →设置。
- 单击“帐户”选项卡右下角带有 图标的添加按钮。
- 选中“启用”选项。
- 输入描述,例如My dynamic DNS from Cloudflare。
- 从服务下拉菜单中选择动态 DNS 提供商。
- 如果您使用 Azure 动态 DNS 服务,则可能需要设置resourceId选项,该选项是指向要更新的服务的指针。否则,请将其留空。
- 您可能需要指定用户名,但对于基于令牌的身份验证(例如 Cloudflare 服务),它可能为空。
- 根据您的服务提供商输入密码或指定安全令牌。
- 在主机名字段中输入完全限定域名,以通过选定的服务进行更新。
- 选择检查 ip 方法以指定用于确定主机 IP 地址的方法。如果您的防火墙直接连接到互联网,您可以将此选项设置为“接口”
- 在要监控的接口选项中选择WAN。如果您有多个 WAN 接口,您可以从下拉菜单中选择合适的接口。
- 您可以将检查IP超时选项保留为默认选项。它决定了 checkip 进程超时前要等待多长时间。
- 您可以根据动态 DNS 提供商选择强制 SSL选项。如果您的提供商使用 HTTP,则必须禁用此选项。
- 单击“保存”。然后“应用”以激活设置。
图 4. OPNsense 上的动态 DNS 帐户设置
要验证 IP 地址是否更新成功,您可以转到服务→动态 DNS →日志文件页面进行查看。
有几家免费的动态 DNS 提供商可供选择,但它们对使用一些通用域名有限制。如果您的注册商缺乏使用脚本或 API 自动更新 DNS 记录的能力,某些提供商会提供付费使用个性化域名的可能性。
如果您的注册商提供 API,可以使用动态 DNS 客户端直接修改 DNS 记录,无需第三方服务来处理 DNS 记录的管理和更新。此功能的优点是,它无需为域名和与自定义域名兼容的动态 DNS 服务支付费用。Cloudflare 和 DreamHost 是两家提供 API 的域名注册商。以下是插件支持的提供商列表:
- 1984
- AzureDNS
- Changeip
- ClouDNS
- Cloudflare
- Digitalocean
- Dinahosting
- DNS Made Easy
- DNS-O-Matic
- DNSExit
- DynDNS
- DNSPark
- DSLReports
- DonDomino
- DuckDNS
- Dynu
- EasyDNS
- FreeDNS
- FreeMyIP
- Gandi
- godaddy
- HE.net
- HE.net TunnelBroker
- Hetzner DNS Console
- INWX
- Key-Systems
- Loopia
- NameCheap
- NearlyFreeSpeech.NET
- Njal.la
- No-ip
- Nsupdate.info
- OVH DynHost
- Porkbun
- Regfish.de
- Servercow
- sitelutions
- spDyn
- STRATO
- FreeDNS
- woima
- Yandex
- Zonedit
对于所有 DDNS 提供商来说,在 OPNsense 上配置 DDNS 服务的步骤都类似:
- 选择一个提供商。
- 访问他们的网站
- 创建一个帐户
- 为主机名建立 DNS 记录。
- 为一些提供商创建令牌。
- 在防火墙上配置 DDNS 设置。
不同提供商的程序有所不同,但它们都在其网站上提供了说明。
配置Cloudflare动态DNS
可以在 Cloudflare 仪表板上使用以下步骤配置动态 DNS:
- 为您的域添加A.DNS 条目,例如vpn.myhome.net。使用以下设置:IP 设置为0.0.0.0、禁用代理和,TTL设置为5 分钟。
图 5. 在 Cloudflare 上添加 DNS 记录
- 返回概览,选择页面右下角的获取 API 令牌。
图 6. 在 Cloudflare 上获取 API 令牌
- 单击创建令牌按钮。
图 7. 在 Cloudflare 上查看 API 密钥 - 选择编辑区域 DNS选项旁边的使用模板。
图 8. 在 Cloudflare 上编辑区域 DNS
- 在区域资源选项中为您的域选择正确的区域,例如myhome.net。
图 9. 在 CLoudflare 上创建 API 令牌
- 单击页面底部的“继续摘要”按钮。
- 单击创建令牌以生成 API 密钥。
- 将 API 密钥复制到剪贴板。将其临时粘贴到文本文件或便签中。出于安全原因,令牌不会再次显示。
图 10. 在 CLoudflare 上复制 API 密钥
- 导航至OPNsense 防火墙上的服务→动态 DNS →设置。
- 单击“帐户”选项卡右下角添加按钮图标。
- 选中“启用”选项。
- 输入描述,例如My DDNS from Cloudflare。
- 从服务下拉菜单选中Cloudflare。
- 用户名留空。将从 Cloudflare 复制的全局API密钥粘贴到密码字段中。
- 通配符默认不选。
- 在区域中输入完整主机名的域部分,例如myhome.net。
- 在主机名字段中输入完全限定域名,例如vpn.myhome.net。
- 选择检查 IP 方法以指定用于确定主机 IP 地址的方法。如果您的防火墙直接连接到 Internet,则可以将此选项设置为接口。如果您的 WAN 接口有私有 IP 地址,您可以选择ip4only.me选项。
- 监控接口选择WAN。如果您有多个 WAN 接口您可以从下拉菜单中选择合适的接口。
- 可以将检查IP超时选项保留为默认选项。
- 可以根据动态 DNS 提供商选择强制 SSL选项。如果您的提供商使用 HTTP,则必须禁用此选项。
- 单击“保存”。单击“应用”激活设置。
图 11. OPNsense 上 Cloudflare 的动态 DNS 帐户设置
图 12. 在 OPNsense 上查看 DDNS
OPNsense 将每 5 分钟验证一次您的 IP 和 DNS 条目的一致性。如果它们不相同,DNS 条目将被修改,Cloudflare 上的 DNS 记录的内容字段也将被更新。
图 13. 在 Cloudflare 上查看 DNS 记录
如果防火墙80端口没有被封闭,那么现在已经可以使用域名访问OPNsense防火墙了。