Свой собственный сервис VPN для обхода блокировок Роскомнадзора

    Общий рейтинг статьи: 4 (проголосовало 1 )
    Опубликовано:  [просмотров 2331]


    В связи с последними событиями по блокировке крупных ресурсов, наподобие Linkedin, выросло число запросов на создание персональных VPN-сервисов. Публичными VPN-сервисами последнее время предпочитают не пользоваться, так как участились случаи похищения персональных данных, и хорошо если у вас "уплывет" пароль от rutracker, это еще не беда, а вот "утекшие" жуликам учетные данные от PayPal - это уже серьезно.

    Настройка VPN-тунеля

    Как я уже многократно говорил, настройка персонального VPN-сервиса на любое количество подключений ,для себя и всех своих знакомых, занимает около часа, стоимость аренды выделенного сервера в Amazon EC2 по программе AWS Free Tier составит 1$ в год и тот возвращается на карту после подтверждения. При умеренном использовании без скачивания тяжелых файлов и при использовании проксирования в тунель только ряда запросов к заблокированным ресурсам вы не превысите лимиты ресурсов Amazon. Если же вы намерены использовать VPN для туннелирования всего трафика, то вам подойдет недорогой VPS-хостинг в Европе за 2.5$ в месяц. Цена не сильно отличается от коммерческих VPN-решений, а с учетом нелимитированных клиентских соединений вы еще и в плюсе останетесь, если будете ими торговать.

    Итак, приступим к созданию собственного VPN-сервиса. Зарегистрируйте на Amazon новый EC2-инстанс Ubuntu server (Free Tier).

    Регистрация Amazon-инстанс для VPN

    Назначьте статический IP-адрес. Бесплатного лимита в 5$ хватит на инстанс и один статический адрес, в противном случае, используйте для подключения клиентов публичное DNS-имя предоставляемое Amazon для подключения по ssh.

    Amazon, назначение статического IP-адреса

    Для подключений VPN-клиентов откройте доступ к UDP-порту 1194. Так же можете открыть и другие требующиеся порты, например, ICMP для проверки доступности сервера.

    Настройка Firewall на Amazon

    Подключитесь к Amazon-серверу по ssh, обновите программное обеспечение и установите необходимые для работы пакеты. Эти операции выполняются от имени супер-пользователя root переключение в режим суперпользователя выполняется командой sudo su.

    # apt-get update
    # apt-get upgrade
    # apt-get install easy-rsa openvpn aptitude mc

    Скопируйте каталог /usr/share/easy-rsa/ в каталог /etc/openvpn, можно конечно оставить его там где он и находится или скопировать в любой другой каталог, но я считаю, что разумнее хранить ключи в каталоге конфигурации для последующего пересоздания ключей или отзыва в случае компрометации. Так же, рекомендую настроить параметры генерации ключей (огранизация email и т.п.) их можно, конечно, оставить и значениями по умолчанию находятся они в файле /etc/openvpn/easy-rsa/vars, изменить требуется следующие параметры (остальные значения оставьте как есть):

    export KEY_COUNTRY="US"
    export KEY_PROVINCE="CA"
    export KEY_CITY="SanFrancisco"
    export KEY_ORG="Fort-Funston"
    export KEY_EMAIL="me@myhost.mydomain"
    export KEY_OU="MyOrganizationalUnit"

    Перейдите в скопированный каталог easy-rsa и последовательно выполните команды для генерации набора ключей (назначение каждой команды мы рассматривали в предыдущих заметках):

    # cd ./easy-rsa
    # source ./vars
    # ./clean-all
    # ./build-dh
    # ./build-ca
    # ./build-key-server server
    # ./build-key-server server
    # ./build-key client

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

    # cd ..
    # ln -s ./easy-rsa/keys/dh2048.pem ./dh2048.pem
    # ln -s ./easy-rsa/keys/ca.crt ./ca.crt
    # ln -s ./easy-rsa/keys/server.crt ./server.crt
    # ln -s ./easy-rsa/keys/server.key ./server.key

    Создайте конфигурационный файл серверной части вашего OpenVPN-сервера:

    port 1194
    proto tcp
    dev tap-vpn
    ca ca.crt
    cert server.crt
    key server.key
    dh dh2048.pem
    push "redirect-gateway def1"
    server 10.112.0.0 255.255.0.0
    keepalive 10 120
    comp-lzo
    persist-key
    persist-tun
    duplicate-cn
    status /var/log/openvpn/openvpn-status.log
    log /var/log/openvpn/openvpn.log
    log-append /var/log/openvpn/openvpn-append.log
    verb 3

    Конфигурация довольно типовая с разрешением подключений клиентов, с разрешенными подключениями клиентов, с идентичными ключами (для упрощения выдачи доступа всем своим друзьям) и передачей параметров смены основного шлюза. Основной шлюз для исходящего трафика будет подменен ip-адресом сервера Amazon.

    Единственной интересной деталью этой конструкции, которую мы еще не рассматривали, в прошлых заметках является NAT-трафика из VPN сети на внешний интерфейс. Для реализации этого функционала добавьте в файл /etc/rc.local следующие параметры:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    Проверьте работоспособность VPN-сервера командой:

    # openvpn --config ./server.conf

    Если сервер Open VPN стартовал без ошибок, то перезагрузите EC2-инстанс и создайте конфигурационный файл для клиентского подключения:

    client
    proto tcp
    remote 35.164.94.39 1194
    dev tap
    resolv-retry infinite
    redirect-gateway def1
    nobind
    persist-key
    persist-tun
    ns-cert-type server
    comp-lzo
    verb 3

    <ca>
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
    </ca>

    <cert>
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
    </cert>
    <key>
    -----BEGIN PRIVATE KEY-----
    ...
    -----END PRIVATE KEY-----
    </key>

    Обратите внимание, что мы используем конфигурационный файл с интегрированными ключами и в соответствующие места необходимо вставить содержимое файлов ключей и сертификатов. Основные нюансы мы рассмотрели и теперь вы спокойно можете создать свой собственный VPN-сервис или обратитесь к нам и мы за небольшую плату настроим все за вас.


    Обсуждение статьи

    Ваш комментарий: