- Вопрос или проблема
- Ответ или решение
- Доступ к веб-сайту на VPN-клиенте через публичный IP-адрес VPN-сервера
- Шаг 1: Установка OpenVPN сервера на Машине A
- Шаг 2: Настройка веб-сервера на Машине B
- Шаг 3: Установка OpenVPN клиента на Машине B
- Шаг 4: Конфигурация маршрутизации на Машине A
- Шаг 5: Подключение Машины B к Машине A
- Вывод
Вопрос или проблема
Я пытаюсь получить доступ к веб-серверу на хосте за брандмауэром, который не управляется мной, с помощью VPN соединения (openvpn). Я хочу использовать публичный IP-адрес VPN-сервера в качестве фронтенда для прокси-доступа к веб-серверу на удаленном хосте за брандмауэром.
http://193.105.1.1:8085
будет представлять веб-сайт, проксируя хост по адресу 192.168.1.1:8080.
Это достаточно просто!
Для удобства давайте рассмотрим Машину A – 193.105.1.1 и Машину B – 192.168.1.1
-
Установите сервер OpenVPN на Машине A
Я предпочитаю Ubuntu 18.04 и сценарий установки OpenVPN от Nyr
Просто выполните это в терминале
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
-
Предполагая, что у вас уже установлен apache или nginx на Машине B, убедитесь, что он слушает на всех интерфейсах.
-
На Машине B установите клиент OpenVPN для подключения к вашему серверу!
Запустите этот код в терминале, чтобы установить клиент OpenVPN
sudo apt-get install openvpn
-
Теперь нам нужно настроить Машину A для маршрутизации трафика с публичного IP на внутренний IP-адрес OpenVPN. Машине B будет назначен адрес 10.8.0.2, если вы использовали сценарий Nyr.
Давайте настроим маршрутизацию!
- Включите брандмауэр ufw
sudo ufw enable ssh && sudo ufw enable
sudo nano /etc/default/ufw
- Измените “DEFAULT_INPUT_POLICY” и “DEFAULT_FORWARD_POLICY” на ACCEPT. Сохраните и закройте файл.
sudo nano /etc/ufw/sysctl.conf
- Уберите комментарий с “net/ipv4/ip_forward=1”. Сохраните и закройте файл.
sudo nano /etc/ufw/before.rules
-
В конце строки после “COMMIT” добавьте следующее
*nat
-F
:PREROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -d 193.105.1.1 -p tcp -m multiport –dports 23:65535 -j DNAT –to-destination 10.8.0.2
-A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j MASQUERADE
COMMIT
Измените eth0 на имя вашего сетевого интерфейса.
Сохраните и перезагрузите оба сервера!
Подключите Машину B к Машине A через клиент OpenVPN.
Ответ или решение
Доступ к веб-сайту на VPN-клиенте через публичный IP-адрес VPN-сервера
В ситуации, когда требуется получить доступ к веб-серверу, располагающемуся за межсетевым экраном и вне вашего управления, использование VPN (например, OpenVPN) оказывается весьма эффективным решением. В данном руководстве мы пошагово рассмотрим, как настроить систему так, чтобы вы могли получить доступ к веб-серверу на удаленном хосте, используя публичный IP-адрес VPN-сервера как прокси-сервер.
Шаг 1: Установка OpenVPN сервера на Машине A
Проверенные инструменты для установки:
Для настройки VPN-сервера мы будем использовать Ubuntu 18.04 и скрипт установки OpenVPN от Nyr.
- Скачайте и запустите скрипт:
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
Шаг 2: Настройка веб-сервера на Машине B
На Машине B (например, с IP 192.168.1.1) нужно убедиться, что установлен сервер (Apache или Nginx) и он слушает на всех интерфейсах. Это позволит без проблем получать доступ к хосту через прокси.
Шаг 3: Установка OpenVPN клиента на Машине B
- Установите OpenVPN клиент:
sudo apt-get install openvpn
Шаг 4: Конфигурация маршрутизации на Машине A
Теперь нам необходимо настроить маршрутизацию с публичного IP-адреса до внутреннего IP-адреса OpenVPN, который был выделен Машине B (обычно это 10.8.0.2, если использовался скрипт Nyr).
Настройка маршрутизации:
-
Включите файрвол UFW:
sudo ufw enable
-
Разрешите SSH:
sudo ufw allow ssh
-
Измените параметры по умолчанию:
sudo nano /etc/default/ufw
Измените
DEFAULT_INPUT_POLICY
иDEFAULT_FORWARD_POLICY
наACCEPT
. -
Включите пересылку пакетов:
sudo nano /etc/ufw/sysctl.conf
Раскомментируйте строку
net/ipv4/ip_forward=1
. -
Настройте правила NAT:
sudo nano /etc/ufw/before.rules
В конец файла, после строки
COMMIT
, добавьте следующее:*nat -F :PREROUTING ACCEPT [0:0] -A PREROUTING -i eth0 -d 193.105.1.1 -p tcp -m multiport --dports 23:65535 -j DNAT --to-destination 10.8.0.2 -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j MASQUERADE COMMIT
Примечание: Не забудьте поменять
eth0
на имя вашего сетевого интерфейса. -
Сохраните изменения и перезагрузите сервер:
sudo reboot
Шаг 5: Подключение Машины B к Машине A
После перезагрузки обеих машин, подключите Машину B к Машине A с использованием OpenVPN клиента. Проверьте соединение и убедитесь, что все работает корректно.
Вывод
Теперь вы можете использовать публичный IP-адрес вашего VPN-сервера (например, http://193.105.1.1:8085
) для доступа к веб-серверам на Машине B (например, с IP 192.168.1.1:8080). Следуя вышеописанным шагам, вы сможете безопасно и эффективно использовать маршрутизацию через VPN и убедиться в конфиденциальности вашего соединения.
Успехов в настройке!