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

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

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

108
задан shellster 2009-10-29 03:51:34
источник

7 ответов

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

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

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

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

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

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

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 и <локальный порт> для порта прокси.

EDIT 3/29/16

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

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

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

54
отвечен shellster 2018-08-01 18:13:47
источник

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

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

44
отвечен PriceChild 2011-07-18 14:24:01
источник

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

7
отвечен Peter Eisentraut 2009-11-01 20:40:29
источник

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

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

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

4
отвечен Ambroz Bizjak 2011-07-18 12:55:38
источник

просто хотел прояснить, что (SSH-D порт хоста) не является 100% безопасный способ для трафика, Чтобы не быть обнюхали. Добавление (SSH-d-c blowfish port host) было бы лучшим выбором, потому что вы, по крайней мере, добавляете шифрование в свой сеанс. Есть больше вариантов, которые вы могли бы добавить, но это достаточно легко просто ввести "человек ssh" в вашем терминале или Google для полного списка.

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

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

-1
отвечен ricbax 2009-10-29 04:49:50
источник

ВИРТУАЛЬНЫЕ ЧАСТНЫЕ СЕТИ НА ОСНОВЕ SSH ssh содержит поддержку туннелирования виртуальной частной сети (VPN) с помощью tun (4) сетевое псевдо-устройство, позволяющее объединить две сети в безопасности. Элементы управления параметра конфигурации sshd_config (5) PermitTunnel поддерживает ли сервер это, и на каком уровне (Уровень 2 или 3 traf‐ фик.)

 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).
-1
отвечен Kristian Hermansen 2013-03-13 02:57:21
источник

используйте следующие примеры:

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

    ssh -fnN -L8888:localhost:80 [email protected]

    используйте это для доступа к сервисам на удаленном хосте, которые доступны только там

  • перенаправить порт 80 с yourlocalhost на 8888 на удаленном хосте

    ssh -fnN -R8888:localhost:80 [email protected]

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

Ура! :)

-3
отвечен kolypto 2009-11-01 20:47:59
источник

Другие вопросы linux ssh tunnel proxy socks

X