Вопрос или проблема
У меня есть 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-адреса, и, следовательно, вы не можете просто открыть порты для получения входящих соединений. Однако существуют способы обойти эту проблему.
Варианты решений
-
SoftEther VPN:
SoftEther — это мощный VPN-сервер, который предлагает функции NAT Traversal. Это означает, что клиенты могут подключаться к вашему серверу даже если он находится за NAT. SoftEther также предоставляет бесплатный сервис handshake, который помогает установить соединение между сервером и клиентом, даже если оба находятся за разными NAT. Простота установки и богатый функционал делают SoftEther отличным выбором для вашей ситуации. -
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
- Установите Teredo:
-
Использование внешнего VPN-сервера:
Если у вас возникли сложности с подключением к вашему внутреннему VPN, вы можете использовать облачный сервер (например, VPS) для создания VPN-сервера. Ваш внутренний VPN-сервер может подключаться к этому облачному серверу, создавая скрытое соединение, к которому могут подключаться клиенты. Это решение можно рассмотреть, если другие варианты вас не устраивают.
Заключение
Итак, хотя ваша текущая ситуация с NAT и отсутствие публичного IP-адреса могут показаться непреодолимыми препятствиями, существуют технологии и решения, которые могут помочь вам запустить VPN-сервер и обеспечить доступ к нему извне. Используйте SoftEther для простоты и гибкости, или рассмотрите возможность настройки Teredo на вашем Linux-сервере. Альтернативно, использование внешнего VPN-сервера может предложить более надежное решение.
Выбор конкретного подхода зависит от ваших технических навыков и требований к безопасности. Удачи вам в реализации вашего проекта!