VPN за 60 секунд

Если Вы предпочитаете простые и красивые решения, или Вам нравится всё, что попадает под категорию It Just Works, то эта статья для Вас. Для запуска шифрованного подключения достаточно иметь на своем компьютере SSH-клиент, установить sshuttle (об этом чуть позже) и приобрести VPS с любым тарифным планом в интересующей Вас стране. На удалённой VPS-машине в большинстве случаев абсолютно ничего настраивать не нужно (достаточно, чтобы были установлены пакеты python и сервер SSH).
56b242fdf896476c9fe0c307eb8d1296.jpg

На своем компьютере установим sshuttle:
  • либо с помощью
    pip install sshuttle
  • либо с помощью копирования исходников с github
    git clone https://github.com/sshuttle/sshuttle.git && python setup.py install
  • пользователи debian могут это сделать так:
    apt-get install sshuttle

Далее нужно выполнить простую команду:
sudo sshuttle -r username@sshserver 0.0.0.0/0

где username — логин на удаленном виртуальном сервере, sshserver — его IP-адрес или доменное имя, параметр 0.0.0.0/0 означает, что мы собираемся добавить в нашу таблицу маршрутизации правило, благодаря которому весь исходящий трафик будет отправляться на удалённый сервер, за исключением DNS-запросов. Разработчик намеренно не включает по умолчанию этот функционал для DNS, потому что у некоторых пользователей для выхода в интернет должны использоваться провайдерские серверы разрешения имен. Если мы можем пользоваться любыми DNS-серверами, то и запросы к ним можем «завернуть» в наш шифрованный SSH-туннель:
sshuttle --dns -r username@sshserver 0.0.0.0/0

Помимо этого мы можем направлять в туннель наш исходящий трафик не полностью, а только для определенных IP-подсетей, указывая соответствующий параметр:
sshuttle -r username@sshserver 11.12.13.14/0

Преимущества этого решения в следующем:
  • у Вас нет необходимости иметь права администратора на удалённом сервере, используемом для выхода в интернет
  • Вам не нужно создавать правила SSH для форварда каждого порта

Недостаток только один (если это можно назвать недостатком): sshuttle не поддерживает Windows, пользователям этой ОС можно сделать костыль в виде VM.

Комментарии (4)

  • 29 декабря 2016 в 01:23

    0

    Какая у такого решения скорость/насколько сильно загружается процессор?

    • 29 декабря 2016 в 01:32

      0

      Локальный процессор или VPS?
      • 29 декабря 2016 в 01:58

        0

        Локальный.

    • 29 декабря 2016 в 03:01

      0

      Это сильно зависит от настроек ссш сервера, клиента, ОС с обоих сторон и опций с которым собран сервер и клиент.
      Если используется AES и в проце есть AES-ni либо используется chacha20 то проц сильно грузить не будет, но помимо шифра нужно ещё смотреть какой MAC выбран.
      Сильнее всего грузит проц сжатие трафика.

      Для скорости есть патч HPN, но его в базу OpenSSH почему то не берут.
      Ещё на скорость влияют sysctl связанные с настройкой размеров буферов, tcp_no_delay, ecn, алгоритм контроля перегрузки (cc), потери в линии, RTT.
      Не давно перекидывал файл по sshfs, получилось почти 6 мегабайт/сек по мск.
      Дома 15 мегабайт/сек, при этом ssh упирается в проц — он у меня без aes-ni (коредуо е8400) со сжатием на 6, без сжатия 60 мегабайт/сек и только половина одного ядра загружена ссш клиентом.

      В общем и целом скорость получается как у одного TCP соединения, с оверхэдом на служебку ссш.

© Habrahabr.ru