Debian
NAT後面的Web伺服器,如何監聽公共IP地址
我有一個使用 NAT 在防火牆後面執行的 debian Web 伺服器 (nginx)。Web 伺服器託管了多個需要 SSL 和它們自己的 IP 地址的站點。我想讓 SSL 站點只監聽它們的特定 IP 地址,而共享站點只監聽共享 IP。
現在我正在收聽所有域的萬用字元 *,我認為這意味著它正在收聽單個 LAN 地址並根據主機名而不是 IP 地址提供站點內容。我想糾正這一點。
正確的做法是什麼?是否為每個 IP 地址創建 1:1 NAT 並將 LAN IP 添加到網路介面以進行偵聽,然後將 LAN IP 分配給特定域?或者,還有更好的方法?有沒有辦法傳遞公共 IP 並據此採取行動?謝謝。
不,您在完成 NAT 後無法通過原始目標 IP 地址,至少不能直接通過。
我將使用 192.0.2.0/24 作為您的外部 IP 塊,並將 198.51.100.0/24 作為您的內部 IP 塊(請參閱 RFC5737)。
您可以做的一些事情包括:
- 將每個外部 IP 上的目標埠 NAT 到內部 IP 上的一組不同埠。例如,NAT 192.0.2.1:80 和 192.0.2.1:443 到 198.51.100.1:80 和 198.51.100.1:443,然後 NAT 192.0.2.2:80 和 192.0.2.2:443 到 198.51.100.1:81 和 198.51 .100.1:444。將 Web 伺服器配置為在不同埠上偵聽相應服務。請務必選擇未用於其他任何用途的埠並檢查您的防火牆設置。
- 為 Web 伺服器分配額外的內部 IP。例如,分配 Web 伺服器 198.51.100.1 和 198.51.100.2。將適當的外部 IP/埠對 NAT 到相應的內部 IP/埠對(例如 192.0.2.1 到 198.51.100.1 和 192.0.2.2 到 198.51.100.2)。指導 nginx 將適當的服務綁定到適當的內部 IP。
如果您使用後一種解決方案,您的環境將更簡單且更符合標準,因為您不會處理不尋常的埠號和埠轉換,但您需要為每個網路伺服器分配多個內部 IP(我猜你有只有一個)。此外,如果您使用後一種解決方案,您可以使用 1:1 NAT。
也就是說,如果您根本沒有任何理由將 Web 伺服器放在 NAT 後面(NAT 不是防火牆),只需監聽外部 IP(這樣做也需要更改拓撲)。