it-swarm-ru.tech

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

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

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

111
Guest

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

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

./sshuttle -r [email protected] 0.0.0.0/0 -vv

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

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

После установки запустите прокси-сервер ssh socks следующим образом:

ssh -fND 127.0.0.1:<local port> [email protected]

Это запустит прослушивание прокси-сервера «SOCKS» на <локальный порт>.

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

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

proxychains <program name>

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

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

РЕДАКТИРОВАТЬ 3/29/16

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

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

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

56
shellster

man ssh приводит пример именно этого. ВПН на основе 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).

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

48
PriceChild

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

6
Peter Eisentraut

Я разработал программное обеспечение, которое позволяет пересылать все TCP и, при необходимости, UDP через прокси-сервер SOCKS5 для всей системы.

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

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

4
Ambroz Bizjak