我有一系列相当复杂的服务器,它们都连接到运行 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
转发到不同的服务器。例如,我希望 将587
、993
和25
转发到10.0.0.101
,我希望 将80
、8080
和3000
转发到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。)