將所有流量重定向到 NAT 後面的指定主機

將所有流量重定向到 NAT 後面的指定主機

是否可以將所有流量重新導向到 NAT 後面的指定主機?

例如,我有一個伺服器、一個網域「mydomain.com」和 NAT 後面的 3 個主機。我想配置3個子網域:

host1.mydomain.com
host2.mydomain.com
host2.mydomain.com
以及它們中的每一個將所有連接埠重定向到本地網路中的指定主機。

此重定向應該提供如下功能:
http://host1.mydomain.com(可以使用apache實作)
ssh[電子郵件受保護](???)
和不同連接埠上的其他協議

謝謝你的幫忙。

答案1

對於 HTTP 和 HTTPS,可以使用「反向代理」來完成此操作,該「反向代理」檢查 HTTP 請求中的主機標頭訊息,以取得適當的內容並將其傳回。微軟的 ISA(網路安全和加速)可以做到這一點,Linux 上的 apache/squid 也可以。

對於所有其他端口,您會遇到困難,因為大多數流量不包含所需的主機名,而僅包含目標IP(例如:“我想通過SSH 連接到1.2.3.4”,而不是“我想通過SSH連接到 host1.mydomain”。com)

將特定外部連接埠對應到內部連接埠很容易(連接埠 22 -> host1:22、連接埠 23 到 host2:22、連接埠 24 -> host3:22 等),有時這就是所需要的。

如果您確實需要將所有連接埠對應到不同的內部伺服器,您將需要多個外部 IP 位址,大多數 ISP 都可以提供(至少如果您有業務連線)

答案2

阿帕契mod_proxy?

答案3

不,不可能根據 DNS 名稱進行連接埠轉送。網域名稱不是 IP 封包的一部分,因此您的路由器無法使用它來區分傳入連線。

當遠端主機連接到 host1.mydomain.com 時,它會將此名稱解析為 IP 位址,並將其放入 IP 封包中。如果 host2.mydomain.com 解析為相同的 IP 位址,則建置的封包將與 host1.mydomain.com 完全相同。

因此,當您的伺服器上配置了多個 IP 位址時,就有可能發生這種情況。

Apache可以區分傳入的域名,但那是在應用程式層級。在 HTTP 1.1 中,瀏覽器將在 HTTP 標頭中傳送域名,apache 可以使用虛擬主機對其進行過濾。

相關內容