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

Как я могу туннелировать весь сетевой трафик через SSH?

Всякий раз, когда я использую интернет из небезопасного места (например, публичный wifi), я люблю использовать ssh туннель (ssh -D port host), чтобы убедиться, что мой трафик не может быть обнюхан. К сожалению, кажется, что есть много приложений, которые не предоставляют способ указать прокси (Flash - один из основных примеров).

Кажется, что должен быть какой-то способ использовать туннель для all сетевого трафика с моего компьютера, но я совершенно не знаю, как это сделать. Любая помощь была бы очень признательна.

Ответы (7)

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

Чтобы сделать то, что вы хотите, я рекомендую sshuttle .

Вы используете его вот так:

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

Он автоматически туннелирует для вас весь ваш TCP-трафик. Вы можете добавить аргумент --dns, чтобы он также туннелировал ваш DNS трафик. На удаленном сервере должен быть установлен только Python.

Если вы хотите туннелировать только определенные программы, я бы порекомендовал прокси-серверы .

После установки запустите ssh socks прокси так:

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

Это запустит “SOCKS” прокси прослушивание на <local port>.

Затем отредактируйте /etc/proxychains.conf, чтобы указать на тот же порт, что и <local port>.

Наконец-то запустите вашу программу, которую вы хотите проксировать таким образом:

proxychains <program name>

Она должна просто работать. Однако, несколько программ будут иметь проблемы при работе с Proxy Chains. Также имейте в виду, что в Firefox, вы должны изменить дополнительные элементы в about:config, чтобы заставить его выполнять DNS поиск через прокси вместо того, чтобы обходить его.

В качестве дополнительного примечания, в веб-браузерах. Если они поддерживают socks прокси, вам не нужно делать ничего дополнительного, чтобы заставить их использовать вышеуказанный, ssh туннель, просто введите 127.0.0.1 для SOCKS прокси сервера и <local port> для прокси порта.

EDIT 3/29/16

Так как в этом посте все еще видны некоторые upvotes, я решил его обновить. Proxychains все еще находится в большинстве репозиториев Linux и все еще работает под Linux. Однако, проект фактически заброшен и не работает на OSX. Для Linux или OSX я настоятельно рекомендую обновиться до до сих пор поддерживаемой развилки: proxyychains-ng: https://github.com/rofl0r/proxychains-ng

Помимо того, что он работает как в Linux, так и в OSX, он легко компилируется, а также имеет гораздо лучшую поддержку туннелирования DNS.

Следует также упомянуть еще один вариант - redsocks. Он работает аналогично прокси-серверу(-ng), а также, скорее всего, в вашем дистрибутиве: https://github.com/darkk/redsocks

EDIT 11/27/19 Если вы идёте по маршруту прокси-серверов, пожалуйста, используйте прокси-серверы-ng. Есть несколько серьезных исправлений по сравнению с устаревшей версией, например: https://github.com/rofl0r/proxychains-ng/issues/292

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

man ssh приводит пример именно этого. vpn на основе ssh:

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).

После того, как вы запустили новый интерфейс, вам просто нужно сделать его маршрутом по умолчанию, что является другим вопросом.

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

Ищите опцию “Тоннель” в ssh. Это создает туннельное устройство, которому вы можете присвоить IP-адрес, а затем изменить маршрут по умолчанию, чтобы использовать этот туннель.

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

Я разработал программное обеспечение, которое позволяет пересылать все TCP и, опционально, UDP через SOCKS5 прокси, в масштабе всей системы. http://code.google.com/p/badvpn/wiki/tun2socks

Оно даже может быть установлено на маршрутизаторе для переадресации всех соединений с компьютеров в локальной сети.

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

SSH-BASED VIRTUAL PRIVATE NETWORKS ssh содержит поддержку туннелирования виртуальных частных сетей (VPN) с помощью псевдо-устройства tun(4), позволяющего безопасно соединять две сети. Опция конфигурации sshd_config(5) PermitTunnel контролирует, поддерживает ли сервер это и на каком уровне (уровень 2 или 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).
-2
-2
-2
2009-10-29 01:43:30 +0000

Просто хотел уточнить, что (ssh -D port host) не является 100% безопасным способом не прослушивать трафик. Добавление (ssh -D -c хост порта минет) было бы лучшим выбором, потому что вы, по крайней мере, добавляете шифрование в ваш сеанс. Есть и другие варианты, которые вы можете добавить, но достаточно просто набрать “man ssh” в вашем терминале или Google для получения полного списка.

Опция, которую я думаю, что вы ищете, это настройка VPN (Virtual Private Network)

Взгляните на эту статью, чтобы понять разницу между двумя SSH vs. VPN ) или хорошей summar version , прежде чем вы приступите к настройке своей собственной VPN. Если вы все-таки решили пойти по VPN маршруту, я рекомендую OpenVPN , его бесплатную и кучу документации и поддержки.

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

Используйте эти примеры:

  • Переадресация порта 80 с удаленного хоста на 8888 на локальном хосте

  • Переадресация порта 80 с вашего локального хоста на 8888 на удаленном хосте

Cheers! :)

Похожие вопросы

6
10
19
12
7