пятница, 23 сентября 2011 г.

VPN-сервер в Amazon EC2

Статья взята с сайта http://3dnews.ru
В этой статье будет достаточно подробно рассмотрено создание собственного VPN-сервера в облачной платформе Amazon Elastic Compute Cloud. Причём за очень символическую сумму. В качестве клиента будет выступать Windows 7. Зачем это всё надо? Хотя бы для того, чтобы получить доступ к веб-сервисам, которыми разрешено пользоваться только в стране победившего капитализма. С их (сервисов) точки зрения вы будете находиться на территории США. На самом деле вариантов использования такого доступа превеликое множество. Самый простой пример — можно бесплатно слушать радио в Last.fm или Pandora.
У продвинутых пользователей наверняка возникнет один резонный вопрос. Зачем нам настраивать какой-то VPN-сервер, да ещё в Amazon? Есть же прокси-сервера, зачастую бесплатные, есть Tor и прочие анонимайзеры, есть, в конце концов, провайдеры VPN-доступа с вполне приемлемыми тарифами. Предлагаемый метод в чём-то хуже, а в чём-то лучше перечисленных решений. Его основные плюсы таковы: простота работы, относительно высокая безопасность и практически полная бесплатность. Интересно? Тогда поехали.
Идея поднятия VPN-сервера в Amazon EC2, мягко говоря, не нова. Нюанс в том, что с первого ноября прошлого года каждому новому клиенту Amazon Web Services на целый год бесплатно предоставляется доступ к небольшому кусочку облака — 613 Мбайт оперативной памяти, 10 Гбайт дискового пространства, 15 Гбайт трафика, 750 часов машинного времени и так далее. Чувствуете гешефт? Конечно, что-то серьёзное на такой машине не запустишь. Но для наших целей подобной конфигурации вполне хватит, к тому же и платить за неё фактически не надо.
Итак, нам понадобятся следующие вещи: действующая банковская карта хотя бы с тремя долларами на счету, клиенты PuTTY и PuTTYgen с этого сайта, учетные записи в Amazon и DynDNS, а также немного свободного времени. Если нет аккаунта в Amazon и DynDNS, то их придётся создать. Рекомендуем предварительно внимательно почитать лицензионные соглашения и правила использования всех сервисов и программ на предмет легальности в вашей стране. Регистрация в Amazon и DynDNS ничем не отличается от аналогичного процесса на других сайтах, так что сложностей возникнуть не должно. Отметим лишь, что при регистрации в Amazon надо будет указать правильный номер телефона — он потребуется для последующей активации. Также при указании реквизитов карты в Amazon.com и AWS на счёте автоматически будет зарезервирована сумма в один доллар. Наконец, ещё одно замечание. Лучше не использовать браузеры IE и Opera. IE в самый неподходящий момент заблокировал загрузку цифрового ключа, а Opera почему-то отказывалась показывать PIN-код для активации по телефону. В Chrome, к примеру, всё прошло успешно.
Создаём instance в Amazon EC2
Для начала входим в свой аккаунт на Amazon и переходим в консоль EC2. Жмём на кнопку Sign Up Now и приступаем к процессу регистрации в Amazon Web Services (AWS). Ничего сложного в нём тоже нет. Про нюансы с номером телефона и резервированием средств на карте уже сказано выше. В конце вам позвонят по указанному номеру, и потребуется ввести четырёхзначный PIN-код, который будет показан на экране, с клавиатуры телефона. По завершении в почтовый ящик упадёт несколько писем с подтверждением регистрации и активации аккаунта AWS.
Возвращаемся в консоль EC2. Теперь она станет выглядеть как на скриншоте ниже. Обратите внимание, что мы должны находиться на вкладке EC2 и в регионе US East. Нажимаем Launch Instance и приступаем непосредственно к его созданию.
На первом этапе нам предлагается выбрать Amazon Machine Image (AMI), этакий виртуальный образ диска с ОС. В принципе, можно остановиться на любом подходящем образе с Linux объёмом не более десяти отведённых нам гигабайт.В качестве примера будем использовать образ с Ubuntu 10.04.2 LTS. Его
можно найти, вбив в поиск ID: ami-3e02f257. Затем нажимаем Select и переходим к следующему этапу.
Выбираем в Instance Type пункт Micro (t1.micro). В Number of Instances оставляем единицу.
На следующем этапе ничего не трогаем и оставляем значения по умолчанию. Ставим галочку напротив Termination Protection.
Затем нам предлагают проставить теги для нашего виртуального сервера. Напротив Name вводим любое понравившееся имя сервера.
Наступает ответственный момент — генерация приватных ключей для доступа к серверу. Вбиваем имя для нашего ключа (любое) и жмём Create & Download your Pair Key. Браузер предложит сохранить файл с расширением .pem. Отказываться не стоит. На всякий случай неплохо бы сразу же сделать копию этого файла и сохранить в другом месте. Если по каким-то причинам ключ не загрузился, то придётся всё отменить (Cancel справа вверху) и повторить все предыдущие шаги. Без ключа дальнейшие действия теряют всякий смысл.
На этом этапе ничего не трогаем и просто жмём Continue.
Напоследок проверяем, всё ли мы правильно выбрали и настроили, затем жмём Finish. Теперь потребуется пара минут для запуска сервера.
Пришла пора дать свежесозданному серверу доступ в Сеть. Для этого в левом меню выбираем пункт Elastic IPs, жмём на кнопку Allocate New Address и соглашаемся с выделением нам нового IP-адреса. Затем кликаем по Associate Address, в списке выбираем наш сервер (он там единственный) и снова соглашаемся. В итоге должно получиться что-то вроде этого:
Теперь переходим в раздел Security Groups, а в списке выбираем default group. Переходим на вкладку Inbound. Перед нами появляется окно управления брандмауэром. Выбираем в списке Create a new rule пункт SSH (все нужные поля заполнятся сами) и жмём Add rule. Затем в том же списке выбираем Custom TCP rule. В поле Port Range вводим 1723, Source оставляем таким же (0.0.0.0/0) и опять нажимаем Add rule. Наконец, жмём Apply Rule Changes. Всё, на этом базовая настройка виртуального сервера закончена.
Настройка DynDNS
DynDNS нужен для того, чтобы при смене выдаваемого IP-адреса не пришлось лишний раз лезть в консоль AWS. Короче, для удобства. Итак, логинимся на сайте DynDNS и попадаем в консоль управления аккаунтом. Здесь кликаем по Add Host Services.
В поле Hostname вбиваем любое подходящее доменное имя (в нашем примере это amazec2), а в списке справа выбираем любой домен. В Service Type указываем Host with IP Address и кликаем чуть ниже по ссылке Your current location’s IP Address is xx.xx.xx.xx. Внизу странички будет кнопка Add To Cart. Жмём на неё.
Затем выбираем Proceed to checkout и Activate Services.
Настройка PuTTY
Первым делом надо переконвертировать ключ из формата pem в ppk. Для этого запускаем PuTTYgen. В меню Conversions кликаем на Import key и выбираем наш pem-ключ, который был скачан ранее. Внизу окна надо выбрать SSH-1 (RSA), нажать Save Private Key и сохранить полученный ключ в формате ppk.
Теперь потребуется вернуться в консоль AWS и выбрать в меню слева пункт Instances, а затем справа вверху нажать кнопку Refresh. Кликаем по нашему серверу и снизу в информационной панели находим пункт Public DNS. Выделяем адрес и копируем его в буфер обмена.
Запускаем PuTTY и в поле Host Name вставляем скопированный адрес. Затем переходим в меню слева в Connection → SSH → Auth и указываем в Private key file путь до нашего ключа в формате ppk. А в Window → Translation выбираем кодировку UTF-8.
Наконец, жмём заветную кнопку Open. В диалоговом окне кликаем на Yes. И вот перед нами открылась удалённая консоль нашего сервера. Вводим в качества логина ubuntu и нажимаем Enter.



