Большинство интернет-пользователей, ввиду различных причин, стремятся использовать VPN-сервисы, однако, большинство из них, либо требуют ежемесячную подписку, либо не защищены, либо просто на просто медленны. К счастью, альтернативы существуют. Они требуют немного больше технических ноу-хау, но если вы хотите что-то сделать правильно, вы должны сделать это сами.
Чтобы узнать, как сделать свой собственный VPN, вы можете посмотреть видео или прочитать статью. Обратите внимание, что в статье содержатся полезные команды и текст конфигурации, которые вы можете просто скопировать и вставить для вашего удобства. Обновление: в видео используется старая версия easy-rsa, которая больше не доступна. Когда вы дойдете до отметки в 8 минут, обратитесь к этой статье для настройки easy-rsa 3.
Давайте начнем
Amazon Web Services предлагает один год бесплатного пространства виртуального сервера, при условии, что вы используете меньше пропускной способности, времени и пространства, чем заранее предопределенный порог. Даже если вы преодолеете этот предел, стоимость запуска образа сервера на Elastic Compute Cloud Amazon, вероятно, будет меньше, чем вы заплатите за подписку на VPN.
Здесь мы объясним два разных способа использования Amazon Elastic Cloud, также называемого EC2, для перенаправления вашего подключения через местоположение по вашему выбору: SSH Tunneling и OpenVPN. У каждого есть свои преимущества и недостатки, поэтому используйте тот, который вам покажется более подходящим для ваших нужд. Независимо от того, какой именно из двух вариантов вы выберете, вам потребуется следующее:
В правом верхнем углу вы можете выбрать место, где мы будем настраивать вашу VPN. Нажмите «Запустить экземпляр» (Launch Instance).
Выберите, Linux AMI, который указан как «бесплатный подходящий уровень» ("free tier eligible"). На момент написания этой статьи это AMA Amazon Linux AMI. Переходим к следующему шагу.
Здесь выберите t2.micro, который также отмечен как бесплатный подходящий уровень (free tier eligible). Нажмите «Просмотреть и запустить» ("Review and Launch").
На следующей странице, вы должны получить предупреждающее сообщение с просьбой изменить свои группы безопасности. Нажмите Edit Security Groups (Редактировать группы безопасности).
Вам потребуется изменить группу безопасности, чтобы разрешить трафик с вашего компьютера для доступа к VPN или прокси. У вас уже должно быть настроено одно правило для подключения к вашему серверу через SSH, которое мы будем использовать позже. Нам будет необходимо добавить еще одно, чтобы разрешить соединения OpenVPN, которые по умолчанию используют порт 1194. Для простоты на вкладке «Входящие» (Inbound) нажмите кнопку «Добавить правило» (Add rule). Затем выставьте тип (Type) на пользовательский UDP (Custom UDP), диапазон портов (Port Range) на 1194 и источник (Source) на «в любом месте» (Anywhere).
Нажмите Сохранить (Save).
Нажмите «просмотреть и запустить» ("review and launch"), а затем «запустить» ("launch") на следующей странице.
Теперь вам нужно создать пару ключей, которая работает как пароль, который вы будете использовать для подключения к виртуальному серверу, который вы создаете. Выберите «создать новую пару ключей» ("create a new key pair") в раскрывающемся меню и назовите её как хотите. Нажмите кнопку, чтобы загрузить пару ключей. Храните эту пару, где-то в безопасности.
Следующая страница должна предупредить вас о том, что экземпляр запускается. Прокрутите страницу вниз и нажмите «Просмотреть экземпляры» ("View instances"). Здесь вы увидите список всех запущенных вами экземпляров, в котором, если вы впервые используете EC2, будет всего лишь одно наименование.
Мы можем подключиться к нашему экземпляру EC2 с PuTTy, но сначала нам понадобится соответствующий ключевой файл для подключения. Когда вы установили PuTTy, вы также должны были установить PuTTygen. Идем дальше и запускаем его.
PuTTy и PuTTygen запускаются по умолчанию в качестве файлов .exe без необходимости их установки. Откройте PuTTygen, нажмите «Загрузить» (Load). Перейдите к файлу пары ключей .pem, который вы загрузили ранее, и загрузите его в Puttygen. Вам нужно будет выбрать параметр, «показать все типы файлов» для того, чтобы увидеть файл ключа с расширением .pem. Нажмите «Сохранить секретный ключ» ("Save Private Key"). Имя файла должно быть идентично ключу с расширением .pem. Вы можете создать кодовую фразу для закрытого ключа, если хотите.
Теперь закройте PuTTygen и откройте PuTTy. Скопируйте общедоступный IP-адрес вашего экземпляра с консоли EC2 в PuTTy. Введите имя для своей сессии и нажмите «Сохранить».
В левой панели окна перейдите к «Auth» в подвкладке SSH. Нажмите кнопку обзора внизу и перейдите к закрытому ключу, который вы только что создали.
Вернитесь на главную страницу сеанса, назовите и сохраните свой профиль сеанса для того, чтобы вы могли быстро подключиться при следующем использовании PuTTy. Затем нажмите «Открыть» (Open). Появится запрос с просьбой ввести имя пользователя. Это зависит от того, какой тип сервера вы настроили в начале. Для Amazon Linux AMI это «ec2-user».
SSH Туннелирование (необязательно)
Начнем с того, что мы просто собираемся перенаправить веб-трафик через экземпляр, который мы создали с помощью SSH-туннелирования и прокси. Это быстрый и грязный способ обойти брандмауэр или географическую блокировку. Это не совсем VPN – данный вариант лучше всего подходит для легкого веб-трафика и не будет работать во всех случаях, но его гораздо проще настроить. Однако настройка SSH туннелирования абсолютно необязательна, поэтому не стесняйтесь перейти к следующему разделу.
Откройте PuTTy и перейдите к Tunnels в левой панели окна. Добавьте порт 8080 с выбранным Auto и Dynamic. Вернитесь на страницу сеанса и снова нажмите «Сохранить» (Save), чтобы вам не пришлось все это повторять снова. Затем нажмите «Открыть» (Open).
Теперь вы подключены к своему серверу, но вам по-прежнему нужно направлять трафик вашего веб-браузера. Если вы используете Firefox, это можно сделать в настройках вашего браузера. Если вы используете Chrome, загрузите расширение Proxy Switchy. Если вы предпочитаете создавать полностью функционирующую VPN, а не просто прокси для своего браузера, перейдите к следующему разделу.
В Firefox:
Вуаля! Ваш трафик браузера теперь проходит через ваш экземпляр EC2. Этот вариант будет нормально работать для простого серфинга в Интернете, но на некоторых веб-сайтах вы можете столкнуться с проблемами, а приложения, отличные от вашего веб-браузера, по-прежнему будут использовать прямое соединение. Чтобы создать полнофункциональный VPN, который будет перенаправлять весь ваш интернет-трафик, читайте дальше.
Настройка OpenVPN на сервере и клиенте
OpenVPN - это бесплатный инструмент с открытым исходным кодом, который позволит вам запускать полнофункциональный VPN через ваш Amazon EC2. Это означает, что весь ваш интернет-трафик проходит через него, а не только ваш трафик веб-браузера, как в варианте с прокси-сервером, описанном выше. Настольные программы, такие как Steam или Spotify, работают лучше с использованием этого подхода.
Подключитесь к экземпляру EC2 с помощью PuTTy в соответствии с инструкциями выше. Перед вами должно появиться командная строка, в которой написано Amazon Linux AMI. Выполните следующие команды (введите или скопируйте / вставьте их и нажмите клавишу ввода):
Набольшая заметка. Возможно, вы заметили на скриншоте, что я неправильно попытался загрузить и установить OpenVPN с помощью команды «apt-get» вместо «yum». Некоторые другие версии Linux по-прежнему используют apt-get, поэтому, если yum у вас не работает, попробуйте эту команду:
В командной строке во время установки OpenVPN будет мигать куча текста. Остальные три команды настроили переадресацию IP-адресов, которые необходимы для работы VPN.
Метод #1: Настройка PKI аутентификации с помощью easy-rsa (рекомендуется)
В оригинальной версии этого руководства мы настраиваем OpenVPN со статическим шифрованием и файлом .ovpn. Хотя этот вариант и работает, он позволяет одновременно подключать только одно устройство, а тот факт, что вы используете только один ключ, означает, что он менее безопасен. Теперь мы рекомендуем читателям использовать easy-rsa для настройки аутентификации, которая является более безопасной и позволяет подключать любое количество устройств одновременно. Однако, если вам нужна старая версия со статическим шифрованием, вы можете перейти к ней,
Эта статья обновлена для использования с easy-rsa 3
Easy-rsa недоступен в списке пакетов yum по умолчанию, поэтому нам нужно включить репозиторий EPEL для его установки. Введите следующее в терминал PuTTy и нажмите Enter:
В идеале для максимальной безопасности вы должны генерировать все ключи и сертификаты на отдельном устройстве с VPN-сервера. Однако это может быть довольно утомительно, поэтому мы просто собираемся создать как клиентские, так и серверные учетные данные на сервере, а затем перемещаем файлы туда, где они нам понадобятся.
Создайте каталог easy-rsa в директорию, где установлен OpenVPN. Скопируйте файлы с вашей инсталляции easy-rsa (последняя версия 3.0.3 на момент написания) в новый каталог:
ификации (CA). Начните с инициализации новой директории PKI (инфраструктура открытого ключа), а затем создайте пару ключей сертификатов.
Введите кодовую фразу PEM. Это не обязательно, но мы настоятельно рекомендуем. Если кто-то каким-то образом завладеет вашим центром сертификации, они не смогут создавать ключи или подписывать сертификаты без пароля.
Вам будет предложено ввести общее имя. Назовите как вам будет угодно, или просто нажмите Enter, чтобы оставить название в значении по умолчанию.
Затем мы сгенерируем ключ Диффи-Хеллмана (Diffie-Hellman), который обеспечивает превосходную секретность:
Эта команда может занять некоторое время. Она будет генерировать файл с именем dh.pem. По завершению мы перейдем к учетным данным сервера. Для удобства мы не будем устанавливать пароли, но вы, безусловно, можете это сделать, если хотите еще более мощную защиту.
Нажмите Enter, чтобы оставить имя - server. После создания пары ключей подпишите сертификат:
Введите yes для подтверждения и введите свой пароль CA, если вы установили его ранее.
Теперь мы настроим клиент. Опять же, мы не будем устанавливать здесь пароль, но вы можете это сделать. Обратите внимание: если вы хотите настроить автоматический запуск VPN, лучше не устанавливать пароль.
Введите Enter для того, чтобы оставить имя - client. Теперь введите следующее:
Введите yes для подтверждения и введите свой пароль CA, если вы его установили ранее.
Затем мы создадим ключ TLS для идеальной секретности в OpenVPN, который гарантирует, что данные прошлой сессии не могут быть дешифрованы, даже если злоумышленник завладеет нашим закрытым ключом.
Теперь мы создали все необходимые нам файлы учетных данных. Затем мы создадим файл конфигурации сервера OpenVPN. У нас уже есть один написанный для вас ниже, поэтому все, что вам нужно сделать, это скопировать и вставить, если вы следовали всем нашим инструкциям с самого начала. Начните с направления в каталог OpenVPN и создайте новый файл:
Теперь вы находитесь в текстовом редакторе. Скопируйте и вставьте следующую конфигурацию, затем нажмите CTRL + O для сохранения, Enter для подтверждения и CTRL + X для выхода. (Подсказка: вы можете вставлять текст из своего буфера обмена в PuTTy, просто щелкнув правой кнопкой мыши)
Теперь сервер настроен. Нам просто нужно запустить OpenVPN. Мы запустим его как службу, чтобы даже после закрытия PuTTy он продолжал работать до тех пор, пока сервер не отключится или вы не закончите службу вручную.
Отредактировано: Некоторые читатели указали, что их VPN-серверы перестают работать после перезагрузки или серверных работ. Иногда это случается с экземплярами EC2 в микроуровне. Чтобы предотвратить это, мы будем использовать сценарий команды и bash, предоставленный Matt Doyle в разделе комментариев. Начните с этой команды:
Пока вы все еще находитесь в etc/openvpn, используйте nano server.sh для создания нового текстового файла и вставьте в него следующее:
Используйте CTRL+O для сохранения и CTRL+X для выхода.
Команда обеспечит запуск OpenVPN, когда сервер загрузится, и сценарий обеспечит, чтобы в iptables были установлены необходимые маршруты для того, чтобы разрешить трафик OpenVPN.
Теперь, когда сервер настроен, нам нужно настроить клиент. Для этого нам нужно будет перенести необходимый сертификат и файлы ключей с нашего сервера на наше клиентское устройство. Когда PuTTy все еще открыт и работает как root, сначала нам нужно изменить права доступа к этим файлам, чтобы мы могли получить к ним доступ. Мы также поместим их всех в одном месте, чтобы упростить процедуру. Для получения доступа к некоторым из этих файлов, мы должны быть пользователем root. Для этого введите:
Это сделает вас пользователем root и предоставит административные привилегии. Теперь введите следующие команды:
Последняя команда снижает требуемые права доступа к этим файлам. Вы можете изменить их снова, когда закончите.
Чтобы получить файлы с нашего сервера и на наш ПК, мы будем использовать бесплатную программу под названием WinSCP. Просто используйте параметры установки по умолчанию. Как только это будет сделано, появится окно, в котором вам будет предложено импортировать данные аутентификации сервера из PuTTy.
Выберите myvpn (или то название, которое вы выбрали для себя) и нажмите кнопку «Изменить» (Edit). Введите имя пользователя ec2-user. Нажмите «Войти».
Если вы не впервые используете WinSCP, вы можете установить файл .ppk, который вы использовали в PuTTy, нажав «Изменить» (Edit) и «Дополнительно» (Advanced). Перейдите в SSH > Аутентификация (Authentication) > Файл приватного ключа (Private key file) и перейдите к файлу PPK. В поле имени хоста на главной странице вы можете ввести либо IP-адрес, либо домен вашего экземпляра EC2. Обязательно сохраните настройки, затем нажмите «Вход» (Login).
В правой панели окна перейдите в каталог, содержащий ваши файлы ключей, в данном случае случае это /etc/openvpn/keys
Выделите шесть файлов, которые вам понадобятся: client.crt, client.key, ca.crt, dh.pem, pfs.key и ca.key (не показаны из-за обновления статьи). Нажмите зеленую кнопку «Загрузить» (Download). На самом деле не имеет значения, где они находятся на левой панели окна, поскольку вам не нужны права администратора для доступа к ней. Для удобства мы помещаем файлы на наш рабочий стол. Однако вы возможно захотите сохранить файл ca.key где-нибудь в безопасности, например, на USB-накопителе.
Итак, последней деталью, которую нам необходимо сделать, является удаление файла ca.key с сервера. Центр сертификации (certificate authority) или ЦС (CA) используется для подписания клиентских сертификатов, и, если он однажды был скомпрометирован, вы никогда больше не сможете доверять сертификатам, выпущенным этим центром сертификации еще раз. Хотя это не обязательно для работы VPN, мы настоятельно рекомендуем это сделать, особенно если вы не настроили пароль для ЦС. Перед удалением файла убедитесь, что у вас есть все ключи и сертификаты для каждого устройства, которое вы хотите подключить. Если в дальнейшем вы захотите добавить больше устройств, вам придется переместить файл ca.key обратно на сервер.
После того, как ключ ЦС безопасно хранится в каком-либо месте, кроме сервера, зайдите в PuTTy и удалите исходную ca.key и копию, которую мы сделали с сервера:
После загрузки файлов нам необходимо восстановить более строгие права доступа к ним на сервере, чтобы не каждый мог получить к ним доступ. Назад в PuTTy:
Далее, на вашем ПК вырежьте и вставьте эти пять файлов из того места, куда вы скачали их в свою конфигурационную папку OpenVPN. В этом случае это
Наконец, нам нужно создать файл конфигурации клиента. Откройте свой любимый редактор открытого текста («Блокнот» отлично подойдёт), щелкнув правой кнопкой мыши и выбрав «Запуск от имени администратора» вставьте следующую конфигурацию, заменив
Это файл конфигурации Windows для графического интерфейса OpenVPN, поэтому мы сохраняем его в расширении client.ovpn. Другие клиенты OpenVPN могут вместо этого использовать расширение .conf. В любом случае, убедитесь, что ваш текстовый редактор не добавляет расширение .txt после сохранения. Сохраните его в том же месте, что и ваш ключ и файлы сертификации:
Теперь запустите графический интерфейс OpenVPN в режиме администратора, щелкнув по нему правой кнопкой мыши и выбрав «Запуск от имени администратора». Щелкните правой кнопкой мыши на значок на панели задач и подключитесь к конфигурации клиента, которую мы только что создали. Экран состояния с множеством текста будет мигать на дисплее, а затем значок станет зеленым.
Поздравляем! Теперь вы подключены к созданному вами VPN.
Метод #2: Статическое шифрование (проще, но не рекомендуется)
В этом методе мы создадим общий ключ (shared key) для аутентификации. Это похоже на файл, который действует как пароль. Его проще настроить, но он позволяет подключать только одно устройство к VPN в любой момент времени и менее безопасен, чем метод easy-rsa, описанный выше. В PuTTy введите следующие команды и нажмите enter:
Теперь мы собираемся создать файл конфигурации сервера для нашей VPN. Введите следующую команду, чтобы создать пустой текстовый файл в основном текстовом редакторе внутри терминала:
Введите следующую конфигурацию. Вы можете найти дополнительные параметры на веб-сайте OpenVPN, если вы захотите поэксперементировать с этим методом позже, но в первую очередь убедитесь, что знаете, что делаете.
Теперь нажмите CTRL + O (это буква «O», а не ноль) и нажмите «Ввод», чтобы сохранить файл. Затем нажмите CTRL + X, чтобы выйти из текстового редактора. Вернемся в командной строке, пришло время запустить OpenVPN:
Затем нам нужно получить общий ключ с сервера на локальный компьютер. Сначала нам нужно изменить права доступа на этот файл, чтобы мы могли получить к нему доступ, используем следующую команду:
Если в какой-то момент вы случайно закроете PuTTy или вас просто «выкинет», вы можете вернуться в свой открытый каталог установки VPN после повторного подключения с помощью этой команды:
Чтобы сделать это как можно проще, загрузите и установите это бесплатное приложение,
Выберите myvpn (или то название, которое установили вы) и нажмите кнопку «Изменить» (Edit). Введите имя пользователя «ec2-user» в графе имя пользователя. Нажмите «Войти» (Login).
Теперь вы можете перемещать файлы между сервером EC2 и локальным компьютером. На правой панели перейдите вверх, максимально насколько сможете, затем перейдите к etc/openvpn. Здесь вы найдете файл ovpn.key, который нам нужен. Нажмите и перетащите его в папку по вашему выбору, но запомните, куда вы переместили его, так как нам понадобится переместить его позже.
Теперь, когда у вас есть ключ, нам нужно вернуть старые привелегии, чтобы ограничить крг лиц имеющих доступ. Вернитесь в терминал PuTTy и введите:
Пришло время загрузить клиент OpenVPN и графический интерфейс для вашего локального компьютера. Перейдите на
Затем нам нужно создать файл конфигурации для локальной машины в соответствии с тем, который мы сделали на нашем сервере. Откройте Блокнот и вставьте следующее, заменив IP-адрес на IP-адресом вашего экземпляра EC2 (если вы его забыли, найдите его в своей AWS-консоли в EC2-экземплярах). Также дважды проверьте правильность полного пути к файлу, указывающего на ваш ключ.
Сохраните его как myconfig.ovpn (убедитесь, что ваш текстовый редактор не сохраняет его как myconfig.ovpn.txt по ошибке) в папке config вашей OpenVPN, в том же месте, что и файл opvn.key.
Щелкните правой кнопкой мыши на значок OpenVPN в панели задач и нажмите «Выход» для того, чтобы выйти. Теперь запустите его снова - либо с ярлыка на рабочем столе, либо из папки Program Files, но на этот раз используйте правый клик и выберите «Запуск от имени администратора». Если вы не запускаете OpenVPN в качестве администратора в Windows, это, скорее всего, не сработает.
Нажмите правой кнопкой мыши на значок в панели задач и выберите «Подключиться». Появится графический интерфейс OpenVPN, показывающий статус подключения. Если все это сработало, то значок в панели задач станет зеленым. Перейдите в Google и введите «Как определить мой IP?», И он должен вернуть IP-адрес вашего Amazon EC2.
Мои поздравления, вы только что создали свой собственный VPN!
Дополнительные примечания
Если вы хотите защитить свой VPN от глубокого анализа пакетов, метод, используемый авторитарными режимами в таких местах, как Китай и Сирия, чтобы блокировать соединения OpenVPN, ознакомьтесь с нашим
Не забудьте сохранить свою пропускную способность в пределах бесплатного уровня Amazon (free tier limits). Самый простой способ сделать это - щелкнуть правой кнопкой мыши по вашему экземпляру в консоли AWS и нажать по ссылку «Добавить / изменить сигналы» ("Add/Edit Alarms"). Вы можете настроить сервер на остановку или даже прекращение работы через несколько часов бездействия. Бесплатный уровень позволяет до 750 часов в месяц (что охватывает весь месяц), поэтому у вас нет необходимости делать этого. Тем не менее, пользователи, завершившие свой первоначальный бесплатный год обслуживания или те, которые превышают лимит на своих серверах, могут предотвратить ненужные расходы за неиспользуемое время сервера.
Возможно, по мере следованиям нашим инструкциям, у вас что-то сможет пойти не так. Если вы действительно хотите получить VPN, но не хотите собственноручно пытаться исправить неполадки, вероятно, лучше всего выбрать платный VPN-сервис. Они также позволяют вам направлять свой интернет-трафик через несколько географических мест, в то время как экземпляр EC2, ограничен одним. Ознакомьтесь с нашими
Жесткое кодирование DNS-серверов в VPN
Если вам нужно установить определенные DNS-серверы для использования с вашего VPN, есть несколько вариантов.
Чтобы «поместить» DNS-сервер на клиент, добавьте эту строку в конфигурацию сервера. Это повлияет на все устройства, которые подключаются к вашему VPN (кавычки обязательны):
Кроме того, вы можете настроить DNS согласно конфигурациям отдельного клиента, используя:
В этих примерах я использовал открытый DNS-сервер OpenNIC с анонимной регистрацией, находящейся в США. Вы можете найти сервер OpenNIC в стране по вашему выбору и отфильтровать по таким функциям, как анонимное ведение журнала и DNSCrypt. Это можно сделать
Источник
Чтобы узнать, как сделать свой собственный VPN, вы можете посмотреть видео или прочитать статью. Обратите внимание, что в статье содержатся полезные команды и текст конфигурации, которые вы можете просто скопировать и вставить для вашего удобства. Обновление: в видео используется старая версия easy-rsa, которая больше не доступна. Когда вы дойдете до отметки в 8 минут, обратитесь к этой статье для настройки easy-rsa 3.
Давайте начнем
Amazon Web Services предлагает один год бесплатного пространства виртуального сервера, при условии, что вы используете меньше пропускной способности, времени и пространства, чем заранее предопределенный порог. Даже если вы преодолеете этот предел, стоимость запуска образа сервера на Elastic Compute Cloud Amazon, вероятно, будет меньше, чем вы заплатите за подписку на VPN.
Здесь мы объясним два разных способа использования Amazon Elastic Cloud, также называемого EC2, для перенаправления вашего подключения через местоположение по вашему выбору: SSH Tunneling и OpenVPN. У каждого есть свои преимущества и недостатки, поэтому используйте тот, который вам покажется более подходящим для ваших нужд. Независимо от того, какой именно из двух вариантов вы выберете, вам потребуется следующее:
- Учетная запись Amazon Web Services. Для этого требуется использование вашей кредитной карты, с которой будет взиматься плата только за то, что вы используете, которая, в свою очередь, вероятно, будет совершенно незначительной, если вы будете благоразумны в своих действиях.
-
Ссылка скрыта от гостей, если вы используете операционную систему Windows. OpenSSH через Cygwin - еще один вариант, но я обнаружил, что он довольно неудобный. У компьютеров Linux и Mac уже есть подсказки SSH, встроенные в их терминалы. Вам также понадобится программа для создания ключей PuTTy - PuttyGen.
-
Ссылка скрыта от гостей, или эквивалентный FTP-клиент для перемещения файлов между вашим локальным компьютером и EC2.
- Основные знания о командах Unix и о том, как серверы работают с клиентами, будут полезны при поиске и устранении неисправностей, если что-то вдруг пойдет не так, как планировалось.
-
Ссылка скрыта от гостей, установленный в директорию по умолчанию и с настройками также выставленными по умолчанию на вашем ПК

