我的情况是这样的;我在我们的联合网络解决方案中托管了许多网站。网络上基本上是3类:
- 已知公众,通过 mac 注册,给予静态 dhcp 租约
- 匿名 LAN 连接,给定特定 dhcp 范围的租约
- 交换机,unix主机防火墙
现在,考虑关注感兴趣的主机
- 111.111.111.111(合沃尔USG 300广域网)
- 192.168.1.1 (ZyWall USG 300 LAN) 负载平衡和 bw 监视器以及处理 NAT
- 192.168.1.2 (Linux www) 服务于 mydomain1.tld 和 mydomain2.tld
- 192.168.123.123(随机局域网客户端)从局域网访问mydomain1.tld
- 23.234.12.253(随机外部客户端)通过 WAN 访问 mydomain1.tld
设置 DNS A 记录,以便 mydomain1.tld 和 mydomain2.tld 都指向 111.111.111.111 - Linux www 为具有 VirtualHost 配置的 http 部分提供服务,设置文档根 pr ServerName,但这并不是很有趣。
NAT 规则将 111.111.111.111:80 转换为 192.168.1.2:80 (1:1 NAT),如下所示:
- 类型:虚拟服务器
- 接口:广域网
- 原IP:任意
- 映射IP:192.168.1.2
- 原始端口:80
- 映射端口:80
当 NAT-Loopback 被激活时,它会导致设备无法从外部接口访问(虽然没有尝试过,如果它使 LAN -> WAN IP:80 工作)
我们的问题如下;
当从外部访问http://mydomain1.tld(23.234.12.253 示例主机)联合网络时 - 一切正常,zywall 通过端口 80 接收请求并将其映射到 linux 主机的 httpd。但是 - 一旦尝试从 LAN 端(内部,192.168.123.123 示例主机)通过 NAT,就会在 Zywall 端口 80 防火墙中被过滤。
我知道这只是因为端口 443 对管理界面开放并且https://mydomain1.tld提示 zywall 登录。
所以我的结论是,访问 111.111.111.111 的 LAN 实际上被路由到 192.168.1.1,同时绕过了 NAT 表。
我需要知道如何设置 NAT / 策略路由,以便 LAN > WAN > LAN 可以通过适当的网络转换运行,而不是进行“快速名称服务器查找”或其他可能的操作。
解决方案最终是维护内部 DNS 查找表(很像一个 /etc/hosts 文件),我在其中放入 mydomainX.tld 并将其映射到他们适当的 IP。虽然我想解决这个问题并且有赏金对于允许 LAN -> WAN IP 的答案:PORT 通过 NAT 表
因此,我自己为此苦苦挣扎,并找到了答案。要使这项工作使用标准 NAT 规则(与允许世界访问该网站的规则相同),只需调整规则,使原始 IP 为 WAN IP。然后你可以启用 NAT 环回并且一切正常。
如果您有更多问题,请告诉我。