VPN за 60 секунд

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



    На своем компьютере установим 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.
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 37

      +1

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

        0
        Локальный процессор или VPS?
      • UFO just landed and posted this here
          0
          Для передачи файлов часто пользуюсь "-c arcfour" — быстрее на порядок дефолтных шифров, менее безопасный, но все-же шифр.
            –1
            А чтоб вам в автомобиле не пользоваться воздушным шариком вместо подушки безопасности? более дешево и просто в эксплуатации. Что заморачиваться
              +1
              Шарик не предназначен для использования в качестве подушки безопасности. Не вводите людей в заблуждение.
        0
        stunnel — винда и линукс, но подсети не умеет
        Есть даже статья на https://habrahabr.ru/post/247167/
          0
          Насколько я понял, с задачей, рассмотренной в этой статье, справится и Putty с преднастроенным SSH-туннелем.
            –1
            Наверное в статье речь идет о маршрутизации, а путти у меет в проксирование. Не все программы могут в прокси, нужен доп.софт. А этот, вероятно, позволяет обойтись без него.
          0
          Мобильного решения нет, это сейчас большой минус.
          Я на Андроид пользуюсь SSH Tunnel, на сервере не нужно никаких настроек — только работающий SSH
            0
            Автризация через SSH ключи поддерижвается?
              0
              Ему пофиг, он просто запускает SSH, а уж какая там авторизация — неважно. Это «теория». А на практике — работает, только что пробовал.
                0
                У меня почему то не завелось.
                  0
                  А в чем это заключается?
                    0
                    sshuttle запрашивет пароль хотя обычный ssh клиент аворизуется ключами.
                      0
                      У меня он запросил локальный пароль для sudo.
              –1
              Я добавлю ложку дегтя.

              К огромному сожалению этого хватит только для нетребовательного к скорости серфинга при хорошем канале и низком пинге. TCP плохо туннелируется через TCP и потери плюс высокий пинг очень сильно просаживает скорость из-за особенности протокола в автоподстройке.Это известная проблема tcp-over-tcp.

              Хотя, как быстрое решение sshuttle просто великолепен, не нужно руками прописывать правила в iptables.

              В обем, понимайте ограничения решения. Если нужен VPN всерьез и надолго, ставьте что-то типа OpenVPN.

              И sftp тоже тормоз еще тот при высокой latency, но там другая проблема, которую не пофиксят уже не первый десяток лет AFAIK. В итоге на канале США-Европа скорость sftp падает до 20кб\сек там, где ftp/s дает 100мбит не надуваясь.

              Поэтому многие советы по ssh-туннеленгу и даже советы обеспечения безопасности через вывешивание сервера на локалхост и затем ssh-туннель они несколько вредительские, т.к. забывают о проблеме скорости.

              P.S. Нагрузка на современных процессорах смешная, т.к. там гибридное шифрование, в основном шифрование потока данных на AES, а он мало того, что феерически быстрый, так еще и аппаратно ускорен. Скажем так, 200 мбайт\сек (не мбит) ваш проц выдаст не надуваясь. Да и EC и RSA, ходят байки, ускорен на consumer segment, но мне кажется лектор по безопасности загнался.
                +3
                По поводу скорости: нашёл только одно более-менее нормальное сравнение OpenVPN vs SSH.
                  0
                  Для веб серфинга можно использовать Оперу, которая с недавних пор имеет встроенный ВПН.
                    0
                    В итоге на канале США-Европа скорость sftp падает до 20кб\сек там, где ftp/s дает 100мбит не надуваясь.


                    Когда-то столкнулся с тем, что при перекачке больших объемов данных даже простой ftp не выбирал имеющуюся полосу и близко. Поискал, нашел и с тех пор пользуюсь bbcp. Очень рекомендую. Выжимает из канала всё.
                      0
                      https://github.com/trailofbits/algo
                        0
                        sshuttle assembles the TCP stream locally, multiplexes it statefully over an ssh session, and disassembles it back into packets at the other end. So it never ends up doing TCP-over-TCP. It’s just data-over-TCP, which is safe.
                        0
                        Для информации, ocserv(сервер)+openconnect(клиент) можно настроить практически так-же быстро.
                        1) Установка сервера и клиента
                        2) сгенерить серверный ключ и сертификат: одна команда openssl
                        (а лучше скормить ему готовый сертификат от letsencrypt )
                        3) Убрать комент на паре линий в настройке сервера (активировать PAM аутентификацию + дать путь на server-cert/key)
                        4) использовать клиент: openconnect remote_server
                        5) профит :)

                        Но решение автора тоже интересна. Именно тем что не надо быть админом на сервере. Спасибо за информацию.
                          0
                          При использовании ssh по сути не нужно даже на сервере команд выполнять. Вбиваешь логин и пароль в локальный прокси и всё.
                          • UFO just landed and posted this here
                            0
                            Не забывайте, что это, вероятно, единственный простой способ на Windows удобно направлять в туннель только тот трафик который вы хотите. Допустим весь сёрфинг в туннель, а YouTube напрямую. Для этого нужно настроить или программы «проксифаеры» или дополнение к браузеру, например foxyproxy
                              0

                              Под windows для аналогичной задачи можно воспользоваться badvpn-tun2socks. Единственный drawback то, что по дефолту оно поддерживает только tcp соединения, дропая udp, но если поставить badvpn-udpgw на сервере и соответственно всё настроить (там не очень сложно), то можно и udp тоже так прокинуть. К сожалению ничего кроме tcp или udp таким способом не прокинуть, но это и не так часто требуется, а если уж потребуется можно и полноценный vpn сервер поднять.

                                0
                                Про It just works — InstaVPN. Поднял года полтора назад — ни единого нарекания.
                                  0
                                  Если речь идет о простом серфинге без заморочек — чем плох Betternet?
                                    0
                                    В Betternet можно выбрать страну? Есть Россия?
                                      0
                                      USA & UK
                                    0
                                    На Виндовс я поднимал реверсный SSH-туннель (при помощи PuTTY), который в браузер прописывался как прокси, работает на ура.
                                      0
                                      Ubuntu 16.04, ядро 4.8.12.5. Поставл apt install sshuttle (встала 0.76)
                                      При попытке соединиться получаю:
                                      iptables v1.6.0: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
                                      Perhaps iptables or your kernel needs to be upgraded.

                                      Попробовал вручную поставить 0.78.1, тоже самое. Что я делаю не так?
                                        0
                                        Какая виртуализация на хостинге? Обычно дело в OpenVZ, для решения этой проблемы необходимо написать в саппорт хостинга, чтобы они включили поддержку NAT.
                                        0
                                        А кто-то может объяснить, чем решение в посте отличается от проброса портов (port forwarding) через ssh, которое умеет любой ssh клиент?
                                          0
                                          Тем, что решение в посте умеет пробрасывать все порты, о чем написано в конце статьи.

                                        Only users with full accounts can post comments. Log in, please.