В правом верхнем углу вы можете выбрать место, где мы будем настраивать вашу VPN. Нажмите «Запустить экземпляр» (Launch Instance).

Выберите, Linux AMI, который указан как «бесплатный подходящий уровень» ("free tier eligible"). На момент написания этой статьи это AMA Amazon Linux AMI. Переходим к следующему шагу.

Здесь выберите t2.micro, который также отмечен как бесплатный подходящий уровень (free tier eligible). Нажмите «Просмотреть и запустить» ("Review and Launch").

На следующей странице, вы должны получить предупреждающее сообщение с просьбой изменить свои группы безопасности. Нажмите Edit Security Groups (Редактировать группы безопасности).

Вам потребуется изменить группу безопасности, чтобы разрешить трафик с вашего компьютера для доступа к VPN или прокси. У вас уже должно быть настроено одно правило для подключения к вашему серверу через SSH, которое мы будем использовать позже. Нам будет необходимо добавить еще одно, чтобы разрешить соединения OpenVPN, которые по умолчанию используют порт 1194. Для простоты на вкладке «Входящие» (Inbound) нажмите кнопку «Добавить правило» (Add rule). Затем выставьте тип (Type) на пользовательский UDP (Custom UDP), диапазон портов (Port Range) на 1194 и источник (Source) на «в любом месте» (Anywhere).

