ФЗ-187: Наиболее правильный обход блокировок

Поделиться ВКонтакте
+1

ВНИМАНИЕ! ДОСТУПНА НОВАЯ ВЕРСИЯ МАНУАЛА!

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

Интро

Про Федеральный Закон №187 не писал только ленивый. И, несмотря на то, что большинство айтишников всегда найдут как выкрутиться из любой ситуации, под удар попадают ни в чем не повинные пользователи сети Интернет. Данный пост призван решить эту проблему и помочь большинству посредством пошаговой максимально подробной инструкции.

(!) Вам может показаться, что это большая и страшная статья, и что ничего у вас не получится — сразу скажу — это не так. Расписан буквально каждый шаг, а в результате вы не только получите возможность пользоваться незаконно заблокированными сайтами, но и сумеете зашифровать свой трафик и предотвратить возможную утечку паролей и персональных данных (например, в случае если вы пользуетесь открытыми сетями Wi-Fi в кафе).

Итак, поехали…

Шаг #1

Первым делом, нам необходимо приобрести (арендовать) сервер. Я рекомендую воспользоваться услугами компании Digital Ocean. Сервер начального уровня будет стоить всего $5/месяц. Причем сразу платить не надо.

Создаем аккаунт Digital Ocean

  1. Заходим на сайт Digital Ocean по этой ссылке (вам не сложно, а мне приятно);
  2. Нажимаем оранжевую кнопку «Sign Up» справа вверху;
  3. Вводим свой e-mail, затем придумываем и вводим пароль;
  4. Нажимаем на кнопку «Create my account»;
  5. После чего автоматически попадаем в панель управления…

Настраиваем аккаунт Digital Ocean

Все данные, которые вы будете вводить на сайте, заполняются по-английски (транслитом).

  1. Нажимаем большую зеленую кнопку «Get Started»;
  2. Автоматически попадаем на страницу «Payment Methods»;
  3. В поле «First Name» пишем ваше реальное имя;
  4. В поле «Last Name» пишем вашу реальную фамилию;
  5. В поле «Street Address» пишем вашу улицу, номер дома и номер квартиры (если есть);
  6. В поле «City» указываем город вашего проживания;
  7. В поле «State» указываем область вашего проживания;
  8. В поле «Postal Code» указываем ваш почтовый индекс;
  9. Из выпадающего списка выбираем страну Russian Federation;
  10. В поле «Phone Number» указываем ваш мобильный телефон;
  11. В поле «Credit Card Number» указываем номер вашей пластиковой карты*;
  12. В поле «CVV» указываем трехзначный код, указан на оборотной стороне карты;
  13. В поле «Expires MM / YYYY» указываем срок действия карты;
  14. В поле «Please enter a name for this credit card» вводим имя, как указано на карте**;
  15. Жмем большую зеленую кнопку «ADD CREDIT CARD».

*Если пластиковой карты нет, или вы опасаетесь использовать свою основную карту, то можно зарегистрироваться и выпустить виртуальную карту QIWI.
**Если карта виртуальная, то вводим просто ваше имя транслитом.

Вуаля! Платежная информация принята сервисом (при этом никаких списаний с карты не происходит). Теперь самое время перейти к созданию нашего облачного сервера и его настройке. Продолжим!

Создаем сервер

  1. Нажимаем синюю кнопку «Create Droplet» или «Create» слева в меню;
  2. В поле «Hostname» вводим имя будущего сервера. Любое;
  3. В разделе «Select Size» оставляем все, как есть — должно быть выбрано 512 MB / 1 CPU, 20 GB SSD DISK, 1 TB TRANSFER;
  4. В разделе «Select Region» выбираем Amsterdam 1, т.к. это ближе к нам, чем прочие;
  5. В разделе «Select Image» выбираем Ubuntu 12.04 x32 (меньше памяти жрет);
  6. Жмем на большую зеленую кнопку «Create Droplet» внизу.

После небольшого ожидания — машина создана. Данные по доступу к этой машине (логин, пароль и IP-адрес) отправлены на ваш e-mail, который вы указали при регистрации. Проверьте его и продолжим.

Настраиваем сервер

