- 我有一台伺服器192.168.0.3(伺服器)。運行Ubuntu伺服器+DHCP伺服器+Apache;
- 路由器192.168.0.1(ROUTER)(我無法存取它);
- 我在伺服器上有一個網路應用程序,用於透過為網路中的用戶應用特定配置(在 DHCP 伺服器中)來註冊用戶;
- 用戶在子網路192.168.0.0/16內;
我可以設定 DHCP 伺服器,為未註冊的電腦提供我的伺服器作為預設網關。
那我怎麼樣才能重定向所有從未註冊機器到我的傳入 http 請求本地網路應用程式192.168.0.3?
答案1
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -p tcp -dport 80 -j DNAT –to-destination 1.2.3.4:80 iptables -t nat -A POSTROUTING -jj MASQUEE
答案2
您必須設定一個特殊的 DNS 伺服器,用您的伺服器 IP 回應所有 DNS 查詢,並設定 Apache 的虛擬伺服器來接受任何主機的請求(即 *:80 + *:443)。
訣竅是,登入後,DNS 伺服器必須開始提供正確的 DNS 結果,而不是虛假的結果。您不能簡單地在 DHCP 中再次更改設置,因為預設租用時間將太長和/或用戶必須斷開連接才能獲取新設置。
許多Wi-Fi登入系統都使用這種架構,因此您也許可以找到開源解決方案。
答案3
我找到了另一種方法。
- 將未註冊的機器設定為 SERVER 作為預設閘道。
- 重定向端口80到網頁伺服器使用iptables
但我不知道具體該怎麼做:)