Нажмите Сохранить (Save).
Ссылка скрыта от гостей
Нажмите «просмотреть и запустить» ("review and launch"), а затем «запустить» ("launch") на следующей странице.
Теперь вам нужно создать пару ключей, которая работает как пароль, который вы будете использовать для подключения к виртуальному серверу, который вы создаете. Выберите «создать новую пару ключей» ("create a new key pair") в раскрывающемся меню и назовите её как хотите. Нажмите кнопку, чтобы загрузить пару ключей. Храните эту пару, где-то в безопасности.

Следующая страница должна предупредить вас о том, что экземпляр запускается. Прокрутите страницу вниз и нажмите «Просмотреть экземпляры» ("View instances"). Здесь вы увидите список всех запущенных вами экземпляров, в котором, если вы впервые используете EC2, будет всего лишь одно наименование.
Мы можем подключиться к нашему экземпляру EC2 с PuTTy, но сначала нам понадобится соответствующий ключевой файл для подключения. Когда вы установили PuTTy, вы также должны были установить PuTTygen. Идем дальше и запускаем его.

PuTTy и PuTTygen запускаются по умолчанию в качестве файлов .exe без необходимости их установки. Откройте PuTTygen, нажмите «Загрузить» (Load). Перейдите к файлу пары ключей .pem, который вы загрузили ранее, и загрузите его в Puttygen. Вам нужно будет выбрать параметр, «показать все типы файлов» для того, чтобы увидеть файл ключа с расширением .pem. Нажмите «Сохранить секретный ключ» ("Save Private Key"). Имя файла должно быть идентично ключу с расширением .pem. Вы можете создать кодовую фразу для закрытого ключа, если хотите.

