Wie können externe Anfragen von einem LAMP-Server die Zensur im Internet umgehen?

655
adempewolff

Ich hatte eine andere Frage auf der askUbuntu-Site und migrierte diese Version von einer Serverfehler- Frage, da ich denke, dass Super User der beste Ort ist, um sie zu fragen.

Hintergrund:

Ich habe eine lokale (Drupal) Entwicklungsumgebung, bestehend aus einem LAMP-Server, der auf einem virtualisierten Xubuntu 12.04-Betriebssystem mit einem Host-Betriebssystem von Ubuntu 12.04 ausgeführt wird. Überbrückte Netzwerke sind nicht aktiviert.

Ich würde gerne mit den Aspekten der Web 2.0-Integration von Drupal (z. B. Youtube- und Facebook-Integration) experimentieren. Diese Websites werden jedoch alle durch ein massives Filterregime blockiert, das zumindest IP-Blockierung, DNS-Filterung, URL-Filterung und Paket beinhaltet Filterung - und verwendet Pakete zum Zurücksetzen der Verbindung, um diese Regeln durchzusetzen. Es scheint, dass einige ISPs auch eine tiefe Paketfilterung verwenden, um SSH-Tunnel zu entdecken, deren Bandbreite dann begrenzt ist. Glücklicherweise scheint mein ISP in meiner Wohnung dies derzeit nicht zu tun. Ausländern ist es nicht untersagt, Proxies / vpns / etc zu verwenden. solange sie diese nicht verwenden, um gegen geltendes Recht zu verstoßen (dh das Verbot von Material mit chinesischen Staatsangehörigen zu teilen).

Für das normale Surfen im Internet und für andere Aufgaben, die auf blockierten Inhalt zugreifen müssen, verwende ich einen ssh-Tunnel zu einem Server (Ubuntu Server 10.04, nur mit ssh und openvpn aktiviert) in einem anderen Land als socks5-Proxy. Chromium und Firefox können beide DNS-Anfragen nativ über den socks5-Proxy senden (der erste standardmäßig und der letztere durch Ändern einer Konfigurationseinstellung). Diese Lösung funktioniert perfekt für alle browserseitigen Verbindungen zu eingeschränkten Websites.

Viele Drupal-Module für die Integration von Web 2.0 erfordern jedoch auch, dass der Server selbst die eingeschränkten externen Sites anfordert.

Meine Frage ist:

Was wäre der beste Weg, um meinen SSH-Tunnel und das Filterregime zu durchlaufen:

  • Alle externen Anfragen und DNS-Lookups von meinem Apache2-Server

oder

  • Nur die Anforderungen (und DNS-Lookups) von meinem Apache2-Server an angegebene Hosts?

Betrachtete / versuchte Lösungen

  • Die einfachste Lösung wäre die Verwendung eines LAMP-Servers auf dem Computer außerhalb des Filterregimes (desjenigen, auf den ich ssh). Ich würde es jedoch aus verschiedenen Gründen vorziehen, dies nicht zu tun (kein physischer Zugriff auf diese Maschine, falls etwas schief geht, ältere Hardware, wenn ich die Verbindung zu diesem Server verlasse, kann ich die Entwicklung nicht fortsetzen usw.)
  • Globale Proxy-Einstellungen verwenden - Xubuntu kann nach meinen Recherchen keine globalen Socks5-Einstellungen vornehmen. Ich weiß auch nicht, ob dies meine DNS-Lookups fangen würde.

  • Verwendung tsocks: Dies scheint der beste Kandidat zu sein, aber ich habe zwei Probleme / Fragen:

    1. Wo befindet sich das Skript, mit dem Apache2 gestartet / neu gestartet wird, damit ich diese Befehle vorgeben kann tsocks?

    2. Wie kann ich die DNS-Lookups über den Socks5-Proxy abfangen und umleiten?

      Das Bearbeiten der /etc/hosts/Datei bietet eine begrenzte Problemumgehung, aber Websites wie youtube.com laden Medien und andere Inhalte von so vielen externen Websites (und damit URLs), dass das Verfolgen all dieser (möglicherweise zurückgesetzten URLs) von Drittanbietern nahezu unmöglich ist. Die Verwendung socatzum Erfassen, Konvertieren und Senden von UDP-Verkehr über den socks5-Proxy (wie hier beschrieben ) scheint eine gute Lösung zu sein, aber ich konnte ihn nicht wie im verknüpften Tutorial beschrieben implementieren. (Wenn socatbestätigt wird, dass die Verwendung der richtige Weg ist, um mein Problem zu lösen, kann ich die von mir verwendeten Befehle zur Überprüfung posten.)

4
Sie möchten ein VPN, über das der gesamte Datenverkehr auf die Netzwerkschicht geleitet werden kann. Darth Android vor 12 Jahren 1
@DarthAndroid Ja, ein VPN wäre ideal. Leider konnte ich openVPN nie richtig auf meinem Server konfigurieren lassen - tatsächlich vermute ich, dass es sich bei diesem Netzwerk um ein Routerproblem handelt. Also habe ich stattdessen mit SSH angefangen, was mir jetzt eigentlich lieber ist, weil ich so wählen kann, welcher Verkehr durch den Tunnel geht und welcher nicht. adempewolff vor 12 Jahren 0
Wenn sie erfolgreich versuchen, direkte OpenVPN-Verbindungen zu verhindern, SSH jedoch nicht betroffen ist, können Sie OpenVPN über SSH tunneln. Abgesehen von der Zensur ist ein Router-Problem unwahrscheinlich, da OpenVPN normale TCP- oder UDP-Pakete verwendet. Gurken Papst vor 12 Jahren 1

1 Antwort auf die Frage

1
Michael Hampton

Apache stellt nicht wirklich die ausgehenden Verbindungen her. PHP ist. Daher muss PHP mit dem SOCKS-Proxy kommunizieren.

Relevant: https://stackoverflow.com/questions/10490962/stablishing-socket-connection-in-php-using-socks-proxy

Es wäre einfacher, wenn Sie einen HTTP-Proxy hätten, und am einfachsten mit einem VPN. Vielleicht solltest du OpenVPN noch einmal einrichten?

Alternativ können Sie Privoxy auf Ihrem Server so einrichten, dass es mit Ihrem SOCKS-Proxy kommuniziert, und dann PHP so konfigurieren, dass Privoxy als HTTP-Proxy verwendet wird.

Tolle Antwort, ich hatte noch keine Zeit, um es zu testen, aber ich habe es trotzdem als akzeptiert markiert, weil ich vermute, dass mindestens eine der möglichen Lösungen, die Sie erwähnen, meine Bedürfnisse erfüllt. Vielen Dank! adempewolff vor 12 Jahren 0