我有一个相当简单的设置,其中包括 2 个服务器和几个用户。
服务器 #1,int -> 我的应用程序所在的家庭局域网中的服务器,在本例中是 nextcloud(带有 nginx Web 服务器,可通过 HTTPS 访问)和一些其他内容。这个服务器没有可访问的外部 IP 地址,无法从我的网络外部连接到它,除非通过...
服务器 #2,ext -> 我的 LAN 之外的服务器,具有可从世界访问的 IP 地址。 两台服务器都使用 wireguard 连接通过不太好的链路相互“链接”(这在这里至关重要,因为我需要尽可能避免通过它传输数据)我认为还值得一提的是,来自我的 LAN 的连接不通过 ext 服务器路由。 (Wireguard 不是默认网关)
在我的家庭网络中,我有一个 PiHole DNS 服务,它可以覆盖 cloud.myplace.com,因此它指向我的本地网络 ip(cloud.myplace.com 也是我购买的普通域名,因此可以在我的网络外部使用它,目前它指向 ext 服务器)
为了从 LAN 外部访问服务器,我计划使用 nginx 代理,它只会在用户和我的服务器之间传递数据。因此,当连接到 LAN 时,我得到了一个直接的 https 连接,而当我在互联网上时,连接应该通过外部服务器、通过 wg vpn 代理到我的 int 服务器。对我来说,最重要的因素是我的本地应用程序在本地网络中的运行速度有多快,以及它们是否完全从 WAN 运行,而无需客户端应用程序的更改(从 LAN 到 WAN 的这种传输对它们来说应该是透明的)
但这是我有点困惑的地方...使用本地 DNS 服务指向本地 IP 的整个计划对我来说有点不对劲,感觉应该可以让 nginx 根据连接的来源来决定如何路由连接。
创建自己的 DNS 条目是个好主意吗?是否有可能有一天会困扰我?(我不知道,因为有些系统/应用程序会覆盖 DNS 或不信任某些系统/应用程序,有些应用程序可以缓存 IP?或类似的情况)或者这是一种非常健康的情况,我不必担心任何事情?
如果不是,那么在 LAN 中路由到单个实例的正确方法是什么?例如,如果我可以在远程服务器上缓存一些 NC 数据,这样就不必通过 VPN 发送所有内容,那就太完美了
希望这对你们大多数人来说都是“生计”,解决方案显而易见也很简单,我只是不知道如何找到它:) Br,Bartoszek
答案1
这是一个有效的解决方案。
您可能出于某些原因想要用本地 DNS 覆盖公共 DNS。
1. 服务器在公司内部,可以通过公网 IP 访问,但由于 NAT 发夹结构,无法通过公网 IP 在内部访问,但可以通过内部 IP 访问服务器。
在这种情况下,您可以在本地设置一个 DNS 条目,以便 URL 在所有地方都保持不变,但它在内部和外部都可以使用(例如,某人有一台笔记本电脑,并且想要在内部和外部访问它。)
2. 服务器位于公司内部,但不向公众开放。
在这种情况下,您可以设置本地 DNS 以指向内部 IP 地址,而无论是否有公共 DNS 条目都无关紧要。此外,可以设置公共 DNS 条目以指向一个网页,该网页会显示一条简短且非描述性的消息,以提醒人们除非是内部人员,否则他们无法访问该网页。(帮助 IT 人员排除故障)
3. 有公共路由,但内部用户应该连接到不同的服务器。
在这种情况下,您可以设置本地 DNS 以指向不同的服务器。例如,对于终端服务器群集,外部将指向网关服务器,但内部您可能希望连接到不同的群集或管理服务器。
只需记住在故障排除时始终 ping FQDN 并查看它是内部响应还是外部响应以找出问题所在。例如,您期望 IP 地址是内部的,但 ping 却显示外部 IP。