Теперь закройте PuTTygen и откройте PuTTy. Скопируйте общедоступный IP-адрес вашего экземпляра с консоли EC2 в PuTTy. Введите имя для своей сессии и нажмите «Сохранить».

В левой панели окна перейдите к «Auth» в подвкладке SSH. Нажмите кнопку обзора внизу и перейдите к закрытому ключу, который вы только что создали.
Вернитесь на главную страницу сеанса, назовите и сохраните свой профиль сеанса для того, чтобы вы могли быстро подключиться при следующем использовании PuTTy. Затем нажмите «Открыть» (Open). Появится запрос с просьбой ввести имя пользователя. Это зависит от того, какой тип сервера вы настроили в начале. Для Amazon Linux AMI это «ec2-user».
SSH Туннелирование (необязательно)
Начнем с того, что мы просто собираемся перенаправить веб-трафик через экземпляр, который мы создали с помощью SSH-туннелирования и прокси. Это быстрый и грязный способ обойти брандмауэр или географическую блокировку. Это не совсем VPN – данный вариант лучше всего подходит для легкого веб-трафика и не будет работать во всех случаях, но его гораздо проще настроить. Однако настройка SSH туннелирования абсолютно необязательна, поэтому не стесняйтесь перейти к следующему разделу.

Откройте PuTTy и перейдите к Tunnels в левой панели окна. Добавьте порт 8080 с выбранным Auto и Dynamic. Вернитесь на страницу сеанса и снова нажмите «Сохранить» (Save), чтобы вам не пришлось все это повторять снова. Затем нажмите «Открыть» (Open).

