通过端口配置 DNSMasq 地址/内部 IP 对?

通过端口配置 DNSMasq 地址/内部 IP 对?

我有一系列相当复杂的服务器,它们都连接到运行 DD-WRT 的路由器。我经常移动整个设置,所以我试图让它“移动”。我通过将服务器所在的 DD-WRT 路由器配置为一种桥接器来实现这一点。当我移动时,我只需更改路由器用于连接互联网的无线网络,并为 DD-WRT 路由器提供静态 IP,并将新路由器上的所有端口转发到 DD-WRT 路由器。DD-WRT 路由器已经拥有自己的子网、我想要的网络上所有服务器的静态 IP 分配以及所有正确的端口转发配置。

我遇到的问题是 Hairpin-Routing 在此配置下不起作用,因为即使在 DD-WRT 路由器上启用了它,新路由器通常也只是 Century Link 或其他公司的标准一体式调制解调器/路由器。 (即它并不意味着真正由最终用户配置,所以我无法启用发夹路由。)

我已经通过使用 DNSMasq 规则“解决”了这个问题。这是我目前所拥有的……

address=/odroid.example.com/10.0.0.101
address=/example.com/10.0.0.102

我现在遇到的问题是,我希望将 上的某些端口example.com转发到不同的服务器。例如,我希望 将58799325转发到10.0.0.101,我希望 将8080803000转发到10.0.0.102

有没有办法在不配置通用路由器的情况下实现此配置?(仅限于 DD-WRT 路由器。)

答案1

这不是 dnsmasq 能做到的,因为这不是 DNS 本身能做到的。TCP 端口只参与其中地址查找已完成。因此,无论您的主机example.com解析到哪个地址,都必须能够处理全部这些连接 – 可能在可能的情况下使用 HTTP 反向代理,或另一层端口转发(iptables、pf 重定向等)。


一些具体的不过,应用程序有自己的机制。对于端口 25(服务器 SMTP),创建MX指向另一个域的记录。如果发送邮件服务器找到一个,它将仅使用 MX 记录中列出的服务器。(几乎所有域都是这样将其邮件重定向到专用的“邮件”服务器甚至 Google Mail 的。)

example.com.         MX 10 smtp-in.example.com.
smtp-in.example.com. A  10.0.0.25

对于 IMAP 和客户端 SMTP(143、993、587),您可能很幸运地为每项服务创建了 SRV 记录。它们的用途相似,但可以告诉应用程序要使用哪个主机和哪个端口:

_imap._tcp.example.com.       SRV 10 0 143 mail.example.com.
_imaps._tcp.example.com.      SRV 10 0 993 mail.example.com.
_submission._tcp.example.com. SRV 10 0 587 mail.example.com.
mail.example.com.             A   10.0.0.143

或者与 dnsmasq 的错误语法相同:

mx-host=example.com,smtp-in.example.com,10
address=/smtp-in.example.com/10.0.0.25

srv-host=_imap._tcp.example.com,mail.example.com,143
srv-host=_imaps._tcp.example.com,mail.example.com,143
srv-host=_submission._tcp.example.com,mail.example.com,587
address=/mail.example.com/10.0.0.143

请注意,只有一些程序关心 SRV 记录。虽然上述_imap示例在技术上是标准的,但它们仍然很少被实际的邮件应用程序使用。(实际上,唯一广泛使用的 SRV 用户是 Kerberos、LDAP、SIP、XMPP 和 Minecraft。)

相关内容