Vps oracle настройка pptp
Во избежании полемики в комментариях в сторону не надежности PPTP — предупреждаю:
я осведомлен о уязвимостях PPTP, что есть более надежные L2TP/IPSec и даже практически идеальные OpenVPN с 4096 — OverМного битным ключом.
О них я расскажу в следующих двух статьях.
Статья собрана мной по крупицам из разных источников, все написанные шаги я произвел лично при написании данной инструкции.
Возможно статья не претендует на уникальность, она написана ради себя и таких же, как я.
Не у всех есть белый IP адрес, не говоря уж о белом статическом IP. В основном оборудование MikroTik находится за NAT’ом, а то и за целой цепочки из NAT’ов. Особенно это касается интернета через 3/4G/LTE модемы и пионерские сети.
Подразумевается, что объединяемые сети имеют разные диапазоны IP адресов.
Конкретно в моем случае, офис M имеет 192.168.0.0/24 , а офис T — 10.0.0.0/24
Офис B как концепт — 10.10.0.0/24
Настройка Oracle
На панели управления ресурсами есть мастер настройки сети, который проведет пользователя через все нужные шаги в одном месте.
Если вы создали хотя бы один вычислительный инстанс в инфраструктуре Oracle, у вас должен был автоматически создаться служебный элемент "Virtual Cloud Network", выберите его, если он не выбран в мастере. Если это первая попытка создания VPN, в мастере нужно выбрать создание нового "Dynamic Routing Gateway" (DRG), имя заполнится автоматически. При повторных попытках создания VPN можно выбирать существующий DRG.
Подсети и безопасность. Security List позволяет настроить правила файервола. Можно, конечно, выбрать автоматически создавшийся при создании первого инстанса Default Security List, но я рекомендую все же создать новый, чтобы иметь возможность независимо настраивать внутреннюю безопасность и внешнюю.
Следующий шаг позволяет выбрать настройки маршрутизации. Если читателю знаком протокол динамической маршрутизации BGP, он может быть настроен здесь. В статье же я ограничусь более простым вариантом - это статическая маршрутизация. Если у вас дома стоит Mikrotik, вы наверняка знаете какие подсети используются у вас во внутренней сети. В моем случае это 192.168.6.0/24, именно для нее Oracle будет отправлять трафик через VPN на ваш Mikrotik.
Со стороны Oracle создается два туннеля - это просто дублирование для надежности.
При желании можно настроить мониторинг состояния туннелей, это позволит получать уведомления при разрыве соединения, но я не стал этого делать.
Дальше, ответственный момент - указание IP-адреса вашего маршрутизатора. Проверить его можно на ifconfig.io или в любом другом подобном сервисе, тот же самый IP-адрес должен быть на одном из интерфейсов вашего маршрутизатора.
Проверьте, что все указано правильно.
Дальше запускается облачная магия.
Спустя несколько секунд ваш туннель со стороны Oracle готов, можно просмотреть его настройки.
Нажатие кнопки View VPN покажет нам состояние и адреса двух туннелей со стороны Oracle, не закрывайте страницу, адреса нам еще пригодятся.
Еще нам понадобится Shared Secret для одного (или каждого) туннеля, посмотреть его можно провалившись внутрь по ссылке с названием туннеля, там есть кнопка для отображения ключа.
Шаг 5 - Настройка клиентов
Установите PPTP-клиент на Ваших клиентских серверах:
Шаг 4 - Создание NAT-правил для iptables
Если Вы также хотите, чтобы Ваши PPTP-клиенты могли общаться между собой, добавьте следующие правила для iptables:
Теперь Ваш PPTP-сервер также работает и как роутер.
Если Вы хотите установить ограничение на то, какие сервера могут соединяться с Вашими дроплетами, Вы можете задать правило для IP-таблиц, которое ограничивает TCP-соединения к порту 1723.
А что дальше?
После создания кластера из 6 4 виртуальных машин (UPDATE: спасибо @ky0. суммарный бесплатный объем диска 200 ГБ, а минимальный объем загрузочного диска для VM - 47 ГБ, т.е. больше 4 машин на Free Tier создать не получится. Официальное подтверждение тут), нагрузив их самой минимальной полезной нагрузкой стало понятно, что хочется большего. Хочется переложить все домашние сервисы на датацентры oracle, а именно: мелкие базы данных всех мастей, полезные при разработке ПО, сервер автоматизации рутины n8n, локальный gitea для backup'ов github репозиториев, Pi-hole и прочие прелести доморощенного хостинга. Но все это очень не хочется выставлять в интернет, даже с паролями, даже с файерволами, совсем никак.
Мне поможет VPN! Были рассмотрены варианты:
VPN сервер на Mikrotik + VPN клиент в облаке. Этот вариант требует либо настройки VPN на каждом интансе, либо настройки маршрутизации внутри облачной сети через один "главный" инстанс, а уже на нем VPN. Такой вариант мне не понравился тем, что требует настройки каждый раз при пересоздании инстанса, а пересоздавать их иногда хочется.
VPN сервер на одном из инстансов + VPN клиент на Mikrotik. Вариант уже лучше, но все равно, появляется "священная корова" - инстанс с VPN сервером, который нельзя убивать, с ним нужно очень аккуратно экспериментировать, и при пересоздании устанавливать все по новой.
Site-to-Site VPN. Нужно всего-то настроить VPN со стороны Oracle Cloud, настроить VPN на Mikrotik, профит! Проблема была только в одном. В сети нет инструкции как это делать. Будем разбираться. (тут важно отметить, что для реализации этого варианта обязательно наличие белого IP на вашем Mikrotik).
Итак, имея за плечами скромный опыт настройки VPN, понимание компьютерных сетей на университетском уровне и отсутствие опыта работы с облачными провайдерами, я приступил к настройке.
Хочу предостеречь профессионального читателя, в тексте могут быть и будут ляпы, связанные с пониманием предметной области в криптографии и маршрутизации, статья не претендует на энциклопедическую точность, а лишь призвана обобщить и сохранить тот опыт, который автор собрал, наступая на грабли и исследуя различные источники при создании Site-to-Site VPN на Mikrotik.
Шаг 6 - Добавление необходимого модуля ядра
Создайте новый файл /etc/ppp/peers/pptpserver и добавьте туда следующие строчки, заменяя имя и пароль Вашими значениями:
Здесь 198.211.104.17 - публичный IP-адрес нашего PPTP-сервера, box1 и 24oiunOi24 - это пара логин/пароль, которые мы задали в файле /etc/ppp/chap-secrets на нашем PPTP-сервере.
Теперь мы можем “вызывать” этот PPTP-сервер. В следующей команде необходимо использовать имя, которое Вы дали файлу с пирами (peers) в директории /etc/ppp/peers/ . Поскольку в нашем примере мы назвали этот файл pptpserver , наша команда выглядит следующим образом:
Вы должны увидеть успешное подключение в логах PPTP-сервера:
На Вашем PPTP-клиенте настройте маршрутизацию на Вашу приватную сеть через интерфейс ppp0:
Ваш интерфейс ppp0 должен быть настроен, что можно проверить путем запуска ifconfig
Теперь Вы можете сделать пинг к Вашему PPTP-серверу и любым другим клиентам, подключенным к этой сети:
Мы можем добавить второй PPTP-клиент к этой сети:
Добавьте необходимые строки в файл /etc/ppp/peers/pptpserver (заменяя логины и пароли своими):
Теперь на втором клиенте выполните следующие команды:
Вы можете сделать пинг к первому клиенту, при этом пакеты будут идти через PPTP-сервер и перенаправляться по правилам ip-таблиц, которые мы задали ранее:
Такая настройка позволит Вам создать Вашу собственную виртуальную частную сеть:
Если Вы хотите, чтобы все ваши устройства общались безопасно в рамках одной сети, это наиболее быстрый способ сделать это.
Вы можете использовать такой подход совместно с Nginx, Squid, MySQL и любыми другими приложениями.
Для начала нам нужно выбрать и подготовить VDS
VDS с белым IP
Давайте выжмем максимум из нашего VDS!
В сети M MikroTik живет на IP адресе 192.168.0.10
В сети T MikroTik живет на IP адресе 10.0.0.1
И мы можем на них попасть по IP адресу нашего VPS сервера. Просто добавим правила:
iptables -t nat -A PREROUTING -p tcp -d IP_АДРЕС_VDS --dport 81 -j DNAT --to-destination 192.168.0.10:80
Указываем IP нашего VDS, указываем какой порт перенаправляем, в нашем случае 81, указываем на какой IP адрес и порт внутренней сети направляем трафик — 192.168.0.10:80
iptables -t nat -A PREROUTING -p tcp -d IP_АДРЕС_VDS --dport 82 -j DNAT --to-destination 10.0.0.1:80
Теперь если открыть IP_АДРЕС_VDS:81 — мы попадаем на микротик сети M, а IP_АДРЕС_VDS:82 — микротик сети T
Таким образом можно завернуть трафик любого порта в любую сеть на любой IP адрес на любой порт.
Можно пускать весь трафик через VDS, просто добавив PPTP соединение в маскарад и указав дистанцию меньшую, чем основной интернет, не забыв указать DNS в /etc/ppp/pptpd-options
ms-dns 8.8.8.8
ms-dns 8.8.4.4
После перезагрузки правило слетает, как сего сохранять — я описал в разделе iptables
Создание ресурсов
Описывать создание ресурсов (виртуальных машин, сетей и правил) я не буду, все это достаточно подробно описано в статье "Получаем бесплатные сервера в Oracle Cloud Free Tier". Замечу только, что для получения именно ARM64 инстанса нужно сменить Shape при создании Compute Instance на Ampere и выбрать выделяемые ресурсы (для бесплатного использования обещают 1 instance с 4 OCPU и 24 GB RAM или 4 кратно меньших, т.е. 1 OCPU/6 GB).
Выбор arm сервера
Шаг 2 - Добавление DNS-серверов в /etc/ppp/pptpd-options
Теперь Вы можете запустить PPTP-демон:
Проверьте, что он работает и принимает соединения:
Проблемы и ограничения
Не у всех поднимается доступ по SSH. Тут, к сожалению, ничего сказать не могу, потому что мне такой кейс отлаживать не приходилось. Рекомендовать могу только на втором этапе выше тщательно проверить, что вставился правильный публичный ключ. Имя пользователя при этом выводится в том же разделе "Доступ к экземпляру".
Нужно помнить, что это не просто виртуальная машина, а инстанс в облаке, закрытый сетевыми настройками не только внутри инстанса (чаще всего там уже заточенный iptables), но и снаружи его - в NetworkSecurityGroup, назначенной на виртуальную облачную сеть (VCN) инстанса. Поэтому если нужно открыть какие-то нестандартные порты - это может потребоваться делать в нескольких местах.
OpenVPN Access Server без лицензии позволяет не более двух одновременных подключений. Поэтому решение подходит для персонального VPN. Но в целом, конечно, ничто не мешает не ставить его из маркетплейса, а поднять пустой инстанс в Оракле (или не Оракле) и установить OpenVPN (или не OpenVPN) на этот инстанс самостоятельно из консоли. Это уже просто будет другая история.
Важный апдейт от @osipov_dv - в сервисе бесплатны только 10 ТБ исходящего трафика в месяц (в случае VPN получается суммирование вашего входящего и исходящего), а потом он будет вам стоить $0.0085/GB. Впрочем, на практике дотянуться до 10 ТБ потребления - это надо очень, очень постараться. По моим логам более 2 ТБ за месяц общего потребления моя семья никогда не осиливала, несмотря на немаленькую домашнюю ферму виртуализации. Но никогда не помешает оценить свои объемы потребления, прежде чем подписываться.
И еще один важный апдейт про Ampere-инстансы. На них в долгосрок рассчитывать не стоит, потому что см. ниже. Пересоздать их можно, но при этом IP будет новый. Поэтому для VPN и прочих публичных ресурсов подходит только x86.
Делай три - заходим в интерфейс управления
На самом деле необязательный шаг, но для понимания нюансов.
Логин и пароль для админки - те, которые вы ввели в настройках на шаге №2. На том конце - классический веб-интерфейс OpenVPN Access Server, так что в рамках непревращения статьи в "100500я статья про OpenVPN в интернете" описывать какие-то настройки здесь я не буду, тем более, что работать будет и с настройками по умолчанию.
Шаг 1 - Установка PPTP
Вам необходимо выбрать один сервер, который будет отвечать за раздачу IP-адресов другим серверам и авторизацию всех Ваших серверов в Вашей VPN. Он и станет Вашим PPTP-сервером.
На CentOS 6 x64:
На Ubuntu 12.10 x64:
Теперь необходимо отредактировать файл /etc/pptpd.conf , добавив в него следующие строчки:
В данном случае, localip - это IP-адрес вашего сервера, а remoteip - IP-адреса, которые будут присваиваться клиентам, которые в ним соединяются.
Затем Вам необходимо настроить авторизацию для PPTP путем добавления пользователей и их паролей. Просто добавьте их в /etc/ppp/chap-secrets :
Здесь сlient - это имя пользователя (логин), server - тип сервиса (в нашем примере - pptpd), secret - пароль, а в IP addresses указывается, какие IP-адреса могут авторизоваться (с данным логином и паролем). Установив в поле IP-адресов звёздочку * Вы указываете, что данная пара логин/пароль должна приниматься с любого IP.
Постскриптум
Много вопросов поступает про "OpenVPN - фу, а как L2TP?" и на место L2TP можно подставить любой другой протокол, например, WireGuard. Вряд ли стоит ради этого писать отдельные статьи, зачем порождать информационный мусор. Но если коротко - для любого другого протокола нужно просто завести инстанс, например, ubuntu minimal, а потом использовать готовые автосетапы road warrior - например, L2TP, OpenVPN и WireGuard. Единственный неочевидный момент здесь - открыть на сервисе нужные протоколу входящие порты (в свойствах инстанса - subnet - security list и там добавить соответствующие ingress rules).
Предоставление бесплатных серверов от малопопулярного облачного провайдера - это не новость. А новость в том, что теперь Oracle, вдобавок к двум едва живым бесплатным x86_64 серверам, открывает доступ к мощностям на ARM64 - для всех, даром, и пусть никто не уйдет обиженным!© Предложение по ARM значительно более производительное, чем на традиционных процессорах. Добавляя к этому остальные бесплатные "плюшки", я задаюсь вопросом: а зачем я до сих пор плачу за VPS и держу собственный серверок в подвале?! Все это можно выкинуть если удастся надежно и безопасно связать дата центр с домашней сетью.
Подключаем клиент MikroTik
Не важно какой интернет, сгодится любой. Не важно какой микротик, главное — свежая прошивка.
Я использую пользователя из первой строчки /etc/ppp/chap-secrets
Открываем в настройках микротика Interface -> + PPTP Client
Вводим название соединения (Name)
Указываем адрес соединения (Connected To)
Вводим User и Password
Жмем Apply
Через несколько секунд поднимется соединение с IP адресом 10.255.0.10
По этому адресу мы сможем сделать маршрут к данной сети.
Подключение клиента Windows ничем не отличается от создания обычного VPN соединения.
Второй микротик подключаем аналогично по второму логину и паролю и он соединяется с IP адресом 10.255.0.20
MikroTik Routes
Осталось сети филиалов сделать видимыми друг другу.
Открываем настройки микротика IP -> Routes
Жмем + и указываем через что идти на конкретный IP адрес.
Я рекомендую указывать только нужные IP адреса, но в этом примере укажу всю подсеть:
На микротике в сети T (напомню у него VPN IP 10.255.0.20 , внутренняя сеть 10.0.0.0/24 )
Указываем:
Dst. Adress: 192.168.0.0/24
Gateway: Наше PPTP соединение
Distance: я указал 30, единица меня смущает.
На микротике в сети M (напомню у него VPN IP 10.255.0.10 , внутренняя сеть 192.168.0.0/24 )
Указываем:
Dst. Adress: 10.0.0.0/24
Gateway: Наше PPTP соединение
Distance: 30
Теперь два офиса связаны. Можно провести тест скорости соединения. В моем случае с плохим интернетом (3G билайна в деревне Тульской области) на одном конце и (3G мегафона в деревне Московской области) на другом конце — максимальная скорость была 2.2Мбит.
IP адреса двух сетей доступны друг другу без проблем.
Результаты пингов:
Подмосковный мегафон 3G VDS: 56мсек
Тульский билайн 3G VDS: 80мсек
Тульский билайн Подмосковный мегафон: 140мсек
Хороший интернет VDS: 5мсек.
Хороший интернет Тульский билайн 3G: 104мсек
Хороший интернет Подмосковный мегафон 3G: 71мсек
Можно комфортно работать по RDP
Шаг 3 - Настройка форвардинга (Forwarding)
Очень важно включить форвардинг IP на Вашем PPTP-сервере. Это позволит Вам пересылать пакеты между публичным IP и приватными IP, которые Вы настроили при помощи PPTP. Просто отредактируйте /etc/sysctl.conf , добавив туда следующую строку, если ее там еще не было:
Для применения изменений выполните команду sysctl -p
В заключении
Это не самый безопасный способ объединения сетей, по этому лучше смотреть в сторону OpenVPN
Если вам нужна помощь в настройке микротика — оставьте комментарий на странице
На этот раз статья будет короткой и во многом самоочевидной. Потому что большинство потенциальных пользователей просто не знают о такой возможности, а сама настройка проста, как апельсин.
Oracle, придя на рынок облачных сервисов, активно привлекает новых клиентов. И одним из инструментов такого привлечения являются Always Free сервисы - зарегистрировавшийся клиент может пользоваться каким-то достаточно ограниченным набором ресурсов, как это следует из названия, бесплатно и неограниченно во времени. В список этих ресурсов входит два compute инстанса (каждый 2 ядра, 1GB RAM, 45GB HDD), которые можно использовать подо что угодно, но в нашем случае мы можем построить на них полностью бесплатный OpenVPN-сервер, буквально не умея практически ничего, кроме тыкания в кнопку Next. Чем мы и займемся.
Установка PPTP сервера
За что я люблю линукс? Консоль и репозитории.
(ц) Я
Все операции проводятся под root пользователем.
Установим PPTP сервер командой apt-get install pptpd
После установки отредактируем файл конфигурации командой nano /etc/pptpd.conf
И добавим в конце диапазон выдаваемых IP адресов. Я использую 10.255.0.150-200
localip 10.255.0.1
remoteip 10.255.0.100-200
Сохраняем командой Ctrl+O, закрываем Ctrl+X
Заносим клиентов командой nano /etc/ppp/chap-secrets
M pptpd Lyuhnsdf7i 10.255.0.10
T pptpd Kghndsfy7iyhnlkH 10.255.0.20
B pptpd K Moron pptpd khjJyghbfdhyuI 10.255.0.51
Максимальная длина пароля 63 символа, желательно без спец символов.
Сохраняем командой Ctrl+O, закрываем Ctrl+X
Перезапускаем pptp сервер командой service pptpd restart
Настраиваем форвардинг (пересылка между интерфейсами)
nano /etc/sysctl.conf
Ищем и раскомментируем строчку net.ipv4.ip_forward = 1 , если ее нет, то добавляем.
Применяем изменения командой sysctl -p
iptables
И так мы подключили микротик и сами подключились в Windows по VPN, но все равно не можем попасть на микротик по выдаваемому ему IP по VPN
Для исправления этой ситуации добавим правила:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT
iptables -I INPUT -s 10.255.0.0/24 -i ppp0 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp1 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp1 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp2 -j MASQUERADE
Обратите внимание на интерфейс, мы разрешили маскарад и входящие для ppp0 и ppp1 интерфейсов. Но если у нас много клиентов — надо разрешить много интерфейсов!
Добавим еще 18 штук:
iptables -I INPUT -s 10.255.0.0/24 -i ppp2 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp3 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp3 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp4 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp4 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp5 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp5 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp6 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp6 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp7 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp7 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp8 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp8 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp9 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp09 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp10 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp10 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp11 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp11 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp12 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp12 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp13 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp13 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp14 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp14 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp15 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp15 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp16 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp16 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp17 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp17 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp18 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp18 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp19 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp19 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp20 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp20 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT
Перезапустим service pptpd restart
Чтобы правила не слетали, сохраним их командой:
iptables-save > /etc/iptables_rules
Добавим их в автозагрузку:
nano /etc/rc.local
Перед exit добавим строчку:
/sbin/iptables-restore < /etc/iptables_rules
Так как наш pptpd сервер не запускается сам, перед exit добавляем:
service pptpd start
Проверяем все ли работает.
Перезагружаем сервер командой reboot и пробуем подключить VPN и подключиться к нашему микротику по адресу 10.255.0.10 и второму микротику по адресу 10.255.0.20 , у меня все получилось.
Чтобы видеть внутренние ресурсы сетей, нужно указать серверу где какая сеть находится.
Напомню:
M внутренняя сеть 192.168.0.0/24, VPN IP 10.255.0.10
T внутренняя сеть 10.0.0.0/24, VPN IP 10.255.0.20
B внутренняя 10.10.0.0/24, VPN IP 10.255.0.30
Для этого надо прописать маршруты:
ip route add 192.168.0.0/24 via 10.255.0.10
ip route add 10.0.0.0/24 via 10.255.0.20
ip route add 10.10.0.0/24 via 10.255.0.30
Но после перезагрузки, обрыва соединения они пропадают.
По этому мы будем их добавлять при каждом подключении клиента.
Редактируем:
nano /etc/ppp/ip-up
Перезагружаемся. Теперь при каждом соединении — под конкретного клиента будет добавляться свой маршрут.
Но Windows иногда не знает куда идти, если нужно попасть на 192.168.0.200
Мы укажем это маршрутом через 10.255.0.1
Через CMD добавляем маршрут:
route add -p 192.168.0.0 mask 255.255.255.0 10.255.0.1 METRIC 1
route add -p 10.0.0.0 mask 255.255.255.0 10.255.0.1 METRIC 1
При этом желательно указывать маршруты до конкретных IP, а не всей подсети, чтобы не давать лишнего доступа. Так же часто бывает 192.168.0.0/24 используется в домашней сети. Но лучше это предвидеть заранее, и сделать в сетях 10.*.*.*/24
Делай раз - регистрируемся
Идем на адрес https://signup.cloud.oracle.com/. Проходим крайне самоочевидный мастер регистрации, подтверждаем почту, привязываем платежную карту, доходим до дашборда, где будет написано "Your account is currently being set up, and some features will be unavailable. You will receive an email after setup completes." Дальше можно знакомиться с интерфейсом, но лучше до того, как аккаунт станет полностью подтвержденным, ничего значимого не делать. Обычно на это уходят единицы, в крайнем случае десятки минут.
Из тонких моментов - да, платежная карта нужна. На ней должен быть минимум 1 евро, который снимется при проверке карты. Но если вы будете пользоваться только always free ресурсами, никаких других денег с вас не снимут. По отзывам, далеко не все карты российских банков работают, я для подобных сервисов обычно использую карты из партнерских программ с Золотой Короной (Кукуруза от Связного, Озон.Кард - десятки их), с ними никаких проблем при регистрации в Оракле не возникало. Та же озоновская карта делается за единицы минут без изменения положения тела в пространстве.
Еще может быть непонятным момент выбора региона - тут, разумеется, вы выбираете, исходя из ваших целей, но я бы рекомендовал рассматривать наиболее географически к вам близкие регионы. Нужно помнить, что для VPN-сервиса задержка передачи пакета от клиента до сервера и назад добавляется к общей задержке, даже если вы пытаетесь подключиться к серверу в соседней с вами комнате. Также имеет смысл учитывать жесткость законодательства по авторским правам в конкретной стране - вдруг у вас торренты через этот канал польются. Вероятность проблем, конечно, невысока, но зачем потенциально усложнять ситуацию. Для себя я выбираю Нидерланды - там и AMS-IX рядом, да и в принципе страна хорошая. Но, повторюсь, вы можете выбрать любой регион из доступных и повлияет это только на задержку.
Делай два - запускаем сервер OpenVPN
Ваш аккаунт подтвердился, вам пришло уведомление об этом на электронную почту. И теперь вы, возможно, ожидаете, что мы будем разворачивать инстанс, ставить на него вручную и настраивать сервис, открывать для него порты. Но это же облако, там всё уже сделано за нас.
Идем в маркетплейс, там нажимаем на зеленую кнопку Get App справа сверху. Далее он нас попросит залогиниться - выбираем Commercial Market, логинимся. В появившемся окне нужно выбрать Compartment (он у вас пока что один) и подтвердить, что вы прочитали и приняли Terms of Use. После этого станет доступна кнопка Launch Stack, на которую мы немедленно и нажимаем.
Это запускает мастер создания инстанса, где на первом этапе никаких важных для нас настроек нет, можно просто нажать Next.
На втором этапе уже есть кое-что важное. В поле Compute Shape обязательно надо выбрать VM.Standard.E2.1.Micro вариант (возможно, когда вы это читаете - там могут быть другие цифры, но важно, что Micro - только они попадают под Always Free опцию).
Ниже, в Application Configuration, нам нужно создать админские логин и пароль к сервису (их можно будет использовать и для подключения к VPN, а можно будет создать для этого дополнительные реквизиты).
В Network Configuration в принципе всё можно оставить по умолчанию, если у вас есть какие-то специальные требования к адресации внутри VPN - здесь их можно скорректировать.
И, наконец, в Additional Configuration имеет смысл вставить ваш публичный ssh-ключ, чтобы вы смогли подключиться к сервису по SSH для управления из консоли. Если вам эта возможность не требуется - то и без него всё совершенно точно будет работать.
После нажатия Next мастер позволит вам обозреть ваши настройки в последний раз и нажать Create, после чего задача встанет в очередь на исполнение в Terraform'е. Исполняться иногда может долго, был случай - ждало больше 15 минут, но чаще всего через десятки секунд уже можно наблюдать радующее "Выполняется" в состоянии инстанса в списке. Провалившись в инстанс, можно в разделе "Доступ к экземпляру" посмотреть "Общедоступный IP-адрес", который и будет адресом вашего VPN-сервера.
Делай четыре - подключаемся к VPN
Want to learn more? Join the DigitalOcean Community!
Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.
Настройка Mikrotik
Самая трудоемкая и неудобная часть пройдена, осталось настроить домашний маршрутизатор. Здесь во многом мне помогла статья "AWS Site-to-Site VPN with MikroTik (RouterOS)", спасибо автору. Дополнить ее пришлось параметрами из документации Oracle и экспериментами.
Дальше я приведу необходимые параметры и рабочую очередность их настройки, без объяснения что это и зачем оно нужно, пытливый читатель сможет найти описания и объяснения в документации Oracle или Mikrotik.
Внимание! Важно чтобы правило обхода NAT было в списке выше, чем правило NAT c Action "masquerade"!
Если все сделано правильно, то между сетями должна появиться связь, пинги и данные начнут ходить в соответствии с настройками выбранного SecurityList из Oracle Cloud.
При желании можно создать второй туннель, но Mikrotik не позволяет создать 2-х Policy с одинаковыми Source Address и Destination Address. Вариантов использования второго туннеля несколько:
Задать для одного policy несколько peer, в таком случае первый будет основным, если он недоступен, используется следующий и так далее.
Разделить вашу подсеть на сегменты, и использовать для них разные peer. Например, имея подсеть 192.168.Х.0/24, поделим ее на 192.168.Х.0/25 и 192.168.Х.128/25, дальше можно создать для каждой из них отдельный policy, тогда трафик будет балансироваться в зависимости от сегмента, в котором находится источник трафика.
Если на вашем Mikrotik не одна сеть, а больше, то можно чередовать пиры для разных подсетей. Этот вариант также поможет балансировать трафик в зависимости от подсети из/в которую направлен трафик.
Прописать дополнительный peer к существующему policy, в этом случае туннель будет активироваться при проблемах с основным peer.
Разделить локальную или удаленную подсеть на 2 части (например 192.168.Х.0/24, можно поделить более мелкие сегменты 192.168.X.0/25 + 192.168.X.128/25) и использовать разные туннели для разных сегментов.
Для тех у кого на Mikrotik настроена более чем одна сеть настроить разные сети через разные туннели.
Собственно, на этом все. Состояние туннелей можно контролировать на портале Oracle Cloud.
Сразу предупреждаю, что бесплатно выдаются машинки достаточно слабенькие (одноядерные, на каждой RAM 1Gb, суммарное дисковое пространство обоих машин до 100Gb, подключение к сети 480Mbit), но для экспериментов этого более чем достаточно. Впрочем на них вполне можно развернуть почтовый сервер для небольшой организации, собственную систему управления умным домом или какой-нибудь FreePBX.
Я не буду здесь полностью описывать процедуру регистрации в Oracle Cloud, она достаточно хорошо представлена на официальном сайте, ссылка есть в конце статьи. Просто скажу, что для этого вам понадобится действующий адрес электронной почты, действующий (российский) телефон с возможностью приема SMS и банковская карта, на которой имеется хотя бы 1EUR или соответствующий рублевой эквивалент. Электронная почта и телефон используются в процессе регистрации, на них отправляются коды, которые необходимо будет затем подтвердить. На последнем шаге привязывается банковская карта (я использовал цифровую дебетовую от банка ВТБ), на ней в процессе регистрации блокируется сумма порядка 1EUR для проверки валидности карты. В дальнейшем она возвращается и больше карта никак не используется, если только вы не захотите сделать апгрейд с Free Tier на какой-либо платный тариф. Замечу, что сразу после завершения регистрации вам предоставляется бонус в размере 250EUR на 30 дней. Т.е. в течении месяца вы можете абсолютно бесплатно попробовать и другие сервисы, которые не входят в программу Free Tier.
Описанную ниже последовательность действий можно сильно упростить, если впоследствии вы не планируете подключать облачную инфраструктуру к своей локальной или офисной сети штатными средствами. В этом случае можно не создавать виртуальную сеть вручную, а сразу перейти к созданию виртуальных машин. Однако если хотите разобраться во взаимосвязи всех облачных элементов, лучше делайте все пошагово, не используя возможностей wizard.
В Oracle Cloud облачная приватная сеть (VCN), имеющая подключение к Интернет, в общем случае выглядит следующим образом:
Service Gateway, так же как и NAT Gateway, нам пока не нужны. Мы хотим получить виртуальную машину, полностью доступную из внешнего мира. Правда (и, видимо, это особенность большинства сервис-провайдеров) внешний адрес IP будет назначен не непосредственно виртуальной машине, а посредством технологии NAT 1:1 (на рисунке выше она фактически реализуется в объекте Internet Gateway).
Итак начнем с создания собственной сети (VCN) в датацентре домашнего региона. Для этого в меню (левый верхний угол страницы) выбираем пункт Networking.
Выбираем в меню "Networking"=>"Virtual Cloud Networks" и нажимаем на кнопку "Create VCN". Придумываем и вводим в поле "Name" идентификатор нашей VCN, а в поле "CIDR Blocks" добавляем минимум одну сеть. Пусть это будет сеть 172.31.254.0/26, в адресном пространстве которой будут адреса создаваемых нами виртуальных машин и всякие служебные туннели для связи виртуальной сети с нашей локальной или офисной сетью. Галочку в пункте "USE DNS HOSTNAMES IN THIS VCN" оставляем отмеченной, чтобы впоследствии можно было бы привязать внутренний DNS к этой VCN.
После создания VCN система также создаст нам следующие объекты по умолчанию: CIDR Blocks (1 шт), Route Tables (1 шт), Security Lists (1 шт) и DHCP Options (1 шт).
Теперь мы должны будем создать внутри VCN подсеть IP-адресов. Для этого нажимаем кнопку "Create Subnet". В поле "Name" вводим имя подсети (сейчас создаем подсеть, в которой будут располагаться виртуальные машины, поэтому назовем ее "Virtual Machines"). Subnet type выбираем "Regional", в поле "CIDR Block" запишем значение 172.31.254.0/28 (хватит нам для начала 13 адресов на 2 бесплатные виртуальные машины?). В "SUBNET ACCESS" выбираем "PUBLIC SUBNET" (чтобы на виртуальные машины нам потом выделили внешние IP-адреса), остальные поля заполняем единственно доступными для выбора на данном этапе значениями.
После создания VCN мы можем создать в ней Internet Gateways. Здесь вообще все просто: в поле "Name" вводим имя создаваемого Internet Gateway и нажимаем кнопку "Create Internet Gateway"
Остался предпоследний шаг, который обеспечит нам возможность выходить из нашей VCN в сеть Интернет (а также входить из Интернета в нашу VCN, используя NAT 1:1). Сначала в меню идем по пунктам "Networking"=>"Virtual Cloud Networks", затем в списке выбираем созданную ранее VCN Zurich, внутри нее в блоке "Resources" выбираем "Route Tables", в появившемся списке выбираем таблицу "Default Route Table for VCN Zurich" (она была создана ранее автоматически), и нажимаем кнопку "Add Route Rule". В поле "Target type" выбираем "Internet Gateway", в поле "DESTINATION CIDR BLOCK" пишем маршрут по умолчанию 0.0.0.0/0, в поле "Target Internet Gateway" выбираем элемент, созданный нами на предыдущем шаге (впрочем он пока вообще будет единственным в списке выбора).
А теперь стоит разрешить ICMP Echo запросы из внешнего мира к нашей внутренней инфраструктуре (по умолчанию они запрещены). Для этого снова выбираем наш VCN Zurich, в его ресурсах выбираем Security Lists. Там будет единственный элемент, созданный автоматически при создании VCN.
Выбираем его в списке, нажимаем кнопку "Add Ingress Rules" и добавляем правило, разрешающее ICMP Echo Requests с любых адресов.
Отлично, мы создали себе сетевую инфраструктуру с требуемым диапазоном внутренних адресов и с подключением к сети Интернет. Теперь можно перейти непосредственно к созданию виртуальных машин.
В меню выбираем пункты "Compute"=>"Instances" и нажимаем кнопку "Create Instance". В поле "Name" указываем имя создаваемой машины, выбираем требуемую нам ОС, в Shape указываем тип VM.Standard.E2.1.Micro (это бесплатная виртуальная машина), в блоке "Configure networking " устанавливаем значение "Assign a public IPv4 address: Yes" (чтобы нашей виртуальной машине выделили внешний адрес в сети Интернет). Ну и убеждаемся, что сеть VCN и подсеть внутри нее выбраны правильно (т.е. те, которые мы создавали на предыдущих шагах). При необходимости можно загрузить уже существующий открытый ключ SSH или создать новый.
Возвращаемся в пункт "Instances" чтобы узнать внешний IP-адрес вновь созданной виртуальной машины.
Примечание: на картинке выше в списке отображаются две виртуальные машины: одна только что созданная и одна с именем "eu-zurich-1-ad-1.vedga.com". Эту машину я создавал ранее, а потом удалил. Но она все равно еще сутки будет отображаться в этом списке в состоянии "Terminated". Беспокоиться нечего: удаленные машины ресурсы не потребляют и не помешают вам создавать новые виртуальные машины (в пределах бесплатного лимита).
Для проверки делаем ping на внешний адрес, и если сеть на предыдущих шагах была настроена правильно, то мы получим ответ от нашей виртуальной машины. Теперь на нее можно зайти по SSH. Замечу, что при создании виртуальной машины из образа Ubuntu, первый вход надо делать не с именем root, а с именем ubuntu и заданным при создании машины SSH-ключом. Впрочем если попробуете зайти под root сразу он вас хотя и не пустит, но укажет, что надо сделать. Для перехода в режим root введите команду sudo /bin/bash, скопируйте содержимое /home/ubuntu/.ssh/* в /root/.ssh и поменяйте владельца файла /root/.ssh/authorized_keys на root:root. Теперь можно будет зайти на машину сразу под root-пользователем, используя ключ SSH.
Теперь у вас есть одна (или две) виртуальные машины, защищенные облачным firewall, и доступ к ним из внешнего мира. Кому-то этого будет достаточно, кто-то быстро поставит на них OpenVPN и свяжет их со своей сетью. А мы будем строить VPN штатными средствами Oracle Cloud (IPSec со статической или динамической BGP маршрутизацией и Mikrotik или Linux на другом конце туннеля), но это уже тема отдельной статьи. Итак, продолжение следует.
N.B. В комментариях пишут, что иногда Oracle удаляет созданные ресурсы без предупреждения. А также то, что через некоторое время с привязанной карты повторно списывается и возвращается 1EUR (подтверждаю, у меня тоже был запрос авторизации с немедленной отменой). Возможно эти вещи взаимосвязаны: пока есть живая карта, Free Tier будет работать. Если карта пропала, значит пропал и пользователь и ресурсы можно удалять. Но это только предположение.
Один из часто задаваемых нашими пользователями вопросов - как добавить другой IP-адрес к их серверу. Вы можете назначить свой приватный IP-адрес Вашему дроплету путем создания VPN-туннеля. Для построения своей собственной виртуальной частной сети (VPN) или присвоения SSL-сертификата этому IP-адресу существует несколько вариантов. Из всех возможных вариантов наиболее оптимальным является выбор между PPTP и OpenVPN. Point-To-Point Tunneling Protocol (PPTP) позволяет Вам поднять свой VPN очень быстро и является совместимым с большинством мобильных устройств. И хотя PPTP менее безопасен, чем OpenVPN, он быстрее и использует меньше ресурсов процессора.
Заключение
Понимаю, что большинство читателей способны самостоятельно настроить VPN-сервер, поэтому не претендую на техническую полезность статьи. Скорее это просто рассказ о существующей возможности, про которую слышали далеко не все. Теперь, надеюсь, знающих будет больше.
Читайте также: