Openvpn доступ в интернет: Настройка OpenVPN-сервера для доступа в интернет
Настройка OpenVPN шлюза в интернет на Debian, который на OpenVZ / Хабр
Итак господа, приближается первое августа, поэтому задумался я над тем чтобы заиметь себе ip страны, в которой попроще с законодательством в сфере p2p, а именно Нидерландов. После достаточно долгих поисков нашел провайдера, который обещал два ядра от E3-1230, пару гигов памяти, 460 гигов винта и прекрасный нелимитированный(специально связывался с саппортом по этому вопросу — уверяют что канал не режут и после сотни терабайт) гигабитный канал за какихто 40 с копейками баксов. Единственное но — виртуализация OpenVZ — обычно я настраивал OpenVPN на XEN или KVM, поэтому все прошло не так гладко как обычно и поэтому я решил поделиться полученными знаниями.
Дистрибутив ОС — Debian 6
Итак начнем:
Устанавливаем OpenVPN и dnsmasq
aptitude install openvpn udev dnsmasq
Далее копируем скрипты генерации ключей
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
Потом нам обычно предлагают поправить файл /etc/openvpn/easy-rsa/2.0/vars, но если шлюз делается «для себя», то этот пункт совершенно необязателен. Если же хочется красоты то в конце вышеуказанного файла правим следующее:
export KEY_COUNTRY="XX"
export KEY_PROVINCE="XX"
export KEY_CITY="City"
export KEY_ORG="MyCompany"
export KEY_EMAIL="[email protected]"
После правки vars генерируем корневой сертификат
cd /etc/openvpn/easy-rsa/2.0/
. /etc/openvpn/easy-rsa/2.0/vars
. /etc/openvpn/easy-rsa/2.0/clean-all
. /etc/openvpn/easy-rsa/2.0/build-ca
Далее генерируем сертификаты сервера и клиента\клиентов(вместо cli1,cli2 можно придумывать удобные для себя названия)
. /etc/openvpn/easy-rsa/2.0/build-key-server server
. /etc/openvpn/easy-rsa/2.0/build-key cli1
. /etc/openvpn/easy-rsa/2.0/build-key cli2
Потом генерируем параметры Диффи-Хеллмана
. /etc/openvpn/easy-rsa/2.0/build-dh
Раскладываем ключи, на клиентскую сторону нужно отдать файлы ca.crt cli1.crt cli1.key, а в директорию /etc/openvpn положить файлы ca.crt ca.key dh2024.pem server.crt server.key
cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh2024.pem server.crt server.key /etc/openvpn
Теперь скопируем в директорию /etc/openvpn пример конфига, который поставляется вместе с ПО.
cd /usr/share/doc/openvpn/examples/sample-config-files
gunzip -d server.conf.gz
cp server.conf /etc/openvpn/
Чтобы наш впн сервер раздавал интернет своим клиентам в /etc/openvpn/server.conf допишем
push "redirect-gateway def1"
push "dhcp-option DNS 10.8.0.1"
Далее включаем ip-forwarding
в файле /etc/sysctl.conf раскомментируем строку
net.ipv4.ip_forward=1
а в консоли выполним
echo 1 > /proc/sys/net/ipv4/ip_forward
чтобы изменения применились без перезагрузки.
Далее настраиваем iptables.
Если у Вас выделенный сервер, или виртуальный на Xen или KVM, то в консоли пишем
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Если виртуализация OpenVZ, то обычный NAT работать не будет, и надо использовать SNAT, для этого в консоли пишем
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to <b>a.b.c.d</b>
iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT
Вместо a.b.c.d соответственно внешний ip вашего сервера
Чтобы правила iptables применялись при загрузке ОС, пропишем их в /etc/rc.local, туда же, после применения правил iptables добавим перезагрузку dnsmasq. Пример файла /etc/rc.local после внесения изменений —
для dedicated\Xen\KVM:
#!/bin/sh -e
#
# [...]
#
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/etc/init.d/dnsmasq restart
exit 0
для OpenVZ:
#!/bin/sh -e
#
# [...]
#
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to <b>a.b.c.d</b>
iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT
/etc/init.d/dnsmasq restart
exit 0
Далее настроим dnsmasq, для этого откроем файл /etc/dnsmasq.conf и раскомментируем\поправим две строки
listen-address=127.0.0.1,10.8.0.1
bind-interfaces
На этом настройка сервера закончена, можно перезапускать сервисы и начинать настраивать клиентов.
service openvpn restart
service dnsmasq restart
В моем случае все клиенты были на Windows 7, поэтому расскажу только про настройки клиентов на винде.
Скачиваем софт — OpenVPN, устанавливаем, в случае с Windows 7 запускаем от имени администратора «Пуск\OpenVPN\OpenVPN Gui»
Далее создаем файл %имя%.ovpn со следующим содержимым
push "redirect-gateway def1"
client
dev tun
proto udp
remote <b>a.b.c.d</b> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert <b>cli1.crt </b>
key <b>cli1.key</b>
comp-lzo
verb 3
Вместо a.b.c.d — адрес сервера.
Складываем файл %имя%.ovpn и ранее полученные ca.crt cli1.crt cli1.key в C:/Programm files(x86)/OpenVPN/config
Вот и все, в трее правой мышью по значку OpenVPN -> Connect и нас переносит в другую страну.
Создание VPN-соединения с помощью OpenVPN | Yandex.Cloud
В сценарии рассматривается настройка OpenVPN-инстанса для доступа к виртуальным машинам Yandex.Cloud через шифрованное соединение. В сценарии рассматривается вариант настройки OpenVPN-шлюза с доступом по логину и паролю.
Чтобы настроить VPN-туннель:
- Подготовьте облако к работе.
- Создайте подсети и тестовую ВМ.
- Создайте OpenVPN-инстанс.
- Задайте пароль администратора.
- Создайте пользователя OpenVPN.
- Подключитесь к VPN.
Если OpenVPN-инстанс больше не нужен, удалите его.
Подготовьте облако к работе
Перед тем, как разворачивать сервер, нужно зарегистрироваться в Yandex.Cloud и создать платежный аккаунт:
- Перейдите в консоль управления, затем войдите в Yandex.Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
- На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша виртуальная машина, на странице облака.
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры OpenVPN входят:
Создайте подсети и тестовую ВМ
Для связи облачных ресурсов с интернетом необходимо иметь созданные сети и подсети.
Создайте тестовую виртуальную машину без публичного IP-адреса и подключите ее к подсети.
Создайте OpenVPN-инстанс
Создайте в Yandex.Cloud виртуальную машину, которая будет служить шлюзом для VPN-туннеля.
Откройте ваш каталог и нажмите кнопку Создать ресурс. Выберите пункт Виртуальная машина.
Укажите имя виртуальной машины, например
openvpn-instance
.Выберите зону доступности, где находится подсеть, к которой будет подключен OpenVPN-инстанс, и где уже находится тестовая ВМ.
В блоке Образы из Cloud Marketplace нажмите кнопку Выбрать и выберите образ OpenVPN.
В блоке Сетевые настройки выберите требуемую сеть, подсеть и назначьте ВМ публичный IP-адрес из списка или автоматически.
Используйте только статические публичные IP-адреса из списка, или сделайте IP-адрес созданной машины статическим. Динамический IP-адрес может измениться после перезагрузки ВМ и соединения перестанут работать.
В поле Доступ укажите логин и SSH-ключ для доступа к ВМ.
Нажмите кнопку Создать ВМ.
Задайте пароль администратора
На сервере OpenVPN заранее создан пользователь openvpn
с административными правами. Чтобы получить доступ к административной панели, нужно задать этому пользователю пароль.
Подключитесь к виртуальной машине по SSH:
$ ssh <публичный IP-адрес ВМ>
Выполните команду:
$ sudo passwd openvpn Enter new UNIX password:
Введите новый пароль.
После этого можно войти в административную панель OpenVPN.
Создайте пользователя OpenVPN
Для подключения через OpenVPN на клиентской машине нужно ввести логин и пароль пользователя. Создайте нового пользователя:
- Откройте в браузере URL вида
https://<публичный IP-адрес ВМ>:943/admin/
. - Введите имя пользователя
openvpn
и созданный на предыдущем шаге пароль. - Нажмите кнопку Agree. Откроется главный экран административной панели OpenVPN.
- Разверните вкладку User management и выберите пункт User permissions.
- В списке пользователей введите имя нового пользователя в поле New Username, например
test-user
. - Нажмите значок карандаша в столбце More Settings и в поле Password введите пароль нового пользователя.
- Нажмите кнопку Save settings.
- Нажмите кнопку Update running server.
После этого можно подключаться к VPN с помощью OpenVPN Connect.
Подключитесь к VPN
Чтобы убедиться, что соедиение устанавливается и работает, подключитесь к VPN и выполните команду ping
для внутреннего адреса тестовой ВМ:
- Запустите OpenVPN Connect Client.
- Создайте новое соединение. Укажите IP-адрес ВМ, пользователя
test-user
и его пароль. - Включите созданное соединение.
- Откройте терминал и выполните команду
ping <внутренний IP-адрес тестовой ВМ>
. Если команда выполняется, доступ к ВМ через OpenVPN есть.
Удалите созданные ресурсы
Если вам больше не нужен OpenVPN-инстанс, удалите ВМ openvpn-instance
и тестовую ВМ.
Если вы зарезервировали публичный статический IP-адрес, удалите его.
Настройка OpenVPN-сервера для доступа в интернет
03:02 13.10.2019
Настройка OpenVPN-сервера для доступа в интернет
В наших прошлых материалах мы рассматривали применение OpenVPN исключительно для организации каналов связи между подразделениями организации. Но современный мир приносит новые вызовы, на которые следует реагировать. Один из них — общественные сети с низкой безопасностью, для работы в которых желательно иметь защищенный канал, препятствующий доступу третьих лиц к вашему трафику. Традиционно эта задача решается использованием VPN-сервисов и в данной статье мы расскажем, как организовать собственный сервис на базе OpenVPN.
Кроме общественных сетей в последние годы стала приобретать повышенную актуальность проблема ограничения доступа к некоторым ресурсам исходя из географического расположения клиента. Это могут быть как ограничения регионального характера, например, популярный поставщик видеоконтента Netflix, так и блокировки со стороны органов власти, как яркий пример которых «ковровые блокировки» РКН в его борьбе с Телеграм, когда под ограничения попало большое количество совершенно легальных ресурсов.
Исходя из вышесказанного можно сделать вывод, что наличие VPN-сервиса для доступа в интернет в современных условиях — это не роскошь, а насущная необходимость, особенно если ваша деятельность завязана на работу в сети. Да, существуют многочисленные VPN-провайдеры, но их услуги являются платными и снова встает вопрос доверия, особенно если вы используете канал для обмена конфиденциальной или финансовой информацией.
Что нужно для создания собственного VPN-сервиса? Прежде всего потребуется VPS (виртуальный выделенный сервер) расположенный в регионе, из которого возможен неограниченный доступ к требуемым ресурсам. В большинстве случаев можно выбирать Европу или Штаты, но во втором случае задержки будут выше. На наш взгляд, выбирать Штаты имеет смысл, если вам требуется доступ к американским ресурсам, тому же Netflix или покупкам у американских продавцов на Amazon и Ebay.
Для поиска недорогих VPS можно воспользоваться специальными сайтами, такими как Low End Box или бесплатными предложениями от облачных провайдеров. Так у Amazon и Microsoft можно бесплатно получить виртуальную машину на год, а Oracle предлагает две VPS бесплатно и навсегда.
В нашем примере мы будем использовать бесплатный VPS от Oracle с Ubuntu 18.04, но данная инструкция подойдет для любых deb-based систем и с некоторыми поправками для любого другого Linux-дистрибутива.
Настройка сервера OpenVPN
Прежде всего установим OpenVPN и Easy-RSA для управления ключами:
apt install openvpn easy-rsa
Скопируем файлы easy-rsa в конфигурационную директорию OpenVPN и создадим символическую ссылку на файл настроек OpenSSL:
cp -r /usr/share/easy-rsa /etc/openvpn
ln -s /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
Затем откроем файл /etc/openvpn/easy-rsa/vars и изменим в нем следующие строки, указав собственные данные для сертификатов, например, так:
export KEY_COUNTRY="US"
export KEY_PROVINCE="Wild West"
export KEY_CITY="Uncle Tom's Cabins"
export KEY_ORG="Uncle Tom"
export KEY_EMAIL="[email protected]"
export KEY_OU="Cabin"
Сохраним файл и перейдем к созданию собственного центра сертификации (CA). Для этого перейдем в директорию нашего CA и загрузим переменные:
cd /etc/openvpn/easy-rsa
source ./vars
Очистим любые имеющиеся данные и инициализируем центр сертификации:
./clean-all
./build-ca
В процессе создания ключей вам будут задаваться вопросы, ответы по умолчанию на которые берутся из файла vars и помещены в квадратных скобках, поэтому можно просто подтверждать их нажатием Enter.
После чего в директории /etc/openvpn/easy-rsa/keys появится сертификат CA, содержащий публичный ключ, ca.crt, который должен присутствовать на каждом VPN-клиенте, и закрытый ключ центра сертификации ca.key, этот файл является секретным и не должен покидать пределы сервера.
Затем создадим файл параметров Диффи-Хеллмана, который нужен для формирования уникального сеансового ключа и обеспечения режима совершенной прямой секретности:
./build-dh
Данная операция, в зависимости от производительности вашего VPS, может занять достаточно много времени.
И, наконец, создадим ключевую пару для сервера:
./build-key-server server
где server — имя вашего сервера, мы рекомендуем давать осмысленные названия, чтобы потом не пришлось гадать, что именно это за ключевая пара и для чего она нужна.
На этом формирование необходимых ключей и сертификатов закончено, перейдем к настройке OpenVPN, прежде всего создадим директорию для хранения ключей. Можно, конечно, использовать ключи прямо из директории easy-rsa, но лучше отделить CA от остальных служб.
mkdir /etc/openvpn/keys
Теперь скопируем туда необходимые серверу ключи и сертификаты:
cd /etc/openvpn/easy-rsa/keys
cp ca.crt dh3048.pem server.crt server.key /etc/openvpn/keys
Распакуем и скопируем в директорию /etc/openvpn шаблон серверной конфигурации:
gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn
Откроем файл /etc/openvpn/server.conf и внесем в него необходимые изменения, в большинстве случаев вам придется раскомментировать нужны строки или убедиться в их наличии. Опции указаны в порядке их следования в файле:
port 1194
proto udp
dev tun
Данные опции указывают порт, протокол и тип туннеля, менять их не следует, однако в ряде случаев может потребоваться использовать протокол tcp, но в силу более высоких накладных расходов этой ситуации желательно избегать.
Затем зададим топологию сети:
topology subnet
Укажем пути к ключам и сертификатам, допускаются относительные пути, в этом случае корнем будет считаться директория /etc/openvpn:
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh3048.pem
Зададим диапазон OpenVPN-сети:
server 10.88.0.0 255.255.255.0
И укажем файл для хранения адресов клиентов, которые будут автоматически выдаваться сервером:
ifconfig-pool-persist /var/log/openvpn/ipp.txt
Автоматически сконфигурируем клиентов на доступ в интернет через OpenVPN-подключение:
push "redirect-gateway def1 bypass-dhcp"
И передадим им собственные DNS-сервера:
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Укажем параметры проверки активности:
keepalive 10 120
Сервер будет проверять клиента каждые 10 секунд и при отсутствии ответа через 120 секунд клиент будет считаться неактивным.
Обязательно закомментируйте строку:
#tls-auth ta.key 0
Для сценария доступа в интернет дополнительная TLS-аутентификация будет излишней.
В последних версиях OpenVPN включен механизм автоматического согласования протоколов шифрования между клиентом и сервером, по умолчанию будет выбран шифр AES-256-GCM, но так как вычислительные возможности VPS обычно ограничены и большого смысла шифровать канал доступа в интернет сложными шифрами нет, то отключим соглассование и укажем достаточно простой AES-шифр:
ncp-disable
cipher AES-128-CBC
Также в новых версиях доступен новый механизм компрессии, для его включения укажем:
compress lz4-v2
push "compress lz4-v2"
Данная опция будет автоматически отправлена на клиент, что облегчает его конфигурирование.
Если у вас есть старые версии клиентов (ниже 2.4), то можно использовать простое lzo-сжатие, для этого закомментируйте вышеприведенные строки и добавьте:
comp-lzo
Эту опцию также потребуется добавить в конфигурационные файлы клиентов.
В целях безопасности понизим права запущенного сервера:
user nobody
group nogroup
После чего проконтролируем наличие опций, отвечающих за правильные права к некоторым ресурсам после их понижения:
persist-key
persist-tun
Укажем путь к файлам логов:
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
И укажем его подробность:
verb 3
Во время отладки можно поднять уровень логов до 5-6.
Настройка брандмауэра и маршрутизации
Основной задачей нашего сервера является обеспечение выхода в интернет и будет разумно обеспечить минимальный набор правил безопасности, во многом они будут повторять те правила, которые мы использовали для наших роутеров на базе Linux.
Создадим файл правил:
touch /etc/nat
и внесем в него следующие строки, обратите внимание на имя сетевого интерфейса вашего VPS, в нашем случае это ens3:
#!/bin/sh
# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward# Сбрасываем настройки брандмауэра
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# Разрешаем инициированные нами подключения извне
iptables -A INPUT -i ens3 -m state --state ESTABLISHED,RELATED -j ACCEPT# Разрешаем подключения по SSH
iptables -A INPUT -i ens3 -p tcp --dport 22 -j ACCEPT# Разрешаем подключения к OpenVPN
iptables -A INPUT -i ens3 -p udp --dport 1194 -j ACCEPT#Запрещаем входящие извне
iptables -A INPUT -i ens3 -j DROP# Разрешаем инициированные нами транзитные подключения извне
iptables -A FORWARD -i ens3 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT# Запрещаем транзитный трафик извне
iptables -A FORWARD -i ens3 -o tun0 -j DROP# Включаем маскарадинг для локальной сети
iptables -t nat -A POSTROUTING -o ens3 -s 10.88.0.0/24 -j MASQUERADE
Не забудем сделать файл исполняемым:
chmod +x /etc/nat
Данный файл требуется запускать после создания туннельного интерфейса tun0, поэтому откроем конфигурационный файл сервера OpenVPN /etc/openvpn/server.conf и в его конце добавим опцию:
up /etc/nat
Перезагрузим сервер и убедимся, что OpenVPN сервер автоматически запустился и создал туннельный интерфейс, это можно сделать командой:
ip a
Также проверим применение правил брандмауэра:
iptables -L -vn
Следующий шаг касается только виртуальных машин в облаке Oracle Cloud, вам потребуется дополнительно разрешить входящий трафик на порт OpenVPN. Для этого перейдите в Сети » Виртуальные облачные сети » VirtualCloudNetwork-20191008-0144 » Сведения о списках безопасности, где вместо VirtualCloudNetwork-20191008-0144 будет имя вашей виртуальной сети. Затем добавьте новое правило для входящего трафика:
Укажите: Тип источника — CIDR, Исходный CIDR — 0.0.0.0/0, IP-протокол — UDP, Диапазон исходных портов — Все, Диапазон конечных портов — 1194.
Настройка клиентов OpenVPN
Настройка клиента начинается на сервере с получения ключей и сертификатов клиента, для этого перейдем в директорию центра сертификации и загрузим переменные:
cd /etc/openvpn/easy-rsa
source ./vars
Затем создадим ключевую пару клиента командой:
./build-key client
где client -имя клиента, мы также рекомендуем давать им осмысленные имена.
Теперь скопируем файлы, которые необходимо передать на компьютер клиента в домашнюю директорию и изменим их владельца (по умолчанию владелец — root), чтобы вы смогли их скопировать с помощью любого FTP или SFTP клиента. В нашем случае имя пользователя ubuntu:
cd /etc/openvpn/easy-rsa/keys
cp ca.crt client.crt client.key ~
Помните, что закрытый ключ клиента client.key является секретным и следует избегать его передачи по открытым каналам связи.
Также не будет лишним сразу скопировать шаблон клиентской конфигурации:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client.ovpn
После чего скопируйте все эти файлы на клиент и установите на нем OpenVPN, в Windows системах советуем изменить путь установки OpenVPN на более короткий и без пробелов, скажем, C:\OpenVPN.
Затем откроем файл client.ovpn, который в Windows системах должен быть расположен в C:\OpenVPN\config, а в Linux в /etc/openvpn, и внесем в него следующие изменения:
client
dev tun
proto udp
Данные опции задают клиентский режим работы, тип туннеля и используемый протокол UDP.
Затем укажем адрес сервера:
remote 111.222.333.444 1194
Следующая опция предписывает клиенту постоянно разрешать имя OpenVPN-сервера, имеет смысл если мы указываем сервер по FQDN-имени, а не IP-адресу.
resolv-retry infinite
Для Linux систем обязательно укажите:
user nobody
group nogroup
В Windows данные опции следует обязательно закомментировать.
Проконтролируем наличие следующих опций:
persist-key
persist-tun
Укажем пути к ключам и сертификатам, для Linux систем подразумеваем их нахождение в /etc/openvpn/keys:
ca keys/ca.crt
cert keys/client.crt
key keys/client.key
Для Windows систем предположим их нахождение в C:\OpenVPN\keys:
ca C:\\OpenVPN\\keys\\ca.crt
cert C:\\OpenVPN\\keys\\client.crt
key C:\\OpenVPN\\keys\\client.key
Также обязательно закомментируем опцию:
#tls-auth ta.key 1
Включим защиту от атак типа «человек посередине»:
remote-cert-tls server
И укажем используемый шифр, он должен совпадать с указанным на сервере:
cipher AES-128-CBC
Остальные опции можно оставить без изменений. Сохраним файл и запустим OpenVPN-клиент.
Убедиться, что вы выходите в интернет через VPN-канал можно при помощи любого сервиса, показывающего ваш IP-адрес, например, 2ip.ru:
Обращаем внимание на национальную принадлежность адреса, в данном случае мы выходим в интернет из Штатов.
Самое время провести замер скорости доступа, мы будем использовать для этого популярный сервис SpeedTest. Первый замер без VPN:
Второй через OpenVPN-канал:
Сразу обращаем внимание на выросший пинг — это последствия размещения сервера в Штатах, а также скорость скачивания не выше 10 Мбит/с — ограничение бесплатного тарифа Oracle, хотя в большинстве случаев этого вполне достаточно для комфортного серфинга.
Напоследок затронем еще один момент. Мы настроили сервер таким образом, что он автоматически конфигурирует клиента на доступ в интернет через OpenVPN-подключение, но бывают случаи, когда это не нужно. Допустим вы хотите пустить через VPN только некоторые ресурсы, а остальной доступ должен осуществляться через локального провайдера. В таком случае добавьте в конфигурационный файл клиента опцию:
route-nopull
После чего клиент будет игнорировать передаваемые с сервера опции маршрутизации и DHCP-опции, такие как DNS-сервера и т.п.
read more at Записки IT специалиста
Какой параметр в openvpn отвечает за «интернет через vpn»? — Хабр Q&A
port 2235
proto tcp
# «dev tun» will create a routed IP tunnel,
# «dev tap» will create an ethernet tunnel.
# Use «dev tap0» if you are ethernet bridging
# and have precreated a tap0 virtual interface
# and bridged it with your ethernet interface.
# If you want to control access policies
# over the VPN, you must create firewall
# rules for the the TUN/TAP interface.
# On non-Windows systems, you can give
# an explicit unit number, such as tun0.
# On Windows, use «dev-node» for this.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun
# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel if you
# have more than one. On XP SP2 or higher,
# you may need to selectively disable the
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh3048.pem
# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
server 10.8.0.0 255.255.255.0
# Maintain a record of client <-> virtual IP address
# associations in this file. If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
ifconfig-pool-persist /var/log/openvpn/ipp.txt
# If enabled, this directive will configure
# all clients to redirect their default
# network gateway through the VPN, causing
# all IP traffic such as web browsing and
# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in order for this to work properly).
push «redirect-gateway def1 bypass-dhcp» #это за интернет
# Certain Windows-specific network settings
# can be pushed to clients, such as DNS
# or WINS server addresses. CAVEAT:
# openvpn.net/faq.html#dhcpcaveats
# The addresses below refer to the public
# DNS servers provided by opendns.com.
push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»
# Uncomment this directive to allow different
# clients to be able to «see» each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server’s TUN/TAP interface.
;client-to-client
keepalive 10 120
# For extra security beyond that provided
# by SSL/TLS, create an «HMAC firewall»
# to help block DoS attacks and UDP port flooding.
#
# Generate with:
# openvpn —genkey —secret ta.key
#
# The server and each client must have
# a copy of this key.
# The second parameter should be ‘0’
# on the server and ‘1’ on the clients.
tls-auth ta.key 0 # This file is secret
key-direction 0
cipher AES-256-CBC
auth SHA256
# Enable compression on the VPN link and push the
# option to the client (v2.4+ only, for earlier
# versions see below)
;compress lz4-v2
;push «compress lz4-v2»
# For compression compatible with older clients use comp-lzo
# If you enable it here, you must also
# enable it in the client config file.
;comp-lzo
# The maximum number of concurrently connected
# clients we want to allow.
max-clients 15
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
mute 20
Как использовать OpenVPN для доступа к домашней сети через Wi-Fi роутер (новый логотип)?
Эта статья подходит для:
Archer AX50( V1 ) , Archer A2300( V1 ) , Archer AX10( V1 ) , Archer AX6000( V1 ) , Archer C59( V2 V3 ) , Archer C58( V2 ) , Archer A20( V1 ) , Archer AX1800( V1.20 ) , Archer C3150 V2 , Archer C2300( V1 V2 ) , Archer C3200( V2 ) , Archer A6( V2 ) , Archer A7( V5 ) , Archer C3150( V2 ) , Archer C60( V2 V3 ) , Archer C8( V4 ) , Archer C9( V5 ) , Archer C6( V2 ) , Archer A9( V6 ) , Archer C7( V4 V5 ) , Archer C5400( V2 ) , Archer C4000( V2 ) , Archer C90( V6 ) , Archer C1200( V2 ) , Archer A10( V1 ) , Archer C5400X( V1 ) , Archer AX20( V1 ) , Archer AX3000( V1 )
При соединении OpenVPN домашняя сеть может выступать в качестве сервера, а удаленное устройство может получать доступ к серверу через маршрутизатор, который работает как шлюз сервера OpenVPN. Чтобы использовать функцию VPN, необходимо включить OpenVPN-сервер на маршрутизаторе, а также установить и запустить программное обеспечение VPN-клиента на удаленном устройстве. Пожалуйста, следуйте инструкциям ниже, чтобы установить соединение OpenVPN.
Шаг1. Настройка OpenVPN сервера на маршрутизаторе:
1.Войдите в веб-интерфейс маршрутизатора. Если вы не знаете, как это сделать, воспользуйтесь инструкциями:
a. Как войти в веб-интерфейс Wi-Fi роутера (новый логотип)?
b. Как войти в веб-интерфейс Wi-Fi роутера (новый логотип)?
2.Перейдите в Дополнительные настройки (Advanced) > VPN Server > OpenVPN и отметьте Включить VPN Server (Enable VPN Server).
Примечание:
• Перед включением VPN-сервера рекомендуется настроить службу динамического DNS (рекомендуется), назначить статический IP-адрес для порта WAN маршрутизатора и синхронизировать системное время с интернетом.
• При первой настройке OpenVPN сервера может потребоваться сгенерировать сертификат перед включением VPN-сервера.
3.Выберите Тип Сервиса (Service Type – протокол связи) для OpenVPN сервера: UDP, TCP.
4.Введите Порт VPN Сервиса (VPN Service Port), к которому подключается VPN-устройство, номер порта должен быть от 1024 до 65535.
5. В полях подсеть VPN/маска сети (VPN Subnet/Netmask) введите диапазон IP-адресов, которые могут быть зарезервированы сервером OpenVPN.
6. Выберите тип клиентского доступа (Client Access). Вы
OpenVpn настройка, обзор. Бесплатный Vpn сервер, сменить IP.
OpenVpn настройка, обзор. Бесплатный Vpn сервер, сменить IP.
Donate Yandex COVID-19
Анонимность в интернет и смена IP адреса, OpenVpn. 10 бесплатных VPN адресов для OpenVpn:
- VPN(Virtual Private Network, виртуальная частная сеть). Анонимность в сети интернет может послужить для разного рода деятельности. Скажем вам надо зайти на заблокированный сайт, к которому вам прекратил доступ злой админ сайта. Ваш IP адрес попал по какой то причине в список спам адресов или другой любой черный список в котором наблюдается ваш адрес, из-за этого у вас наблюдаются проблемы с серфингом и регистрацией на новых и старых сайтах. Хотите оставить комментарий и оставить свой адрес не узнаваемый(анонимно). Вам не посмотреть фильм онлайн потому что для вашей страны есть ограничения по лицензии этого фильма. Вы хотите зарегистрироваться или просмотреть сайт принадлежащий другой стране, но на сайте есть ограничения по странам. Вы подключились в кафе к wi fi станции и если у вас настроен VPN то весь трафик до сервера VPN от вас будет идти в зашифрованном виде. Станция WiFi не сможет увидеть о кроме заголовков сайтов вами посещаемыми.
- Помните что все запрещенные действия по закону будут переданы в соответствующие службы. Не важно что вы используете VPN и шифруете DNS трафик, что есть начало есть и конец, я это к тому что тоннель VPN закончится и какой то сервер выпустит вас в инет, вот он то и будет знать все о вас. Вы можете с помощью VPN только шифровать какой то участок, скажем тот же WIFI в кафе, вить вы не знаете что происходит с вашим трафиком подключившись к такой точке. Захотите расплатиться переводом и войдя в банк онлайн в кафе тут и попадетесь на крючок. VPN тоннель сможет провести вас сквозь эту точку в кафе и не выдать ей никакие данные, но только до конца тоннеля, а он закончится у того провайдера которому вы подключены VPN. Также ваш провайдер интернет тоже не будет много знать о передаваемых данных, но снова тоннель закончится на провайдере VPN, он то и будет знать все, так как он будет конечной точкой после которой вы выйдите без шифрования.
- В основном в больших банках система обмена данными с клиентом имеет свое шифрование, соединяясь с клиентом происходит отдельный тунель VPN, но это если вы используете специальное банковское приложение. Тогда если вы используете VPN подключение и официальный от банка клиент программу, тогда получится тоннель в тоннеле и тут VPN провайдер тоже будет бессилен, так как соединение будет зашифровано до самого сервера банка, от вашего компьютерного устройства с программой клиент.
- Проще говоря для простого пользователя чтоб легче понять данную статью скажу в двух словах: у вас есть интернет в котором вы гуляете, так же есть у вас работа. Чтобы подсоединиться к вашему рабочему месту и работать дома. Вам надо создать подключение которое и будет выглядеть как подключение поверх другого подключения. Собственно в вашем подключении интернет будет еще одно подключение к вашей работе. Но для этого создать подключение vpn на вашем компьютере мало. Надо чтобы у вас на работе был настроен vpn сервер, который будет принимать ваше vpn подключение и разрешать работать в рабочей локальной сети и компьютерами в офисе(на работе). Так же сервер на работе(офисе) vpn должен быть подключен к интернет и иметь статический ip(постоянный), для подключения к нему пользователя.
- Примеров можно приводить множество, для чего полезен и как можно использовать VPN соединение. Можно подключить домашний компьютер к рабочей локальной сети в офисе, работать в ней как будто компьютер стоит не дома а на работе. Также создавать зашифрованное соединение между двумя устройствами, для обмена данными. Защитить устройство или данные проходя промежуточные точки WIFI(кафе) или сервера(интернет провайдер).
- В выборе VPN сервиса надо подходить каждому индивидуально, но самый распространенный это OPENVPN. Этот VPN сервис бесплатный, программу клиент которую можно установить на любую ос, также можно настроить для подключения к другим сервисам VPN, такими как пример VPN GATE. Помимо самого сервиса и программы клиента, можно поднять свой VPN сервер, есть программа для разных ос. Собственно со всех сторон как не посмотри OpenVpn выиграет, лично мое мнение. Настроить клиент проще простого и ниже этим и займемся.
- Настроить клиент очень просто, даже настройкой не назовешь. Скачали с официального сайта клиент под свою операционную систему Запустили установку, далее нашли или взяли на сайте Open Vpn файл конфигурации для подключения к серверу vpn, собственно и вся настройка. Файлы конфигурации с других vpn серверов будут доступны в самом низу обзора(в конце). Процесс установки клиента я описывать не буду он идентичен всем другим и не чем не отличается. Выбор диска, папки, и в процессе будет предложено установка tap-адаптера что самое главное в установки клиента. Tap адаптер это виртуальный адаптер, служит для подключения туннелирования в сетях. Как раз что доктор прописал и нам нужен такой адаптер для подключения и создания туннеля через интернет соединение прямо к серверу vpn. Его надо подтвердит кнопкой установки, картинка ниже:
- Сам адаптер среди других будет выглядеть следующим образом:
- Далее в установки все как у других программ. После установки клиента в трее рядом с часами в Windows будет значек «Монитора с замком» серого цвета. Кликаем на него правой кнопкой мышки и в контекстном меню выбираем подключится:
- Далее после как нажали подключится в зависимости от файла конфигурации, если в нем нет пароля и логина то вам придется его ввести самому в соответствующем окне. Логин и пароль если файл конфигурации был выложен и скачан вами на официальном сайте Open Vpn, то данные по подключению пароль и логин присутствуют рядом где скачивали. Если файл конфигурации был скачан с другова ресурса(сервера vpn) то возможно пароль и логин вводить не надо, так как он находиться уже в самом файле конфиг
Что такое VPN? Анонимность VPN? Что еще может VPN?
Какой VPN лучше?
Как настроить клиент Open Vpn?
Как настроить доступ в локальную сеть за клиентом OpenVPN? — Хабр Q&A
Доброго времени суток.
Имеется 2 локальных сети: 192.168.1.0/24 и 192.168.2.0/24.
Сеть 192.168.1.0/24 находится за сервером OpenVPN. У сервера 2 сетевые карты eth0 и eth2(eth2 смотрит в Интернет, eth0 в локальную сеть).
Роутер сети 192.168.2.0/24 подключается к интернету модемом Мегафон. Это сеть клиента OpenVPN(сам клиент находиться за NAT в этой сети и имеет IP 192.168.1.100).
Клиент подключается к серверу, может пинговать локальную сеть за сервером. Пинг с сервера до локальной сети клиента не идёт. Также компьютеры из сети клиента не могуть пинговать локальную сеть за сервером.
Конфиг сервера:
local XX.XX.XX.XX
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh3048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
client-config-dir /etc/openvpn/ccd
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
client-to-client
keepalive 10 120
tls-auth ta.key 0
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
Файл /etc/openvpn/ccd/vpn на сервере:iroute 192.168.2.0 255.255.255.0
Конфиг клиента:
remote XX.XX.XX.XX 1194
client
dev tun
resolv-retry infinite
proto tcp
nobind
persist-key
persist-tun
tls-auth ta.key 1
ca ca.crt
cert vpn.crt
key vpn.key
verb 3
pull
Вывод route на сервере:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default IP на внеш.интерф 0.0.0.0 UG 0 0 0 eth2
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.2 * 255.255.255.255 UH 0 0 0 tun0
IP на внеш. * 255.255.252.0 U 0 0 0 eth2
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
Вывод route на клиенте:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.8.0.13 128.0.0.0 UG 0 0 0 tun0
default 192.168.2.1 0.0.0.0 UG 202 0 0 eth0
Внеш.IP сервера 192.168.2.1 255.255.255.255 UGH 0 0 0 eth0
10.8.0.0 10.8.0.13 255.255.255.0 UG 0 0 0 tun0
10.8.0.13 * 255.255.255.255 UH 0 0 0 tun0
128.0.0.0 10.8.0.13 128.0.0.0 UG 0 0 0 tun0
192.168.1.0 10.8.0.13 255.255.255.0 UG 0 0 0 tun0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.2.0 * 255.255.255.0 U 202 0 0 eth0
Клиент поднят на Raspberry PI 2. Пытаюсь решить проблему уже несколько дней. Прошу помощи)
Настройка OpenVPN шлюза в интернет на Debian, который на OpenVZ / Хабр
Итак, приближается первое августа, поэтому задумался я над тем, чтобы заиметь себе ip страны, в которой попроще с законодательством в сфере p2p, а именно Нидерландов. После достаточно долгих поисков нашел провайдера, который обещал два ядра от E3-1230, который обещал два ядра от E3-1230, 460 гигов винта и прекрасный нелимитированный (специально связывался с саппортом по этому вопросу — уверенно что канал не режут и после сотни терабайт) каких гигабитный канал за 40 с копейками баксов.Единственное но — виртуализация OpenVZ — обычно я настраивал OpenVPN на XEN или KVM, поэтому все прошло не так гладко, как обычно и поэтому я решил поделиться полученными знаниями.
Дистрибутив ОС — Debian 6
Итак начнем:
Устанавливаем OpenVPN и dnsmasq
aptitude install openvpn udev dnsmasq
Далее копируем скрипты генерации ключей
cp -R / usr / share / doc / openvpn / examples / easy-rsa / / etc / openvpn
Потом нам обычно сообщают поправить файл / etc / openvpn / easy-rsa / 2.0 / vars , но если шлюз делается «для себя», то этот пункт совершенно необязателен.
export KEY_COUNTRY = "XX".
экспорт KEY_PROVINCE = "XX"
экспорт KEY_CITY = "Город"
экспорт KEY_ORG = "Моя компания"
экспорт KEY_EMAIL = "[email protected]"
После правки vars генерируем центральный сертификат
cd /etc/openvpn/easy-rsa/2.0/
. /etc/openvpn/easy-rsa/2.0/vars
. /etc/openvpn/easy-rsa/2.0/clean-all
./etc/openvpn/easy-rsa/2.0/build-ca
Далее генерируем сертификаты сервера и клиента \ клиентов (вместо cli1, cli2 можно придумывать удобные для себя названия)
. /etc/openvpn/easy-rsa/2.0/build-key-server сервер
. /etc/openvpn/easy-rsa/2.0/build-key cli1
. /etc/openvpn/easy-rsa/2.0/build-key cli2
Потом генерируем параметры Диффи-Хеллмана
. /etc/openvpn/easy-rsa/2.0/build-dh
Раскладываем ключи, на клиентскую сторону нужно отдать файлы ок.crt cli1.crt cli1.key , в директорию / etc / openvpn положить файлы ca.crt ca.key dh2024.pem server.crt server.key
cd / etc / openvpn / easy-rsa / 2.0 / ключи
cp ca.crt ca.key dh2024.pem server.crt server.key / etc / openvpn
Теперь скопируем в директорию / etc / openvpn пример конфига, который поставляется вместе с ПО.
cd / usr / share / doc / openvpn / examples / sample-config-files
gunzip -d server.conf.gz
cp сервер.conf / и т.д. / openvpn /
Чтобы наш впн сервер раздавал интернет своим клиентам в /etc/openvpn/server.conf допишем
push "redirect-gateway def1"
нажмите "dhcp-option DNS 10.8.0.1"
Далее включаем ip-forwarding
в файле /etc/sysctl.conf раскомментируем строку
net.ipv4.ip_forward = 1
а в консоли выполним
echo 1> / proc / sys / net / ipv4 / ip_forward
чтобы изменения применились без перезагрузки.
Далее настраиваем iptables.
Если у Вас выделенный сервер, или виртуальный Xen или KVM, то в консоли пишем
iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A ВПЕРЕД -s 10.8.0.0/24 -j ПРИНЯТЬ
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Если виртуализация OpenVZ, то обычный NAT работать не будет, и надо использовать SNAT, для этого в консоли пишем
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to a.b.c.d
iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o venet0 -j ПРИНЯТЬ
Вместо a.b.c.d соответственно внешний ip вашего сервера
Чтобы правила iptables применялись при загрузке ОС, пропишем их в /etc/rc.local , туда же, после применения правил iptables добавим перезагрузку dnsmasq. Пример файла /etc/rc.local после внесения изменений —
для выделенного \ Xen \ KVM:
#! / bin / sh -e
#
# [...]
#
iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A ВПЕРЕД -s 10.8.0.0/24 -j ПРИНЯТЬ
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/etc/init.d/dnsmasq перезапуск
выход 0
для OpenVZ:
#! / Bin / sh -e
#
# [...]
#
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to a.b.c.d
iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o venet0 -j ПРИНЯТЬ
/ etc / init.d / dnsmasq перезапуск
выход 0
Далее настроим dnsmasq, для этого откроем файл /etc/dnsmasq.conf и раскомментируем \ поправим две строки
listen-address = 127.0.0.1,10.8.0.1
bind-интерфейсы
На настройке сервера закончена, можно перезапускать сервисы и начинать настраивать клиентов.
перезапуск службы openvpn
перезапуск службы dnsmasq
В моем случае все клиенты были на Windows 7, поэтому расскажу только про настройки клиентов на винде.
Скачиваем софт — OpenVPN, устанавливаем, в случае запуска Windows 7 от имени администратора «Пуск \ OpenVPN \ OpenVPN Gui »
Далее создаем файл % имя% .ovpn со следующим содержимым
push "redirect-gateway def1"
клиент
Dev Tun
прото udp
удаленный a.b.c.d 1194
resolv-retry бесконечно
nobind
постоянный ключ
настойчивый туннель
ca ca.crt
сертификат cli1.crt
ключ cli1.key
comp-lzo
глагол 3
Вместо а.b.c.d — адрес сервера.
Складываем файл % имя% .ovpn и ранее полученный ca.crt cli1.crt cli1.key в C: / Program files (x86) / OpenVPN / config
Вот и все, в трее правой мышью по значку OpenVPN -> Подключиться и нас перенести в другую страну.
.
настройка OpenVPN Access Server и пиринга AWS VPC
OpenVPN Access Server предоставляет полностью настроенный и готовый к использованию OpenVPN сервер, который требует минимальной настройки для запуска.
Бесплатная версия разрешает использовать 2 одновременных подключения, если требуется больше пользователей — за денежку.
Сейчас для доступа к нашим ресурсам, таким как Jenkins, Nexus и т.д. используются правила в Security Group-ах, в которых для каждого пользователя используется добавление домашнего IP.
Такой подход был более-менее адекватным решением, но с ростом количества девелоперов становится все больше, управлять ими становится все геморройнее, потому что —ло время поднять VPN, которыми могли бы пользоваться все.
Схема, которую будем строить в этом посте будет выглядет примерно так:
Ниже описывается установка и запуск OpenVPN Access Server (по документации тут >>>), создание VPC-peering-ов и маршрутов.
AWS: запуск OpenVPN AS
Запуск EC2
Находим AMI:
VPC
Создаём новый VPC для VPN:
Интернет-шлюз
Добавляем Интернет-шлюз (IGW):
Маршрутный стол
Далее — обновляем таблицу маршрутизации (RTB), и добавляем маршрут для трафика в сеть 0.0.0.0 / 0 (интернет) через созданный IGW.
Переходим к подсети, открываем вкладку Таблица маршрутов , кликаем на имя таблицы маршрутизации:
Группа безопасности
AWS предложит уже готовую группу безопасности.
Т.к. это такой себе Proof of Concept — оставим тут всё по умолчанию:
- TCP 22 — SSH
- TCP 943 — порт для доступа к админ-панели OpenVPN AS сервиса
- TCP 443 — порт для доступа к пользовательскому интерфейсу OpenVPN AS сервиса
- UDP 1194 — OpenVPN UDP порт, к которому будут подключаться VPN-клиенты
Эластичный IP
Добавим EIP для доступа к хосту:
Отключение Проверка источника / назначения
Для корректной работы NAT-а — отключаем проверку адресов (см. Посты AWS: миграция RTFM 2.5 — настройка NAT на Bastion EC2 как замена NAT Gateway и AWS: миграция RTFM 2.7 — CloudFormation и Ansible — наcтройка NAT):
Настройка OpenVPN AS
Подключаемся к хосту, используя логин openvpnas :
ssh -i dev-vpn-eu-west-1.pem [email protected]
Читаем 🙂 соглашение, принимаем его:
Инициализация и первичная настройка
При первом логине — OpenVPN AS сам запустит мастер настройки.
При необходимости его можно вызвать с помощью ovpn-init
:
По сути — сейчас везде можно принимать значения по умолчанию:
- Будет ли это основной узел сервера доступа? // да
- Укажите сетевой интерфейс и IP-адрес, который должен быть
, который будет использоваться веб-интерфейсом администратора:
(1) все интерфейсы: 0.0.0.0
(2) eth0: 10.0.9.8
// 2 - Укажите номер порта для веб-интерфейса администратора.
// да — 943 - Укажите номер порта TCP для OpenVPN Daemon
// да — 443 - Должен ли клиентский трафик по умолчанию маршрутизироваться через VPN?
// нет — мы будем роутить толкьо трафик к нашим собственным ресурсам, на ВК пользоватли пусть ходят через свой VPN 🙂 - Должен ли клиентский DNS-трафик по умолчанию маршрутизироваться через VPN?
// нет - Использовать локальную аутентификацию через внутреннюю базу данных?
// да - Обнаружены частные подсети: [‘10.0.9.0 / 24 ’]
Должны ли частные подсети быть доступны клиентам по умолчанию?
// да - Вы хотите войти в пользовательский интерфейс администратора как «openvpn»?
// да - > Укажите лицензионный ключ OpenVPN-AS (или оставьте поле пустым, чтобы указать позже):
// оставляем пустым, при необходимости добавим ключ потом
Подключение VPN-клиента
Открываем страницу доступа пользователя (без / admin
в конце) — https: // 52.18.110.226: 943 /? Src = подключение :
Кликаем на Yourself (профиль заблокирован) — загружаем файл настроек OpenVPN-клиента client.ovpn
:
Его содержимое:
cat ~ / .openvpn / client.ovpn
Автоматически сгенерированный файл конфигурации клиента OpenVPN
Создан в среду, 20 февраля, 15:19:38 2019, openvpnas2
Шифр по умолчанию
шифр AES-256-CBC
Примечание. config файл содержит встроенные закрытые ключи
и поэтому должен быть конфиденциальным!
Примечание: эта конфигурация привязана к имени пользователя ниже
OVPN_ACCESS_SERVER_USERNAME = openvpn
….
Устанавливаем openvpn
на локальной машине, тут установка на Arch Linux:
судо pacman -S openvpn
Запускаем его сопцию --auth-user-pass
:
sudo openvpn —config ~ / .openvpn / client.ovpn —auth-user-pass
среда, 20 февраля, 17:22:42 2019 OpenVPN 2.4.6 x86_64-pc-linux-gnu [SSL (OpenSSL)] [ LZO] [LZ4] [EPOLL] [PKCS11] [MH / PKTINFO] [AEAD] построено 24 апреля 2018 г.
среда 20 февраля 17:22:42 Версии библиотеки 2019: OpenSSL 1.1.1a 20 ноя 2018, LZO 2.10
Введите имя пользователя для аутентификации: openvpn
Введите пароль для аутентификации: *******
…
Ср, 20 февраля, 17:22:51 2019 ROUTE_GATEWAY 172.16.64.1/255.255 .252.0 IFACE = wlp2s0 HWADDR = 10: f0: 05: 64: 0a: 73
среда 20 февраля, 17:22:51 2019 TUN / TAP устройство tun0 открыто
среда 20 февраля 17:22:51 2019 TUN / TAP TX длина очереди установлена на 100
Ср 20 февраля 17:22:51 2019 do_ifconfig, tt-> did_ifconfig_ipv6_setup = 0
Ср 20 февраля 17:22:51 2019 / usr / bin / ip link set dev tun0 up mtu 1500
Ср 20 фев, 17:22:51 2019 / usr / bin / ip addr add dev tun0 172.27.232.3 / 21 трансляция 172.27.239.255
среда 20 февраля 17:22:56 2019 ROUTE remote_host НЕ ЛОКАЛЬНЫЙ
среда 20 февраля 17:22:56 2019 / usr / bin / ip route добавить 52.18.110.226/32 через 172.16.64.1
Ср, 20 февраля, 17:22:56 2019 / usr / bin / ip route добавить 10.0.9.0/24 метрики 101 через 172.27.232.1
Среда 20 февраля 17:22:56 2019 / usr / bin / ip маршрут добавить 172.27.224.0/20 метрика 101 через 172.27.232.1
среда 20 февраля 17:22:56 2019 Последовательность инициализации завершена
Проверяем маршрутизацию трафика.
Сначала на CloudFlare — должен пойти через офисный шлюз:
traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), макс 30 переходов, 60 байтовых пакетов
1 _gateway (172.16.64.1) 3,109 мс 3,213 мс 3,428 мс
2 ru-german.relc.com (194.183.169.25) 4,771 мс 5,148 мс 6,039 мс
3 * * *
4 ex4.thinx.pl (212.91.2.13) 16,468 мс 16,778 мс 17,277 мс
5 cloudflare.thinx.pl (212.91.0.28) 23,842 мс 24,154 мс 24.386 мс
6 one.one.one.one (1.1.1.1) 17,787 мс 15,023 мс 15,199 мс
И к хосту VPN — должен идти напрямую:
.
traceroute 10.0.9.8
traceroute до 10.0.9.8 (10.0.9.8), макс.30 переходов, 60 байтовых пакетов
1 10.0.9.8 (10.0.9.8) 52.095 мс 52.149 мс 53.512 мс
Отлично.
Маршрутизация трафика через VPN-туннель
Для теста — добавим ещё один EC2-инстанс в той же сети, где находится наш VPN:
Проверим маршруты к нему.
В логах запуска локального VPN-клиента мы видим создание нового маршрута в нашей системе:
, среда, 20 февраля, 17:22:56 2019 / usr / bin / ip route добавить 172.27.224.0/20 метрики 101 через 172.27.232.1
Проверяем — пробуем SSH, используя приватный IP нового инстанса:
ssh -i dev-vpn-eu-west-1.pem [email protected]
Не удается установить подлинность хоста ’10 .0.9.6 (10.0.9.6) ‘.
Отпечаток ключа ECDSA — SHA256: 6ldjTtHvQJviBb / 9aXwFvwh7nwKjOdpePCxO6TddAJA.
Вы уверены, что хотите продолжить подключение (да / нет)? да
Предупреждение: постоянно добавлено «10 .0.9.6» (ECDSA) в список известных хостов.
Добро пожаловать в Ubuntu 18.04.1 LTS (GNU / Linux 4.15.0-1021-aws x86_64)
…
ubuntu @ ip-10-0-9-6: ~
долларов США
Всё работает.
Пиринг VPC
Следующим шагом — требуется настроить VPC-пиринг и маршрутизацию трафика между рабочей машиной, VPN-сервером и VPC, в котором находится наш Jenkins.
VPC-пиринг описан тут >>>,
Создаём новый Пиринговое соединение VPC :
Принимаем запрос на пиринг:
VPC-peering маршрутизация
Если попробовать подключиться к Jenkins сейчас, используя его приватный IP — ничего не получится:
ubuntu @ ip-10-0-9-6: ~ $ ssh [email protected]
ssh: подключение к хосту 10.0.4.13 порт 22: время ожидания соединения истекло
Так как не созданных маршрутов между сетями 10.0.9.0 / 24 (OpenVPN VPC) и 10.0.4.0/24 (Jenkins VPC).
Требуется обновить таблицу маршрутизации для сетей:
- таблица маршрутизации подсети Jenkins — 10.0.4.0/28 => 10.0.9.0/24 через созданный VPN пиринг
- таблица маршрутизации подсети OpenVPN — 10.0.4.0/28 => 10.0.9.0/24 через созданный VPN пиринг
Редактируем таблицу jenkins rtb-9597e6ec | jenkins-dev-маршрут-таблица :
Добавляем маршрут:
для VPN RTB Повтор:
Проверяем из сети VPN:
ubuntu @ ip-10-0-9-6: ~ $ ping 10.0.4.13
PING 10.0.4.13 (10.0.4.13) 56 (84) байтов данных.
64 байта из 10.0.4.13: icmp_seq = 1 ttl = 64 time = 0.470 мс
64 байта из 10.0.4.13: icmp_seq = 2 ttl = 64 time = 0.483 мс
И обратно — с Jenkins:
admin @ jenkins-dev: ~ $ ping 10.0.9.6
PING 10.0.9.6 (10.0.9.6) 56 (84) байтов данных.
64 байта из 10.0.9.6: icmp_seq = 1 ttl = 64 time = 0.437 мс
64 байта из 10.0.9.6: icmp_seq = 2 ttl = 64 time = 0.914 мс
Помним, что у Jenkins есть своя группа безопасности — обновите ее правила и разрешите доступ из VPN-сети.
Пробуем SSH с хоста в сети VPN:
ubuntu @ ip-10-0-9-6: ~ $ ssh [email protected]
Не удается установить подлинность хоста ’10 .0.4.13 (10.0.4.13) ‘.
Отпечаток ключа ECDSA — SHA256: + 0LP1 + neT4udq96jFLdLpjuvTrWCzlAt5GZZpfw2rKI.
Вы уверены, что хотите продолжить подключение (да / нет)? да
Предупреждение: постоянно добавлено «10 .0.4.13» (ECDSA) в список известных хостов.
[email protected]: В доступе отказано (открытый ключ).
И обратно:
admin @ jenkins-dev: ~ $ ssh 10.0.9.6
Не удалось установить подлинность хоста ’10 .0.9.6 (10.0.9.6) ‘.
Отпечаток ключа ECDSA — SHA256: 6ldjTtHvQJviBb / 9aXwFvwh7nwKjOdpePCxO6TddAJA.
Вы уверены, что хотите продолжить подключение (да / нет)? да
Предупреждение: постоянно добавлено «10 .0.9.6» (ECDSA) в список известных хостов.
В доступе отказано (открытый ключ).
Всё работает.
VPN-маршруты
Возвращаемся к нашей рабочей машинке, проверяем — как пойдёт трафик к хосту Jenkins, используя приватный IP:
traceroute 10.0.4.13
traceroute на 10.0.4.13 (10.0.4.13), максимум 30 переходов, 60 байтовых пакетов
1 _gateway (172.16.64.1) 3,243 мс 3,453 мс 3,656 мс
2 ru-german.relc.com (194.183 .169.25) 3,962 мс 4,221 мс 4,642 мс
…
Идёт через шлюз офиса, что нам не подходит.
Переходим в VPN admin => Настройки VPN — https://52.18.110.226:943/admin/vpn_settings :
Добавляем NAT-правило для 10.0,4.0 / 24 :
Сохраняем, жмём Обновление запущенного сервера :
Перезапускаем локальный клиент:
sudo openvpn —config ~ / .openvpn / client.ovpn —auth-user-pass
…
среда 20 февраля, 18:25:37 2019 ROUTE remote_host НЕ ЛОКАЛЬНЫЙ
среда 20 февраля, 18:25 : 37 2019 / usr / bin / ip route добавить 52.18.110.226/32 через 172.16.64.1
среда 20 февраля, 18:25:37 2019 / usr / bin / ip route добавить 10.0.4.0/24 метрики 101 через 172.27.232.1
Ср, 20 февраля, 18:25:37 2019 / usr / bin / ip route добавить 10.0.9.0/24 метрики 101 через 172.27.232.1
Среда 20 февраля 18:25:37 2019 / usr / bin / ip маршрут добавить 172.27.224.0/20 метрика 101 через 172.27.232.1
среда 20 февраля 18:25:37 2019 Последовательность инициализации завершена
Вот новый маршрут — 10.0.4.0/24 метрика 101 через 172.27.232.1 .
Проверяем локальную таблицу маршрутизации:
18:26:28 [setevoy @ setevoy-arch-work ~] $ route -n
Таблица IP-маршрутизации ядра
Шлюз назначения Флаги Genmask Метрика Ref Использовать Iface
0.0.0.0 172.16.64.1 0.0.0.0 UG 303 0 0 wlp2s0
10.0.4.0 172.27.232.1 255.255.255.0 UG 101 0 0 tun0
10.0.9.0 172.27.232.1 255.255.255.0 UG 101 0 0 tun0
52.18. 110.226 172.16.64.1 255.255.255.255 UGH 0 0 0 wlp2s0
Проверяем трассу:
traceroute 10.0.4.13
traceroute на 10.0.4.13 (10.0.4.13), максимум 30 переходов, 60 байтовых пакетов
1172.27.232.1 (172.27.232.1) 55.090 мс 55.207 мс 55.399 мс
…
Трафик пошёл через шлюз самого OpenVPN.
Проверяем SSH, используя приватный IP:
18:27:41 [setevoy @ setevoy-arch-work ~] $ ssh -i jenkins-dev-eu-west-1.pem [email protected]
…
admin @ jenkins-dev: ~ $
Всё работает.
DNS
Последний момент — это настройки DNS.
Т.к. наш Jenkins доступен и из мира по публичному IP, и через VPN — по приватному, то есть возникает вопрос с резолвом имени.
См. пост OpenVPN: настройки DNS и dnsmasq.
.