Есть ли способ запустить VPN-сервер за NAT, над которым у вас нет контроля?

Вопрос или проблема

У меня есть 4G роутер в удаленном месте для подключения к интернету.

Мой интернет-провайдер не предоставляет моему роутеру публичный IP, вместо этого, похоже, он помещает несколько SIM-карт в какую-то частную сеть за NAT (над которой я, очевидно, не имею контроля).

Так это, вероятно, выглядит немного так:

--------------------------------------

                Интернет

--------------------------------------
               ISP NAT
--------------------------------------
    Мой 4G роутер
------------------------
    Мой аппаратный фаервол
------------------------
    Моя локальная сеть
------------------------

Мой аппаратный фаервол может действовать как VPN-сервер, и я предпочел бы использовать его, но также готов запустить отдельный VPN-сервер на компьютере в моей локальной сети, чтобы решить эту проблему.

В этой ситуации есть ли какой-либо способ запустить VPN-сервер, который может принимать входящие VPN-соединения (я МОГУ инициализировать VPN-соединения с внешними VPN-серверами из своей локальной сети. Но я хочу иметь возможность инициировать соединения снаружи к VPN-серверу внутри моей сети)?

Отвечая на свой собственный вопрос:

SoftEther https://www.softether.org/ – это именно то, что я искал. Он позволяет запустить VPN-сервер за NAT и имеет функции NAT Traversal, чтобы клиенты могли подключаться к нему из внешней сети. Для настойчивых фаерволов он также предлагает бесплатный сервис Handshake (https://www.vpnazure.net/), чтобы создать туннель между сервером и клиентом, даже если оба находятся за NAT (трафик не проходит через сервер обмена).

Кроме этого, он действительно легко настраивается и обладает множеством функций, позволяя различным VPN-клиентам подключаться к нему.

Да, вы можете, если хотите установить VPN-сервер на устройстве с Linux.

Во-первых, вам нужен активный ПК в вашей локальной сети, на котором установлена Linux. Вы также можете использовать ПК с Windows, но я не рекомендую использовать Windows для сетевых решений.

Вы можете достичь ПК с NAT с помощью Teredo. Это требует немного настройки на стороне клиента и сервера.

Сторона сервера

Установите Teredo

sudo apt install miredo
sudo service miredo restart
sudo ifconfig teredo

Теперь у вас есть IPv6-адрес. Чтобы показать IP вашего сервера, используйте команду ifconfig teredo | grep '200'.

Используйте динамический DNS (DDNS)

IP-адреса Teredo периодически меняются из-за переподключения к интернету. Это не статический IP. Вам также нужно использовать динамический DNS, чтобы указать домен на адрес вашего VPN-сервера, иначе каждое переподключение требует изменения конфигурации на стороне клиента, что заменяет адрес сервера на новый.
После установки Teredo теперь вы можете установить VPN-сервер на своем ПК или сервере. Вы можете найти хорошо документированные инструкции по установке OpenVPN на Ubuntu.

Сторона клиента

ПК с Windows

Иногда Teredo не включен по умолчанию. Вам нужно включить Teredo на ПК с Windows с помощью одной команды.
Примечание: Запустите cmd с правами администратора.

netsh interface teredo set state client

ПК с Linux

Установите приложение miredo на стороне клиента

sudo apt install miredo

Простой ответ: нет, вы этого не сделаете. И точка. Нет способа открыть порт или маршрутизировать что-то через NAT, если вы не имеете контроля над NAT. Любое решение требует наличия внешней точки для начала координации хотя бы.

Сложный ответ: вы все равно этого не сделаете – у вас есть ваш внутренний VPN-сервер, который создает мост с внешним VPN-сервером, к которому люди могут подключаться. Это МОЖЕТ работать в облаке. У меня была такая же проблема в течение многих лет в нашем старом офисе (лучшее интернет-соединение через кабельного провайдера, который просто не понимал «бизнес» и я, по сути, использовал VPS для запуска VPN-сервера в облаке и подключался к нему извне через VPN).

Томтом утверждает, что у него есть решение, но он скрывает ответ, как это сделать.

Ответ или решение

Запуск VPN-сервера за NAT, на который у вас нет контроля, может быть сложной задачей, но существуют решения, которые могут помочь вам добиться желаемого результата. В этом ответе мы рассмотрим несколько способов организации VPN-сервера в такой конфигурации.

Проблема

Как вы указали, ваше интернет-соединение через 4G-роутер находится за частной сетью, управляемой вашим провайдером (ISP). Это означает, что ваш роутер не имеет публичного IP-адреса, и, следовательно, вы не можете просто открыть порты для получения входящих соединений. Однако существуют способы обойти эту проблему.

Варианты решений

  1. SoftEther VPN:
    SoftEther — это мощный VPN-сервер, который предлагает функции NAT Traversal. Это означает, что клиенты могут подключаться к вашему серверу даже если он находится за NAT. SoftEther также предоставляет бесплатный сервис handshake, который помогает установить соединение между сервером и клиентом, даже если оба находятся за разными NAT. Простота установки и богатый функционал делают SoftEther отличным выбором для вашей ситуации.

  2. Teredo:
    Если вам удобно использовать Linux, вы можете настроить Teredo, который позволяет устанавливать IPv6-соединения через NAT. Вам необходимо установить miredo, который облегчит настройку. Это решение подразумевает, что вы сможете использовать Teredo для выхода в интернет с вашего внутреннего VPN-сервера.

    Серверная сторона:

    • Установите Teredo:
      sudo apt install miredo
      sudo service miredo restart
      sudo ifconfig teredo
    • Вы можете проверить свой IPv6-адрес, используя команду:
      ifconfig teredo | grep '200'

    Клиентская сторона:

    • Убедитесь, что Teredo включен на клиентских машинах, чтобы они могли подключаться к вашему VPN-серверу. Например, в Windows выполните:
      netsh interface teredo set state client
  3. Использование внешнего VPN-сервера:
    Если у вас возникли сложности с подключением к вашему внутреннему VPN, вы можете использовать облачный сервер (например, VPS) для создания VPN-сервера. Ваш внутренний VPN-сервер может подключаться к этому облачному серверу, создавая скрытое соединение, к которому могут подключаться клиенты. Это решение можно рассмотреть, если другие варианты вас не устраивают.

Заключение

Итак, хотя ваша текущая ситуация с NAT и отсутствие публичного IP-адреса могут показаться непреодолимыми препятствиями, существуют технологии и решения, которые могут помочь вам запустить VPN-сервер и обеспечить доступ к нему извне. Используйте SoftEther для простоты и гибкости, или рассмотрите возможность настройки Teredo на вашем Linux-сервере. Альтернативно, использование внешнего VPN-сервера может предложить более надежное решение.

Выбор конкретного подхода зависит от ваших технических навыков и требований к безопасности. Удачи вам в реализации вашего проекта!

Оцените материал
Добавить комментарий

Капча загружается...