是否有可能(如何?)将传入的UDP数据包与一个目标IP路由到通过静态URL的DNS查询parsing的目标IP?

我有一组移动设备被configuration为发送UDP消息到在其SRAM中设置的IP地址。 他们无法存储URL,也无法将URLparsing为IP地址。 到设备发送到目的地IP的stream量必须通过我控制下的网关路由器。 网关路由器正在运行OpenWRT linux。 我想将这些UDP数据包发送到Amazon Elastic Load Balancing(AWS服务)。 Elastic Load Balancing的一个限制是(就我所能确定的)而言,必须使用DNS来parsing负载平衡器的IP(因为在任何时候AWS可能会使用多个负载均衡器)在亚马逊控制下的DNSselect使用哪一个)。 这是漫长的故事。

简短的故事是:“如何通过OpenWRT路由器将UDP数据包路由到通过路由器上的DNSparsing的地址?

我正在寻找一个解决scheme,通过IP链/表,防火墙规则等(或至less“插件”与一些历史),而不是自定义生成的代码。

预先感谢您的帮助!

我正在寻找一个解决scheme,通过IP链/表,防火墙规则等(或至less“插件”与一些历史),而不是自定义生成的代码。

不会发生,对不起。 当策略激活时,防火墙和路由引擎通常会将DNSloggingparsing为IP地址,Linux也不例外。 内核不会执行额外的DNS查找来查找DNSlogging更改。

iptables的manpage使得这个非常清晰,强调我的:

地址可以是networking名称,主机名称,networkingIP地址(带/掩码)或普通IP地址。 在将规则提交给内核之前,主机名将只被parsing一次。 请注意,使用远程查询(如DNS)指定要parsing的任何名称是一个非常糟糕的主意。

DNS传统上在这些types的堆栈中没有作用,因为它们试图尽可能保持操作的确定性。 忽略实现这个代码的复杂性会增加整体的情况,这也是一个安全风险,因为你基本上把控制你的安全策略委派给控制DNSlogging的人。 即使你100%确定你信任远程服务器运营商,基于UDP的DNS本质上也是可欺骗的协议(DNSSEC可以防止上游伪造,但是在客户端和recursor之间也不会提供任何“最后一公里”的保护),这使得这是一个可怕的的想法全线。 如果你发现一个支持这个的产品,你可能不应该支持它们!

你需要从这个等式中删除DNS。 这是你所在层面的工作的错误工具。