Чтобы делать то, что вы хотите, я рекомендую sshuttle.
Вы используете это так:
./sshuttle -r username@sshserver 0.0.0.0/0 -vv
Он автоматически туннелирует весь ваш TCP-трафик. Вы можете добавить аргумент --dns
для туннелирования вашего DNS-трафика. На удаленном сервере должен быть установлен только Python.
Если вы хотите только туннелировать определенные программы, я бы порекомендовал прокси-цепочки.
После установки запустите прокси-сервер ssh socks следующим образом:
ssh -fND 127.0.0.1:<local port> username@sshserver
Это запустит прослушивание прокси-сервера "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