(Zywall USG 300) 從 LAN 通過域名訪問內部伺服器時繞過 NAT
我的情況是這樣的;我在我們的聯合網路解決方案中託管了許多網站。在網路上基本上是3類:
- 已知公眾,通過 mac 註冊,給定靜態 dhcp 租約
- 匿名 lan 連接,給定來自特定 dhcp 範圍的租約
- 交換機,unix主機防火牆
現在,考慮關注感興趣的主機
- 111.111.111.111(Zywall 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 工作)
我們的問題如下;
當從外部(23.234.12.253 範例主機)訪問聯合網路的http://mydomain1.tld時 - 一切正常,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 的答案:埠通過 NAT 表
所以我自己為此苦苦掙扎,我想出了答案。要使這項工作使用標準 NAT 規則(允許世界訪問網站的相同規則),只需調整規則,使原始 IP 為 WAN IP。然後您可以啟用 NAT 環回,一切正常。
如果您有更多問題,請告訴我。