Wie kann ich meinen gesamten Netzwerkverkehr über SSH tunneln?

Wenn ich das Internet von einem unsicheren Ort (z. B. öffentlichem WLAN) aus nutze, verwende ich gerne einen SSH-Tunnel (ssh -D port host), um sicherzustellen, dass mein Datenverkehr nicht erfasst werden kann. Leider scheint es viele Anwendungen zu geben, die keine Möglichkeit bieten, einen Proxy anzugeben (Flash ist ein wichtiges Beispiel).

Es fühlt sich an, als ob es eine Möglichkeit geben sollte, einen Tunnel für den gesamten Netzwerkverkehr von meinem Computer aus zu verwenden, aber ich weiß nicht, wie das geht. Jede Hilfe wäre sehr tzt.

Author: shellster, 2009-10-29

7 answers

Um das zu tun, was Sie wollen, empfehle ich sshuttle.

Du benutzt es so:

./sshuttle -r username@sshserver 0.0.0.0/0 -vv

Es wird den gesamten TCP-Datenverkehr automatisch für Sie tunneln. Sie können das Argument --dns hinzufügen, damit es auch Ihren DNS-Datenverkehr tunnelt. Auf dem Remote-Server muss nur Python installiert sein.

Wenn Sie nur bestimmte Programme tunneln möchten, würde ich proxychains empfehlen.

Sobald es installiert ist, starten Sie Ihren ssh-socks-proxy wie dieser:

ssh -fNTD 127.0.0.1:<local port> username@sshserver

Das wird starten Sie einen" SOCKS " - Proxy, der abhört.

Dann bearbeiten Sie /etc / proxychains.conf, um auf denselben Port wie zu zeigen:

socks5 127.0.0.1 <localport>

Schließlich starten Sie Ihr Programm, das Sie Proxy-ed wie folgt wollen:

proxychains <program name>

Es sollte einfach funktionieren. Einige Programme haben jedoch Probleme mit der Arbeit mit Proxy-Ketten. Beachten Sie auch, dass Sie bei Firefox zusätzliche Elemente unter about:config ändern müssen, um DNS-Lookups über den Proxy durchzuführen, anstatt sie zu umgehen.

Als zusätzlicher Hinweis, auf Web-Browsern. Wenn sie Socks-Proxys unterstützen, müssen Sie nichts Zusätzliches tun, damit sie den oben genannten SSH-Tunnel verwenden können, geben Sie einfach 127.0.0.1 für den SOCKS-Proxy-Server und den für den Proxy-Port ein.

BEARBEITEN 3/29/16

Da dieser Beitrag immer noch einige Upvotes sieht, dachte ich, ich würde es aktualisieren. Proxychains ist immer noch in den meisten Linux-Repos und funktioniert immer noch unter Linux. Das Projekt wird jedoch effektiv aufgegeben und funktioniert nicht auf OSX. Für Linux oder OSX empfehle ich dringend ein Upgrade auf einen noch gepflegten Fork: proxychains-ng: https://github.com/rofl0r/proxychains-ng

Abgesehen davon, dass es sowohl unter Linux als auch unter OSX funktioniert, ist es einfach zu kompilieren und bietet auch eine viel bessere Unterstützung für DNS-Tunneling.

Ich sollte auch eine andere Option erwähnen, nämlich Redsocks. Es funktioniert ähnlich wie proxychains(-ng) - und ist wahrscheinlich auch in Ihrem dist repo: https://github.com/darkk/redsocks

BEARBEITEN 11/27/19 Wenn Sie die Proxychains-Route gehen, verwenden Sie bitte proxychains-ng. Es gibt einige gravierende Fehler behebt gegenüber den älteren version, wie zum Beispiel: https://github.com/rofl0r/proxychains-ng/issues/292

 73
Author: shellster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-28 00:40:47

man ssh gibt ein Beispiel dafür. Ein ssh-basiertes VPN:

SSH-BASED VIRTUAL PRIVATE NETWORKS
     ssh contains support for Virtual Private Network (VPN) tunnelling using
     the tun(4) network pseudo-device, allowing two networks to be joined
     securely.  The sshd_config(5) configuration option PermitTunnel controls
     whether the server supports this, and at what level (layer 2 or 3 traf-
     fic).

     The following example would connect client network 10.0.50.0/24 with
     remote network 10.0.99.0/24, provided that the SSH server running on the
     gateway to the remote network, at 192.168.1.15, allows it:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.0.50.1 10.0.99.1 netmask 255.255.255.252