В момент написания этой статьи, я работаю на машине под управлением Microsoft Windows 7 и для взаимодействия с сервером буду использовать клиент PuTTY. Его можно скачать здесь. Едем дальше…

  1. Запустите PuTTY;
  2. В меню «Session» в поле «Host Name» введите IP-адрес вашего сервера;
  3. В поле «Saved Sessions» введите имя вашего сервера;
  4. В настройках «Window > Translation» выставьте кодировку UTF-8;
  5. В меню «Connection > Data > Auto-login username» укажите «root» (без кавычек);
  6. Вернитесь в меню «Session» и нажмите кнопку «Save»;
  7. Затем выберите в списке ваш сервер и нажмите кнопку «Open»;
  8. Появится (только первый раз) окно «PuTTY Security Alert», нажмите «Да»;

Если вы все сделали правильно, то соединение с вашим сервером успешно установится и вы увидите примерно следующее:

Несмотря на то, что большинство команд будет вводиться именно из консоли (PuTTY), нам все же понадобится файловый менеджер, который называется Midnight Commander. По умолчанию, на вашем сервере его пока нет, поэтому его следует установить, выполнив команду:

На вопрос:

Отвечаем «y» (без кавычек) и жмем «Enter». Все, Midnight Commander установлен. Далее нам необходимо установить сервис OpenVPN, который и позволит нам обходить блокировки. Выполним команду:

Затем последовательно выполним эти команды:

Запустите Midnight Commander, просто введите в консоли команду:

Если вы еще не находитесь там, то перейдите в каталог:

Необходимо отредактировать файл «*vars», без этих правок мы не сможем создать сертификат. Наведите курсор на файл и нажмите кнопку F4. Midnight Commander задаст вам вопрос, какой редактор использовать. Дабы не запутаться, используйте встроенный редактор самого MC. Вводим цифру 2 и жмем кнопку «Enter». Находим на 29-й строке запись:

Меняем ее на:

Затем дважды нажимаем клавишу «Esc» («Escape») и на вопрос MC отвечаем «Yes». Нажимаем кнопку F10 и выходим из Midnight Commander.

Теперь необходимо произвести инициализацию скрипта:

Далее необходимо создать CA сертификат и ключ. Данные не вводим, везде жмем «Enter» (здесь и далее при генерации сертификатов и ключей это важно):

Теперь необходимо создать сертификат/ключ для сервера:

И сгенерировать ключи для шифрования SSL/TSL соединения:

Теперь пришло время создать свой ключ, он и будет использоваться для доступа к OpenVPN (данные также вводим от балды, они особой роли не играют):

В конце процесса генерации спросит:

Ответим, как обычно, «y». Затем спросит:

Также ответим — «y». Если все прошло ок, скажет:

В папке /etc/openvpn/easy-rsa/2.0/keys теперь есть все необходимые ключи, для авторизации вам понадобятся только yourname.crt, yourname.key (сертификат с ключом) и ca.crt (сертификат CA). Запускайте Midnight Commander и переходите в папку /etc/openvpn. Далее, нажмите Shift+F4 (создаем новый файл). Скопируйте его содержимое:

Нажмите два раза «Esc» и сохраните файл с именем «tun.conf» (без кавычек). Теперь сервер OpenVPN можно запустить:

Работать пока что это еще не будет, ибо нам нужен NAT, а мы его еще не настроили. Давайте настроим:

Вместо SERVER_IP указываем реальный IP-адрес вашего сервера (пришел к вам в письме от Digital Ocean). Сохраняем настройки:

В Midnight Commander находим файл /etc/rc.local и в него втыкаем эту строку, чтобы получилось так:

Последние две строки там уже будут, важно чтобы наша строка стояла первой. Дважды на «Esc» и сохранить файл. Рестарт:

На стороне сервера — все, можно выдыхать :) Теперь надо забрать с сервера сертификаты и ключи доступа. Скачиваем и устанавливаем на компьютер WinSCP. Запускаем, жмем кнопку «New», вводим данные и заходим на сервер. Переходим в папку /etc/openvpn/easy-rsa/2.0/keys и забираем оттуда файлы ca.crt, yourname.crt и yourname.key. Сохраняем их куда-нибудь локально.

Настраиваем локальную машину

