2009-10-29 00:51:34 +0000 2009-10-29 00:51:34 +0000
120
120

Wie kann ich meinen gesamten Netzwerkverkehr über SSH tunneln?

Immer wenn ich das Internet von einem unsicheren Ort aus nutze (z. B. öffentliches WLAN), verwende ich gerne einen ssh-Tunnel (ssh -D port host), um sicherzustellen, dass mein Datenverkehr nicht abgehört werden kann. Leider scheint es viele Anwendungen zu geben, die keine Möglichkeit zur Angabe eines Proxys bieten (Flash ist ein wichtiges Beispiel).

Ich habe das Gefühl, dass es eine Möglichkeit geben sollte, einen Tunnel für allen Netzwerkverkehr von meinem Computer aus zu verwenden, aber ich weiß nicht, wie man das macht. Jede Hilfe wäre mir sehr willkommen.

Antworten (7)

65
65
65
2014-05-23 16:08:57 +0000

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

Sie verwenden es wie folgt:

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

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

Wenn Sie nur bestimmte Programme tunneln wollen, würde ich proxychains empfehlen.

Sobald es installiert ist, starten Sie Ihren ssh-Socken-Proxy wie folgt:

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

Dies wird einen “SOCKS”-Proxy starten, der auf <lokalen Port> lauscht.

Bearbeiten Sie dann /etc/proxychains.conf, um auf denselben Port wie <local port> zu verweisen.

Starten Sie schließlich Ihr Programm, das Sie proxy-ed möchten, wie folgt:

proxychains <program name>

Es sollte einfach funktionieren. Einige wenige Programme haben jedoch Probleme mit Proxy-Ketten. Denken Sie auch daran, dass Sie bei Firefox zusätzliche Einträge unter about:config ändern müssen, um ihn zu zwingen, DNS-Lookups über den Proxy durchzuführen, anstatt ihn zu umgehen.

Als zusätzliche Anmerkung zu Webbrowsern. Wenn diese Socks-Proxys unterstützen, müssen Sie nichts Zusätzliches tun, um sie dazu zu bringen, den oben erwähnten ssh-Tunnel zu verwenden. Geben Sie einfach 127.0.0.1 für den SOCKS-Proxy-Server und den <local port> für den Proxy-Port ein.

EDIT 3/29/16

Da dieser Beitrag immer noch einige Upvotes erhält, dachte ich, ich aktualisiere ihn. Proxychains ist immer noch in den meisten Linux-Repos und funktioniert immer noch unter Linux. Allerdings ist das Projekt effektiv aufgegeben und funktioniert nicht unter OSX. Sowohl für Linux als auch für 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 hat auch eine viel bessere Unterstützung für DNS-Tunneling.

Ich sollte noch eine weitere Option erwähnen, nämlich redsocks. Es funktioniert ähnlich wie proxychains(-ng) und befindet sich wahrscheinlich auch in Ihrem Dist-Repo: https://github.com/darkk/redsocks

EDIT 27.11.19 Wenn Sie den Weg über proxychains gehen, verwenden Sie bitte proxychains-ng. Es gibt einige schwerwiegende Fehlerkorrekturen gegenüber der Legacy-Version: https://github.com/rofl0r/proxychains-ng/issues/292

50
50
50
2011-07-18 10:24:01 +0000

man ssh gibt ein Beispiel für genau dies. Ein ssh-basierter 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.

6
6
6
2009-11-01 17:40:29 +0000

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

4
4
4
2011-07-18 08:55:38 +0000

Ich habe eine Software entwickelt, mit der Sie alle TCP- und optional UDP-Verbindungen systemweit über einen SOCKS5-Proxy weiterleiten können. http://code.google.com/p/badvpn/wiki/tun2socks

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

0
0
0
2013-03-12 22:57:21 +0000

SSH-BASIERTE VIRTUELLE PRIVATE NETZWERKE ssh enthält Unterstützung für das Tunneln von virtuellen privaten Netzwerken (VPN) mit dem Netzwerk-Pseudogerät tun(4), wodurch zwei Netzwerke sicher verbunden werden können. Die sshd_config(5)-Konfigurationsoption PermitTunnel steuert, ob der Server dies unterstützt und auf welcher Ebene (Datenverkehr der Schicht 2 oder 3).

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).
-2
-2
-2
2009-10-29 01:43:30 +0000

Ich wollte nur klarstellen, dass (ssh -D port host) keine 100 % sichere Methode ist, damit der Datenverkehr nicht abgehört werden kann. Das Hinzufügen von (ssh -D -c blowfish port host) wäre eine bessere Wahl, da Sie zumindest Ihre Sitzung verschlüsseln. Es gibt noch weitere Optionen, die Sie hinzufügen könnten, aber es ist einfach genug, “man ssh” in Ihr Terminal einzugeben oder Google für eine vollständige Auflistung zu nutzen.

Die Option, nach der Sie suchen, ist die Einrichtung eines VPN (Virtual Private Network)

Schauen Sie sich diesen Artikel an, um den Unterschied zwischen den beiden SSH vs. VPN ) oder eine gute zusammengefasste Version zu verstehen, bevor Sie die Einrichtung Ihres eigenen VPN in Angriff nehmen. Wenn Sie sich für die VPN-Route entscheiden, empfehle ich OpenVPN , es ist kostenlos und es gibt eine Menge Dokumentation und Support.

-3
-3
-3
2009-11-01 17:47:59 +0000

Verwenden Sie diese Beispiele:

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

  • Leiten Sie Port 80 von Ihremlocalhost an 8888 auf einem entfernten Host weiter

Prost! :)