Настройка ddclient
Если вы никогда не имели дело с Linux-консолью, то лучше строго следовать нижеследующим инструкциям. Шаг влево, шаг вправо — расстрел (можете погубить ваш удаленный Linux). Чтобы не набирать вручную команды, можно просто копировать их отсюда — в PuTTY по нажатию правой клавиши в консоли автоматически вставляется последний скопированный текст. Для начала получим root-права. Вводим
sudo -s
и нажимаем Enter. Устанавливаем ddclient командой
apt-get install ddclient
Появится мастер конфигурирования ddclient. Выбираем www.dyndns.com.
Затем вводим логин и пароль от DynDNS.com.
Нажимаем Yes, а затем From list. Выбираем пробелом наше доменное имя (в нашем примере amazec2.dyndns-ip.com) и жмём Enter.
В принципе, уже сейчас можно пускать весь трафик через наш сервер. Для этого достаточно создать в текстовом редакторе BAT-файл следующего содержания:
c:\путь\до\putty.exe -l ubuntu -D 9999 amazec2.dyndns-ip.com -i c:\путь\до\файла.ppk
Вместо amazec2.dyndns-ip.com надо подставить свой домен DynDNS. После запуска BAT-файла в системе появится SOCKS-сервер. В настройках IE или браузера надо будет указать адрес прокси-сервера 127.0.0.1 и порт 9999. Однако такой способ не совсем удобен.
Настройка pptpd
Устанавливаем VPN-сервер командой
apt-get install pptpd
Теперь его надо настроить. Отредактируем файл /etc/pptpd.conf командой
nano /etc/pptpd.conf
В конце есть строчки localip (адрес сервера) и remoteip (адреса клиентов), которые нужно привести примерно к такому виду:
Использовать именно подсеть 192.168.244.0 необязательно. Желательно, чтобы адресация вашей локальной сети не совпадала с адресацией, которую мы указали выше. Сохранить изменённый файл можно, нажав F2, затем Y и Enter. Также надо будет отредактировать файл /etc/ppp/pptpd-options командой
nano /etc/ppp/pptpd-options
Здесь надо будет прописать адреса DNS-серверов. Можно воспользоваться DNS вашего провайдера или использовать какой-нибудь общедоступный сервер. Находим строки с ms-dns и правим их. Например, вот так:
Для доступа к VPN-серверу надо задать логин и пароль.
echo "username pptpd password *" >> /etc/ppp/chap-secrets
Вместо username и password укажите соответственно выбранные вами логин и пароль. Можно дать доступ к VPN и другим пользователям. Для этого потребуется отредактировать файл /etc/ppp/chap-secrets, добавив в него аналогичные строки.
Перезапускаем pptpd командой
/etc/init.d/pptpd restart
и переходим к редактированию файла /etc/sysctl.conf:
nano /etc/sysctl.conf
В нём нужно будет «раскомментировать» (убрать символ # в начале строки) пункт net.ipv4.ip_forward=1.
Затем вводим ещё пару команд:
sysctl -p
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Наконец, осталось отредактировать файл /etc/rc.local, добавив в него перед строкой exit 0 последнюю команду.
nano /etc/rc.local
На этом настройка сервера закончена. Отключаемся от консоли:
exit
exit
Настройка VPN-подключения в Windows 7
Заходим в «Панель управления» и выбираем «Центр управления сетями и общим доступом». Щёлкаем по пункту «Настройка нового подключения или сети». Выбираем «Подключение к рабочему месту» и нажимаем «Далее».
Жмём «Использовать мое подключение к Интернету».
В поле «Интернет-адрес» вводим наш домен в DynDNS (опять же, в нашем примере это amazec2.dyndns-ip.com) и как-нибудь называем наше VPN-соединение. Не забудьте поставить галочку напротив строки «Не подключаться сейчас, только выполнить установку для подключения в будущем».
Вводим наши логин и пароль для подключения к VPN-серверу (те самые, что были в команде echo "username pptpd password *" >> /etc/ppp/chap-secrets). Ставим галочку напротив пункта «Запомнить пароль». Нажимаем «Создать», а потом «Закрыть».
Теперь выбираем «Изменение параметров адаптера». Кликаем правой кнопкой по только что созданному соединению и выбираем пункт «Свойства».
В появившемся окне расставляем галочки так, как показано на скриншотах ниже, и жмём ОК.
 
Необходимо не забыть сменить шифрование на "тип шифрования: необязательно"
Всё, подключение готово. Дважды кликаем по нему и нажимаем «Подключение». После установки соединения ОС предложит выбрать размещение сети. Выберите «Общественная сеть» или «Сеть предприятия». Теперь с точки зрения внешнего мира мы находимся на территории США.
Дорогая, у меня для тебя сюрприз
Заключение
В конце хотелось бы осветить несколько важных моментов. Учтите, что после установки VPN-соединения весь трафик будет проходить через него. Во избежание лишних трат рекомендуется отключить торрент-клиент и прочие программы, которые в фоновом режиме передают много информации. ПО, которое работает с Сетью, лучше запускать уже после включения VPN. К сожалению, по тем или иным причинам не все веб-сервисы могут корректно работать в таком режиме. Периодически наблюдаются проблемы с плеером Adobe Flash. Но в целом всё работает нормально.
Следить за объёмом потреблённого трафика можно в своём профиле. Для этого надо зайти на главную страницу AWS и в меню Account выбрать пункт Account Activity. В отчёте будет подробно расписано, сколько вы потребили из всех предоставляемых услуг на текущий момент. Счёт за услуги будет выставляться первого числа каждого месяца. Также следует отметить, что региональный трафик между дата-центрами Amazon оплачивается отдельно. Если вы превысите месячный лимит бесплатного трафика, то весь последующий объём передаваемой информации придётся оплачивать согласно стандартному прейскуранту (сейчас это 10 центов за гигабайт).
Что делать по прошествии года, когда закончится период бесплатного использования Amazon EC2? Ну, «обойти» это просто. Никто не мешает создать ещё один почтовый адрес, снова зарегистрироваться на Amazon и как «новому» клиенту воспользоваться условиями акции. (Если, конечно, к тому моменту всю эту лавочку не прикроют). С номером телефона тоже не должно возникнуть проблем. С банковской картой тоже всё просто. Можно, например, завести виртуальную карту или приобрести Visa Gift Card. Кстати, если вы переживаете, что Amazon вдруг начнёт бесконтрольно снимать деньги с вашего счёта, то можно сразу же воспользоваться предложенными методами. Тогда уж точно не будет лишних или непредвиденных затрат.
Если, несмотря на наши предостережения, вы все же решились провернуть эту операцию — поздравляем, теперь вы можете хотя бы в Интернете почувствовать себя жителем страны с дешевым бензином и высокими зарплатами, а также пользоваться всеми сетевыми благами, доступ к которым за пределами этой страны, скажем так, затруднен.

Комментариев нет:

Отправить комментарий