内部网络访问公共 URL 不起作用 - 速度慢/有时有效

内部网络访问公共 URL 不起作用 - 速度慢/有时有效

你好。

我一直无法使用 FQDN 从托管它们的内部网络访问我的网站/服务,也就是说,在 IP 为 10.0.0.5 的 VM 上,使用普通 URL“jira.example.com”从浏览器转到 Jira 服务器。

我根本无法执行这些请求,但最近偶然发现了一篇文章,解释了如何使用 iptables 进行设置。现在,我试图让 Jira 服务器工作,但它总是出现奇怪的事情,无法正确加载,这是因为它试图从内部网络(例如 10.0.0.1)访问外部 URL“jira.example.com”。


设置:

内部网络:10.0.0.0/24

外部 IP:32/32


网关:10.0.0.1/32

  • 防火墙
    • 目标 NAT 到相应的本地 IP -10.0.0.2
    • 当本地 IP 向外部 IP 发送请求时,发生目标 NAT
    • 源 NAT 当网关从内部网络收到发往生产服务器的请求时 - NAT 到10.0.0.1(网关)
  • DNS 服务器
    • 是否已将所有域配置为指向外部 IP
  • 鱿鱼缓存代理
    • 只是缓存

防火墙规则(显然不是全部):

-A PREROUTING -p tcp -m tcp -i eth1 --dport 80 -j DNAT --to-destination 10.0.0.2:80
-A PREROUTING -p tcp -m tcp -d X.X.X.X/32 -i eth0 --dport 80 -j DNAT --to-destination 10.0.0.2:80

-A PREROUTING -p udp -m udp -i eth1 --dport 80 -j DNAT --to-destination 10.0.0.2:80
-A PREROUTING -p udp -m udp -d X.X.X.X/32 -i eth0 --dport 80 -j DNAT --to-destination 10.0.0.2:80

-A PREROUTING -p tcp -m tcp -i eth1 --dport 443 -j DNAT --to-destination 10.0.0.2:443
-A PREROUTING -p tcp -m tcp -d X.X.X.X/32 -i eth0 --dport 443 -j DNAT --to-destination 10.0.0.2:443

-A PREROUTING -p udp -m udp -i eth1 --dport 443 -j DNAT --to-destination 10.0.0.2:443
-A PREROUTING -p udp -m udp -d X.X.X.X/32 -i eth0 --dport 443 -j DNAT --to-destination 10.0.0.2:443

-A POSTROUTING -p tcp -m tcp -s 10.0.0.0/24 -d 10.0.0.2 --dport 80 -j SNAT --to-source 10.0.0.1:80
-A POSTROUTING -p udp -m udp -s 10.0.0.0/24 -d 10.0.0.2 --dport 80 -j SNAT --to-source 10.0.0.1:80

-A POSTROUTING -p tcp -m tcp -s 10.0.0.0/24 -d 10.0.0.2 --dport 443 -j SNAT --to-source 10.0.0.1:443
-A POSTROUTING -p udp -m udp -s 10.0.0.0/24 -d 10.0.0.2 --dport 443 -j SNAT --to-source 10.0.0.1:443

生产:10.0.0.2/32

  • Nginx Web 服务器/代理
    • 对 Jira 等服务进行反向代理,以便我可以使用公共 URL 访问它们
  • Jira 服务器

效果

当我使用外部 URL(从外部 - 例如个人互联网连接)访问任何网站时,我能够看到它并且一切正常(Jira 除外 - 稍后会讨论这个问题)。域指向它们应该指向的位置,请求通过防火墙顺利转发,内容已交付。我在这方面没有遇到任何问题。

现在,我需要从内部网络访问外部 URL,因为许多应用程序需要设置“基本 URL”,因此您只能使用该 URL 访问该应用程序 + 应用程序本身使用该 URL 来执行一些内部神奇的操作。

Jira 就是这种情况。它使用设置为 FQDN 的基本 URL,但大多数时候都不想加载。它还会发出无法从自身访问 URL 的错误。

最初,我还没有用于内部网络的 SNAT 和 DNAT,但现在我已经设置了它,并且它可以部分工作。

在内部网络运行的 Windows 2019 服务器上,我可以访问不同的服务,但存在一些问题 - Jira 仍然没有正常响应。

内部网络上的所有服务器在其网络接口中都设置了唯一的 DNS 服务器 - 位于网关 (10.0.0.1)。这意味着所有 DNS 请求都由我自己的 DNS 服务器处理 - 它可以正常工作,我只是提到了这一点,如果这相关的话。

在任何 Linux 机器(生产等)上,我都运行 CentOS。当我尝试 curl -v “me.example.com” 或 “jira.example.com” 时,这些请求没有得到处理,我会收到请求超时的消息,有时需要大约 5 分钟左右才能收到正确的回复


有人知道我的设置出了什么问题吗?我尝试了很多方法,但都没能改善这个奇怪的问题。

先感谢您!

答案1

如果我没看错您的设置,听起来您需要拆分 DNS。从您的网络内部到本地 DNS 服务器 (10.0.0.1) 的请求将使用您的私有子网返回结果,而从您的网络外部到 DNS(在您的注册商、ISP 或 DNS Made Easy 等地方)的请求将返回公共 IP。否则,您就是在尝试从您的网络内部访问您网站的公共 IP。

相关内容