savenko_egor
@savenko_egor

Как на OpenWrt(LEDE) сделать чтобы можно было подключаться к локальным сервисам, на локальных машинах с внешнего IP?

Как на openwrt сделать чтобы можно было подключаться к локальным сервисам, на локальных машинах с внешнего IP?
Я как-то находил информацию об этом, но это было давно и я не помню уже.
Схема такая:
Есть роутер с openwrt. На нём поднят openvpn. С внешки я могу подключиться к этому openvpn-у. А когда пытаюсь подключиться изнутри, на внешний ipшник, то конект не проходит. Это нужно для того чтобы находясь во внутреней сети, не менять в конфиге ovpn IPшник сервера на который подключаться.
Уточнение:
Устройство(телефонбноутбук) находиться во внутреней сети(192.168.1.0/24), и когда я из этой сети пытаюсь подключиться к внешнему IPу(xxx.xxx.xxx.xxx), то конект не проходит. А вот если устройство не во внетреней сети, то коннект проходит без проблем.
Ранее на чистом OpenWrt работало всё без проблем, когда перешился на LEDE, то появилась такая проблема.
  • Вопрос задан
  • 663 просмотра
Решения вопроса 1
Jump
@Jump
Системный администратор со стажем.
Самый простой способ - подключайтесь по имени, а не по IP.
В файле hosts роутера пропишите соответствие имени внутреннему IP.
Вообще можно гуглить по - Hairpin NAT

Устройство(телефонбноутбук) находиться во внутреней сети(192.168.1.0/24), и когда я из этой сети пытаюсь подключиться к внешнему IPу(xxx.xxx.xxx.xxx), то конект не проходит.
Разумеестя.
У вас компьютеры за натом, вы обращаетесь по белому адресу, который вообще то назначен роутеру, а не вашему серверу.
Пакет попадает на роутер - там есть правило которое перенаправляет пакеты на нужный сервер, но оно работает только для пакетов из внешней сети, а вам надо добавить правило проброса портов для пакетов приходящих из внутренней сети. Ну и чтобы потом ответ пришел с того же адреса, надо еще маскарадинг включить и при отправке пакета по локалке подменять свой внутренний адрес на белый, чтобы клиент не удивился пакету пришедшему с левого IP и не отбросил его.

Но повторю - гораздо проще пользоваться именами и разруливать эту проблему на уровне имен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
savenko_egor
@savenko_egor Автор вопроса
Вот так заработало изнутри:
iptables -t nat -A prerouting_rule -d $EXTERNAL_IP -p udp -j DNAT --to $ROUTER_IP
iptables -A forwarding_rule -p udp -d $ROUTER_IP -j ACCEPT
iptables -t nat -A postrouting_rule -s $NETWORK/24 -p udp -d $ROUTER_IP -j MASQUERADE
Но теперь не конектит снаружи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы