- Ich habe einen Server 192.168.0.3 (SERVER). Auf ihm laufen Ubuntu Server + DHCP-Server + Apache;
- Der Router 192.168.0.1 (ROUTER) (ich habe keinen Zugriff darauf);
- Ich habe eine Webanwendung auf dem SERVER zur Registrierung von Benutzern im Netzwerk, indem ich eine spezifische Konfiguration (auf dem DHCP-Server) für sie anwende;
- Benutzer befinden sich im Subnetz 192.168.0.0/16;
Ich kann den DHCP-Server so konfigurieren, dass er nicht registrierten Maschinen meinen SERVER als Standard-Gateway gibt.
Wie kann ich alsoumleitenalle eingehenden HTTP-Anfragen von nicht registrierten Maschinen an meinenlokale Web-App192.168.0.3 ?
Antwort1
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -p tcp -dport 80 -j DNAT –zum Ziel 1.2.3.4:80 iptables -t nat -A POSTROUTING -j MASQUERADE
Antwort2
Sie müssen einen speziellen DNS-Server einrichten, der alle DNS-Anfragen mit der IP Ihres Servers beantwortet, und den virtuellen Server von Apache so einrichten, dass er Anfragen für jeden Host akzeptiert (z. B. *:80 + *:443).
Der Trick besteht darin, dass der DNS-Server nach der Anmeldung korrekte DNS-Ergebnisse liefern muss und keine falschen. Sie können die Einstellungen nicht einfach erneut in DHCP ändern, da die Standard-Lease-Zeit zu lang ist und/oder Benutzer die Verbindung trennen müssen, um die neuen Einstellungen zu übernehmen.
Viele Wi-Fi-Anmeldesysteme verwenden diese Architektur, daher finden Sie möglicherweise eine Open-Source-Lösung.
Antwort3
Ich habe einen anderen Weg gefunden.
- Geben Sie nicht registrierten Maschinen den SERVER als Standard-Gateway.
- umleitenHafen 80zum Webserver mitiptables
Aber ich weiß nicht genau, wie ich das machen soll :)