~~ snip ~~

     Since a SSH-based setup entails a fair amount of overhead, it may be more
     suited to temporary setups, such as for wireless VPNs.  More permanent
     VPNs are better provided by tools such as ipsecctl(8) and isakmpd(8).

Sobald Sie diese neue Schnittstelle eingerichtet haben, müssen Sie sie nur noch zur Standardroute machen, was eine andere Frage ist.

 54
Author: Pricey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-07-18 10:24:01

Suchen Sie in ssh nach der Option" Tunnel". Dadurch wird ein Tunnelgerät erstellt, dem Sie eine IP-Adresse zuweisen können, und Sie ändern dann die Standardroute, um diesen Tunnel zu verwenden.

 6
Author: Peter Eisentraut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-11-01 17:40:29

Ich habe eine Software entwickelt, mit der Sie alle TCP und optional UDP systemweit über einen SOCKS5-Proxy weiterleiten können.

Http://code.google.com/p/badvpn/wiki/tun2socks

Es kann sogar auf einem Router installiert werden, um alle Verbindungen von Computern im LAN weiterzuleiten.

 4
Author: Ambroz Bizjak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-07-18 08:55:38

SSH-BASIERTE VIRTUELLE PRIVATE NETZWERKE ssh-enthält die Unterstützung für Virtual Private Network (VPN) mit Tunnelbau die tun(4) Netzwerk pseudo-Gerät, so dass zwei Netzwerke verbunden werden, sicher. Die Konfigurationsoption sshd_config (5) PermitTunnel steuert ob der Server dies unterstützt und auf welcher Ebene (Layer 2 oder 3 traf‐ fic).

 The following example would connect client network 10.0.50.0/24 with
 remote network 10.0.99.0/24 using a point-to-point connection from
 10.1.1.1 to 10.1.1.2, provided that the SSH server running on the gateway
 to the remote network, at 192.168.1.15, allows it.

 On the client:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
       # route add 10.0.99.0/24 10.1.1.2

 On the server:

       # ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
       # route add 10.0.50.0/24 10.1.1.1

 Client access may be more finely tuned via the /root/.ssh/authorized_keys
 file (see below) and the PermitRootLogin server option.  The following
 entry would permit connections on tun(4) device 1 from user “jane” and on
 tun device 2 from user “john”, if PermitRootLogin is set to
 “forced-commands-only”:

   tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
   tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john

 Since an SSH-based setup entails a fair amount of overhead, it may be
 more suited to temporary setups, such as for wireless VPNs.  More perma‐
 nent VPNs are better provided by tools such as ipsecctl(8) and
 isakmpd(8).
 0
Author: Kristian Hermansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-03-12 22:57:21

Wollte nur klarstellen, dass (ssh-D-Port-Host) keine 100% sichere Möglichkeit ist, den Datenverkehr nicht zu schnüffeln. Das Hinzufügen (ssh-D-c blowfish Port host) wäre eine bessere Wahl, da Sie Ihrer Sitzung atleast Verschlüsselung hinzufügen. Es gibt mehr Optionen, die Sie hinzufügen können, aber es ist einfach genug, nur "man ssh" in Ihrem Terminal oder Google für eine vollständige Auflistung eingeben.

Die Option, nach der Sie suchen, ist das Einrichten eines VPN (Virtual Private Network)

Schau dir das an artikel um die Unterschiede zwischen den beiden (SSH vs. VPN) oder eine gute zusammengefasste Version zu verstehen, bevor Sie mit dem Einrichten Ihres eigenen VPN beginnen. Wenn Sie sich entscheiden, die VPN-Route zu gehen, empfehle ich OpenVPN, seine kostenlose und viele Dokumentation und Unterstützung.

 -2
Author: ricbax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-10-29 01:49:50

Verwenden Sie diese Beispiele:

  • Leiten Sie Port 80 von einem Remote-Host an 8888 auf Ihrem localhost weiter

    ssh -fnN -L8888:localhost:80 user@server

    Verwenden Sie dies, um auf Dienste auf einem Remote-Host zuzugreifen, die nur dort verfügbar sind

  • Leiten Sie Port 80 von yourlocalhost an 8888 auf einem Remote-Host weiter

    ssh -fnN -R8888:localhost:80 user@server

    Verwenden Sie dies, um ther-Benutzern den Zugriff auf Ihre Dienste zu ermöglichen: Webserver oder was auch immer.

Cheers! :)

 -3
Author: kolypto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-11-01 17:47:59