將網域或子網域指向某些 IP 是很常見的。
然而,我想做相反的事:
我想將 IP 42.42.42.42 指向子網域,EG 指向 test.example.com,這樣當我造訪 42.42.42.42 時,它會顯示 test.example.com 的內容。
我嘗試編輯 /etc/hosts 但它不起作用,似乎你無法將 IP 指向子網域。
任何想法 ?我所有的谷歌搜尋都會引導我找到解釋如何將網域重定向到 IP 的教程...但我只需要相反的
更新:我不擁有IP,也不擁有域名
答案1
您不需要 DNS。
只需將 IP 作為別名添加到test.example.com
httpd 配置中的伺服器區塊即可。
阿帕契的例子:
<VirtualHost *:80>
DocumentRoot "/www/example1"
ServerName test.example.com
ServerAlias 42.42.42.42
# Other directives here
</VirtualHost>
答案2
將[子]網域指向 IP 位址很容易,因為將主機名稱解析為 IP 位址是建立 HTTP 連線的正常程序的一部分。
將 IP 位址指向另一個網域名稱實際上需要在該過程中引入另一輪 DNS 解析。這可以在 HTTP 協定層級完成:這就是 HTTP 重新導向...但這需要控制 42.42.42.42 IP 位址的目標系統。任何較低的協定層實際上都沒有能力引入另一輪 DNS 解析。但如果您提前查找 test.example.com 的 IP 位址,則可以用其 IP 位址取代 42.42.42.42。
如果您想要重新導向 IP 位址,您幾乎需要控制用戶端系統、其網路或持有您想要重新導向的 IP 位址的系統。由於您說您無法控制目標 IP 位址,因此您需要在用戶端進行控制。
如果您控制用戶端系統,則可以使用iptables
OUTPUT 規則鏈中的 DNAT 規則將流量從 42.42.42.42 重定向到目標 FQDN。如果這樣做,當您配置規則時,目標 FQDN 的名稱解析只會發生一次:因此重定向實際上是將一個 IP 位址替換為另一個 IP 位址。客戶端的規則如下:
iptables -t nat -A OUTPUT -p tcp -d 42.42.42.42 --dport 80 -j DNAT --to-destination test.example.com:80
如果您控制客戶端的網絡,那麼您也可以選擇在常規 WWW 代理(如果客戶端配置為使用您可以控制的代理)或透明代理(如果沒有明確代理配置)中執行重定向。