Теперь вы подключены к своему серверу, но вам по-прежнему нужно направлять трафик вашего веб-браузера. Если вы используете Firefox, это можно сделать в настройках вашего браузера. Если вы используете Chrome, загрузите расширение Proxy Switchy. Если вы предпочитаете создавать полностью функционирующую VPN, а не просто прокси для своего браузера, перейдите к следующему разделу.
В Firefox:
- Перейдите Инструменты (Tools) > Опции/Параметры (Options) > Дополнительно (Advanced) > Сеть (Network) > Подключения (Connection) > Настройки (Settings) > Ручная настройка прокси (Manual proxy configuration)
- Выставьте SOCKS Host на 127.0.0.1 и порт на 8080 (или на любой другой порт, который вы выставили в качестве порта туннеля в PuTTy).
- Нажмите OK для сохранения
- Страница установки должна появиться сразу после установки расширения или щелкните по значку в правом верхнем углу Chrome и нажмите «Параметры» (Options).
- Назовите профиль, как вам будет угодно. В разделе «Ручная настройка» (Manual Configuration) установите хост SOCKS на 127.0.0.1, а порт - на 8080 (или как вы установили порт туннеля в PuTTy). Оставьте все остальное пустым.
- Нажмите «Сохранить» (Save), затем снова щелкните по значку, чтобы выбрать профиль прокси-сервера.