В качестве OpenVPN клиента я рекомендую Viscosity. Клиент очень удобный, имеет графический интерфейс и именно на его примере я покажу, как/что настраивать дальше. Скачиваем, устанавливаем, запускаем:

  1. Нажимаем кнопку «+» внизу слева и выбираем пункт «Новое соединение»;
  2. В поле «Имя» пишем имя вашего сервера;
  3. В поле «Адрес» пишем IP-адрес вашего сервера;
  4. Поле «Порт» не трогаем;
  5. Переходим на вкладку «Аутентификация»;
  6. Для «CA» выбираем файл ca.crt;
  7. Для «Сертификат» выбираем файл yourname.crt;
  8. Для «Ключ» выбираем файл yourname.key;
  9. Переходим на вкладку «Настройки»;
  10. «Сжатие: LZO Compression» выбираем «On»;
  11. Переходим на вкладку «Сеть»;
  12. Отмечаем пункт «Отправлять весь трафик через VPN»;
  13. Жмем кнопку «Save»;

Настала пора проверить. Находим любой заблокированный ресурс (вы же не будете ждать, пока заблокируют ваш любимый сайт? Готовиться стоит заранее). Я вот нашел (исключительно в качестве примера) — PokerStars.

Без подключения к нашему серверу это выглядит вот так:

Теперь подключаемся к нашему серверу и снова заходим на сайт:

Оставайтесь с нами! :) Если есть вопросы — прошу в комментарии. В следующих статьях я расскажу о том, как задействовать этот же сервер, чтобы полностью отказаться от Dropbox, Google.Drive, Яндекс.Диск и иже с ними в пользу более удобного, быстрого, защищенного и дешевого решения.


Я советую хостинг Linode и Digital Ocean. Рефам помощь в установке и настройке — бесплатно!

  • Pingback: Dropbox, Google.Drive и Яндекс.Диск — до свидания… Привет BTSync + AjaXplorer 5 — TheWired()

  • K_Piterskiy

    А что указывать вместо SERVER_IP, если vpn поднят на своём собственном сервере, который стоит за роутером?

    • Значит надо указать IP этого сервера (который стоит за роутером).

  • Ilya Kozakov

    cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* 2.0/
    Когда прописываю это, вылазит вот такая вот ошибочка:
    “cp: cannot stat ‘/usr/share/doc/openvpn/examples/easy-rsa/2.0/*’: No such file or directory”

    • Очевидно ругается на то, что нет директории 2.0/
      Значит надо ее создать? :)
      mkdir 2.0

      Внимательнее читайте мануал.

      • Ilya Kozakov

        Я все делал как написано в мануале.
        И при повторном использовании команды mkdir 2.0 получилось вот что: “root@antidream:/etc/openvpn/easy-rsa# mkdir 2.0
        mkdir: cannot create directory ‘2.0’: File exists”
        Как я понимаю, эта директория уже создана.

        • В таком случае не может скопировать :) В почту реквизиты сервера и вообще весь расклад, завтра попробую помочь в решении этого вопроса, если надо.

          • Ilya Kozakov

            А не подскажите как узнать вашу почту, потому что в помощи нуждаюсь…

          • Сверху есть ссылка «Контакты».

  • Павел Симба

    У меня выскакивает вот такая ошибка:
    UDPv4: Connection reset by peer (WSAECONNRESET) (code=10054)
    Не подскажете, в чем дело?

    • Подскажу. Либо порт закрыт, либо коннект между клиентом и сервером — говно. Попробуйте сменить с UDP на TCP. И на будущее, для простыни логов есть Pastebin.com

  • Sergey Alexandrov

    Прошу прощения за пару глупых вопросов.
    1. Могу ли я подключить несколько человек к данному впн?
    2. Потянет (позволит) ли данный сервер использование для онлайн игр, на которые стоит блок для РФ?

    • 1. Да.
      2. Сервер то потянет без проблем, вопрос в данном случае не в самом сервере, а в ширине канала, которую он дает. Если мне не изменяет память, сейчас на большинстве тарифов это 30Мбит/с. Если вашим играм этого будет достаточно, то ответ тоже «да».

  • Pingback: OVPN (OpenVPN) своими руками — TheWired()