Есть локальная сеть
Есть router, через который все ходят в интернет
У router'a есть статический внешний IP адрес
Из интернета в локальную сеть проброшен порт 80
Локальный компьютер обращается в интернет по внешнему IP адресу router'a через сокет в порт 80
Рассчитывает попасть на другой локальный компьютер, куда проброшен порт, через такую петлю
И вот засада
На некоторых router'ах это работает из коробки
А на некоторых нет. Но можно настроить. Но клиентам это объяснять сложно
Я что-то делаю не так?
Можно избежать этой дополнительной настройки router'a?
1. Split DNS. Клиентам за пределами локальной сети на myserver.com отдаётся публичный IP адрес, клиентам внутри локальной сети отдаётся частный IP адрес. Если роутер не позволяет такое настраивать, можно настроить внутри сети свой DNS сервер и прописывать его на компьютерах внутри сети. Или просто в /etc/hosts прописывать адреса.
2. Туннель через внешний сервер. Делается внешний сервер, не имеющий отношения к этой сети, в DNS прописывается его IP-адрес. Этот внешний сервер уже перенаправляет пакеты тем или иным образом (VPN или просто reverse proxy) на целевой компьютер или роутер.
Тут как раз смысл в том, что сервер и стоит внутри локальной сети )
Снаружи с ним отлично работается
А из этой локальной сети его не видно
Это можно пофиксить добавив дополнительное правило в router
Но это долго объяснять клиентам (не хочется)
И router'ы все разные, везде по разному настраивается — геморрой короче
Здравствуйте, TailWind, Вы писали:
TW>Это можно пофиксить добавив дополнительное правило в router TW>Но это долго объяснять клиентам (не хочется) TW>И router'ы все разные, везде по разному настраивается — геморрой короче
Программно настраивать самому. Есть такое UPnP, возможно через него может получиться. Но это не точно, и, скорее всего, для каждой модели роутера всё будет по другому
Возможно фаевол в некоторых раутерах подозревает про подобный трафик странноватый и блокирует. Вообще так так это все в основном на локальмой сети ваешарки помогут легко понять где и что теряется. К тому же порт 80 на внешнем wan адресе раутера это web администрирование раутера из интернета, которое почти всегда выключено. Понятно что порт проброшен, но может те раутеры сначала проверяют это условие а потом уже идут на проброс портов. Может другой порт попробовать?
Здравствуйте, TailWind, Вы писали:
TW>Можно избежать этой дополнительной настройки router'a?
Если клиент и сервер твои, то можно, напр. через udp, клиенту определить, что сервер в той же сети, и получив от него локальный адрес работать уже с ним.
Здравствуйте, TailWind, Вы писали:
TW>Есть локальная сеть TW>Есть router, через который все ходят в интернет TW>У router'a есть статический внешний IP адрес TW>Из интернета в локальную сеть проброшен порт 80
TW>Локальный компьютер обращается в интернет по внешнему IP адресу router'a через сокет в порт 80 TW>Рассчитывает попасть на другой локальный компьютер, куда проброшен порт, через такую петлю
TW>И вот засада
TW>На некоторых router'ах это работает из коробки TW>А на некоторых нет. Но можно настроить. Но клиентам это объяснять сложно
Это называется NAT Reflection. Что поможет тебе в твоих дальнейших поисках.
Здравствуйте, TailWind, Вы писали:
TW>Локальный компьютер обращается в интернет по внешнему IP адресу router'a через сокет в порт 80 TW>Рассчитывает попасть на другой локальный компьютер, куда проброшен порт, через такую петлю