пятница, 23 ноября 2018 г.

Padavan. Переадресация портов через VPN

Столкнулся с небольшой проблемой с пробросом портов через VPN соединение. А конкретно, хотел получать доступ к web-интерфейсам камер видеонаблюдения и sonoff'ам с любого устройства в VPN-сети.
До этого приходилось подключаться к raspberry через xrdp и запускать браузер чтобы попасть в web-морду девайсов. Фу.

Схема сети такая (надеюсь доходчиво, рисую впервые)

Собственно, действующие лица
10.0.0.1 - внутренний IP-адрес роутера
10.0.10.9 - IP-адрес роутера в VPN-сети
10.0.0.201 - IP-адрес sonoff'а в локальной сети

Подключаемся к консоли роутера через ssh и набираем
iptables -t nat -A PREROUTING -d 10.0.10.9 -p tcp -m tcp --dport 10201 -j DNAT --to-destination 10.0.0.201:80
iptables -t nat -A POSTROUTING -d 10.0.0.201 -p tcp -m tcp --dport 80 -j SNAT --to-source 10.0.0.1
iptables -t nat -A OUTPUT -d 10.0.10.9 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.201
iptables -I FORWARD 1 -i tun0 -o br0 -d 10.0.0.201 -p tcp -m tcp --dport 80 -j ACCEPT
И проверяем в браузере клиента VPN-сети

Сохраним изменения в таблицах маршрутизации, чтобы они не пропали после перезагрузки роутера.
iptables-save

4 комментария :

  1. Не подскажете, пожалуйста, как быть в схожей ситуации, но когда роутер выступает vpn сервером и необходимо пробросить, скажем, 192.168.10.246 - полученный клиентом впн наружу. 192.168.10.246:80 локальные клиенты роутера открывают нормально.
    Если пробросить порт через гуи, то со стороны клиентов роутера переход на страничку 89.x.x.x:80 работает, но извне не отзывается :(

    по задумке хочу сделать свой домашний роутер зеркалом сайта и скромного сервера minecraft с меньшими задержками для пары клиентов, но в впн их пускать не очень хочу.

    необходимо открыть 80 и 25565

    ОтветитьУдалить
    Ответы
    1. Почитайте про реверсивный прокси, например ngrok.

      Удалить
    2. Спасибо за ответ!
      Погуглил
      Насколько я понял, таким образом будет ходить через их сервера, а не мой...и с кастомными портами


      Просто изначально эти поделки крутились у меня дома, но потом переехали. И хотелось сохранить доступность для тех хомячков, которые не следят за новостями (в случаи с miencraft привязка к доменному имени, а вот с случаи со старой-доброй cs1.6 - жесткая привязка к ip во время первого резолва)

      Что обидно, внутренние клиенты действительно видят все сервисы, которые развернуты на впнклиенте
      Мне даже не обязательно честные ip отдавать, была бы лишь доступность
      На микротике сделал 1 строчкой проброс на внешний порт без всяких vpn и работает... а тут нет :(

      Удалить
  2. Подскажите что я делаю не так? Все работает делаю iptables-save но после перезагрузки нечего не работает (((

    ОтветитьУдалить