Вуаля! Ваш трафик браузера теперь проходит через ваш экземпляр EC2. Этот вариант будет нормально работать для простого серфинга в Интернете, но на некоторых веб-сайтах вы можете столкнуться с проблемами, а приложения, отличные от вашего веб-браузера, по-прежнему будут использовать прямое соединение. Чтобы создать полнофункциональный VPN, который будет перенаправлять весь ваш интернет-трафик, читайте дальше.
Настройка OpenVPN на сервере и клиенте
OpenVPN - это бесплатный инструмент с открытым исходным кодом, который позволит вам запускать полнофункциональный VPN через ваш Amazon EC2. Это означает, что весь ваш интернет-трафик проходит через него, а не только ваш трафик веб-браузера, как в варианте с прокси-сервером, описанном выше. Настольные программы, такие как Steam или Spotify, работают лучше с использованием этого подхода.

Подключитесь к экземпляру EC2 с помощью PuTTy в соответствии с инструкциями выше. Перед вами должно появиться командная строка, в которой написано Amazon Linux AMI. Выполните следующие команды (введите или скопируйте / вставьте их и нажмите клавишу ввода):
Код:
sudo yum install -y openvpn
sudo modprobe iptable_nat
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 10.4.0.1/2 -o eth0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Код:
sudo apt-get install -y openvpn
Метод #1: Настройка PKI аутентификации с помощью easy-rsa (рекомендуется)
В оригинальной версии этого руководства мы настраиваем OpenVPN со статическим шифрованием и файлом .ovpn. Хотя этот вариант и работает, он позволяет одновременно подключать только одно устройство, а тот факт, что вы используете только один ключ, означает, что он менее безопасен. Теперь мы рекомендуем читателям использовать easy-rsa для настройки аутентификации, которая является более безопасной и позволяет подключать любое количество устройств одновременно. Однако, если вам нужна старая версия со статическим шифрованием, вы можете перейти к ней,
Ссылка скрыта от гостей
Эта статья обновлена для использования с easy-rsa 3
Easy-rsa недоступен в списке пакетов yum по умолчанию, поэтому нам нужно включить репозиторий EPEL для его установки. Введите следующее в терминал PuTTy и нажмите Enter:
Код:
sudo yum install easy-rsa -y --enablerepo=epel
Создайте каталог easy-rsa в директорию, где установлен OpenVPN. Скопируйте файлы с вашей инсталляции easy-rsa (последняя версия 3.0.3 на момент написания) в новый каталог:
Код:
sudo mkdir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
sudo cp -Rv /usr/share/easy-rsa/3.0.3/*
Теперь мы готовы настроить наш центр серт
Код:
sudo ./easyrsa init-pki
sudo ./easyrsa build-ca
Вам будет предложено ввести общее имя. Назовите как вам будет угодно, или просто нажмите Enter, чтобы оставить название в значении по умолчанию.
Затем мы сгенерируем ключ Диффи-Хеллмана (Diffie-Hellman), который обеспечивает превосходную секретность:
Код:
sudo ./easyrsa gen-dh
Код:
sudo ./easyrsa gen-req server nopass
Код:
sudo ./easyrsa sign-req server server
Теперь мы настроим клиент. Опять же, мы не будем устанавливать здесь пароль, но вы можете это сделать. Обратите внимание: если вы хотите настроить автоматический запуск VPN, лучше не устанавливать пароль.
Код:
./easyrsa gen-req client nopass
Код:
sudo ./easyrsa sign-req client client
Затем мы создадим ключ TLS для идеальной секретности в OpenVPN, который гарантирует, что данные прошлой сессии не могут быть дешифрованы, даже если злоумышленник завладеет нашим закрытым ключом.
Код:
cd /etc/openvpn
openvpn --genkey --secret pfs.key
Код:
cd /etc/openvpn
sudo nano server.conf
Код:
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
cipher AES-256-CBC
auth SHA512
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3
tls-server
tls-auth /etc/openvpn/pfs.key
Код:
sudo service openvpn start
Код:
sudo chkconfig openvpn on
Код:
#!/bin/sh
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 10.4.0.1/2 -o eth0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Команда обеспечит запуск OpenVPN, когда сервер загрузится, и сценарий обеспечит, чтобы в iptables были установлены необходимые маршруты для того, чтобы разрешить трафик OpenVPN.
Теперь, когда сервер настроен, нам нужно настроить клиент. Для этого нам нужно будет перенести необходимый сертификат и файлы ключей с нашего сервера на наше клиентское устройство. Когда PuTTy все еще открыт и работает как root, сначала нам нужно изменить права доступа к этим файлам, чтобы мы могли получить к ним доступ. Мы также поместим их всех в одном месте, чтобы упростить процедуру. Для получения доступа к некоторым из этих файлов, мы должны быть пользователем root. Для этого введите:
Код:
sudo su
Код:
cd /etc/openvpn
mkdir keys
cp pfs.key keys
cp /etc/openvpn/easy-rsa/pki/dh.pem keys
cp /etc/openvpn/easy-rsa/pki/ca.crt keys
cp /etc/openvpn/easy-rsa/pki/private/ca.key keys
cp /etc/openvpn/easy-rsa/pki/private/client.key keys
cp /etc/openvpn/easy-rsa/pki/issued/client.crt keys
chmod 777 *
Чтобы получить файлы с нашего сервера и на наш ПК, мы будем использовать бесплатную программу под названием WinSCP. Просто используйте параметры установки по умолчанию. Как только это будет сделано, появится окно, в котором вам будет предложено импортировать данные аутентификации сервера из PuTTy.

Выберите myvpn (или то название, которое вы выбрали для себя) и нажмите кнопку «Изменить» (Edit). Введите имя пользователя ec2-user. Нажмите «Войти».
Если вы не впервые используете WinSCP, вы можете установить файл .ppk, который вы использовали в PuTTy, нажав «Изменить» (Edit) и «Дополнительно» (Advanced). Перейдите в SSH > Аутентификация (Authentication) > Файл приватного ключа (Private key file) и перейдите к файлу PPK. В поле имени хоста на главной странице вы можете ввести либо IP-адрес, либо домен вашего экземпляра EC2. Обязательно сохраните настройки, затем нажмите «Вход» (Login).

В правой панели окна перейдите в каталог, содержащий ваши файлы ключей, в данном случае случае это /etc/openvpn/keys

Выделите шесть файлов, которые вам понадобятся: client.crt, client.key, ca.crt, dh.pem, pfs.key и ca.key (не показаны из-за обновления статьи). Нажмите зеленую кнопку «Загрузить» (Download). На самом деле не имеет значения, где они находятся на левой панели окна, поскольку вам не нужны права администратора для доступа к ней. Для удобства мы помещаем файлы на наш рабочий стол. Однако вы возможно захотите сохранить файл ca.key где-нибудь в безопасности, например, на USB-накопителе.
Итак, последней деталью, которую нам необходимо сделать, является удаление файла ca.key с сервера. Центр сертификации (certificate authority) или ЦС (CA) используется для подписания клиентских сертификатов, и, если он однажды был скомпрометирован, вы никогда больше не сможете доверять сертификатам, выпущенным этим центром сертификации еще раз. Хотя это не обязательно для работы VPN, мы настоятельно рекомендуем это сделать, особенно если вы не настроили пароль для ЦС. Перед удалением файла убедитесь, что у вас есть все ключи и сертификаты для каждого устройства, которое вы хотите подключить. Если в дальнейшем вы захотите добавить больше устройств, вам придется переместить файл ca.key обратно на сервер.
После того, как ключ ЦС безопасно хранится в каком-либо месте, кроме сервера, зайдите в PuTTy и удалите исходную ca.key и копию, которую мы сделали с сервера:
Код:
sudo rm /etc/openvpn/easy-rsa/pki/private/ca.key
sudo rm /etc/openvpn/keys/ca.key
Код:
cd /etc/openvpn/keys
sudo chmod 600 *
C://Program Files//OpenVPN//config
.Наконец, нам нужно создать файл конфигурации клиента. Откройте свой любимый редактор открытого текста («Блокнот» отлично подойдёт), щелкнув правой кнопкой мыши и выбрав «Запуск от имени администратора» вставьте следующую конфигурацию, заменив
YOUR.EC2.INSTANCE.IP
на IP-адрес вашего экземпляра EC2:
Код:
client
dev tun
proto udp
remote YOUR.EC2.INSTANCE.IP 1194
ca ca.crt
cert client.crt
key client.key
tls-version-min 1.2
tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256
cipher AES-256-CBC
auth SHA512
resolv-retry infinite
auth-retry none
nobind
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3
tls-client
tls-auth pfs.key
C:\\Program Files\\OpenVPN\\config

Теперь запустите графический интерфейс OpenVPN в режиме администратора, щелкнув по нему правой кнопкой мыши и выбрав «Запуск от имени администратора». Щелкните правой кнопкой мыши на значок на панели задач и подключитесь к конфигурации клиента, которую мы только что создали. Экран состояния с множеством текста будет мигать на дисплее, а затем значок станет зеленым.
Поздравляем! Теперь вы подключены к созданному вами VPN.
Метод #2: Статическое шифрование (проще, но не рекомендуется)
В этом методе мы создадим общий ключ (shared key) для аутентификации. Это похоже на файл, который действует как пароль. Его проще настроить, но он позволяет подключать только одно устройство к VPN в любой момент времени и менее безопасен, чем метод easy-rsa, описанный выше. В PuTTy введите следующие команды и нажмите enter:
Код:
cd /etc/openvpn
sudo openvpn --genkey --secret ovpn.key
Код:
sudo nano openvpn.conf
Код:
port 1194
proto tcp-server
dev tun1
ifconfig 10.4.0.1 10.4.0.2
status server-tcp.log
verb 3
secret ovpn.key

Теперь нажмите CTRL + O (это буква «O», а не ноль) и нажмите «Ввод», чтобы сохранить файл. Затем нажмите CTRL + X, чтобы выйти из текстового редактора. Вернемся в командной строке, пришло время запустить OpenVPN:
Код:
sudo service openvpn start
Код:
sudo chmod 777 ovpn.key
Код:
cd /etc/openvpn
Ссылка скрыта от гостей
(пользователям Mac придется найти другой FTP-клиент. Не беспокойтесь, их много). Просто используйте параметры установки по умолчанию. После этого появится окно, в котором вам будет предложено импортировать данные аутентификации сервера из PuTTy.
Выберите myvpn (или то название, которое установили вы) и нажмите кнопку «Изменить» (Edit). Введите имя пользователя «ec2-user» в графе имя пользователя. Нажмите «Войти» (Login).

Теперь вы можете перемещать файлы между сервером EC2 и локальным компьютером. На правой панели перейдите вверх, максимально насколько сможете, затем перейдите к etc/openvpn. Здесь вы найдете файл ovpn.key, который нам нужен. Нажмите и перетащите его в папку по вашему выбору, но запомните, куда вы переместили его, так как нам понадобится переместить его позже.

Теперь, когда у вас есть ключ, нам нужно вернуть старые привелегии, чтобы ограничить крг лиц имеющих доступ. Вернитесь в терминал PuTTy и введите:
Код:
sudo chmod 600 ovpn.key
Ссылка скрыта от гостей
и выберите подходящую версию для своей операционной системы. Установите его с настройками по умолчанию. Он должен появиться на вашей панели задач в качестве значка после запуска. Откройте проводник и перейдите к месту установки OpenVPN, скорее всего это папка Program Files. Переместите файл opvn.key, который мы загрузили с сервера, в папку конфигурации, найденную здесь (C: / Program Files / OpenVPN / config ..., если вы использовали установочный каталог по умолчанию в Windows).Затем нам нужно создать файл конфигурации для локальной машины в соответствии с тем, который мы сделали на нашем сервере. Откройте Блокнот и вставьте следующее, заменив IP-адрес на IP-адресом вашего экземпляра EC2 (если вы его забыли, найдите его в своей AWS-консоли в EC2-экземплярах). Также дважды проверьте правильность полного пути к файлу, указывающего на ваш ключ.
Код:
proto tcp-client
remote <your EC2 IP here>
port 1194
dev tun
secret "C:\\Program Files\\OpenVPN\\config\\ovpn.key"
redirect-gateway def1
ifconfig 10.4.0.2 10.4.0.1

Щелкните правой кнопкой мыши на значок OpenVPN в панели задач и нажмите «Выход» для того, чтобы выйти. Теперь запустите его снова - либо с ярлыка на рабочем столе, либо из папки Program Files, но на этот раз используйте правый клик и выберите «Запуск от имени администратора». Если вы не запускаете OpenVPN в качестве администратора в Windows, это, скорее всего, не сработает.

Нажмите правой кнопкой мыши на значок в панели задач и выберите «Подключиться». Появится графический интерфейс OpenVPN, показывающий статус подключения. Если все это сработало, то значок в панели задач станет зеленым. Перейдите в Google и введите «Как определить мой IP?», И он должен вернуть IP-адрес вашего Amazon EC2.

Мои поздравления, вы только что создали свой собственный VPN!
Дополнительные примечания
Если вы хотите защитить свой VPN от глубокого анализа пакетов, метод, используемый авторитарными режимами в таких местах, как Китай и Сирия, чтобы блокировать соединения OpenVPN, ознакомьтесь с нашим
Ссылка скрыта от гостей
Обратите внимание, что это учебное пособие было написано в виде продолжения более старого метода № 2, изложенного в этой статье, поэтому, если вы использовали easy-rsa, то для него потребуется дополнительная настройка.Не забудьте сохранить свою пропускную способность в пределах бесплатного уровня Amazon (free tier limits). Самый простой способ сделать это - щелкнуть правой кнопкой мыши по вашему экземпляру в консоли AWS и нажать по ссылку «Добавить / изменить сигналы» ("Add/Edit Alarms"). Вы можете настроить сервер на остановку или даже прекращение работы через несколько часов бездействия. Бесплатный уровень позволяет до 750 часов в месяц (что охватывает весь месяц), поэтому у вас нет необходимости делать этого. Тем не менее, пользователи, завершившие свой первоначальный бесплатный год обслуживания или те, которые превышают лимит на своих серверах, могут предотвратить ненужные расходы за неиспользуемое время сервера.
Возможно, по мере следованиям нашим инструкциям, у вас что-то сможет пойти не так. Если вы действительно хотите получить VPN, но не хотите собственноручно пытаться исправить неполадки, вероятно, лучше всего выбрать платный VPN-сервис. Они также позволяют вам направлять свой интернет-трафик через несколько географических мест, в то время как экземпляр EC2, ограничен одним. Ознакомьтесь с нашими
Ссылка скрыта от гостей
!Жесткое кодирование DNS-серверов в VPN
Если вам нужно установить определенные DNS-серверы для использования с вашего VPN, есть несколько вариантов.
Чтобы «поместить» DNS-сервер на клиент, добавьте эту строку в конфигурацию сервера. Это повлияет на все устройства, которые подключаются к вашему VPN (кавычки обязательны):
Код:
push "dhcp-option DNS 45.56.117.118"
Код:
dhcp-option DNS 45.56.117.118
Ссылка скрыта от гостей
Источник
Ссылка скрыта от гостей