LINUX.ORG.RU

Перенаправить запросы 192.168.2.* в docker-контейнер

 , , ,


0

1

На сервере Ubuntu поднят docker-контейнер с wireguard. В wg настроено несколько пиров, один из них - peer4, у него сеть диапазона 192.168.2.* и в его сети есть ip камера 192.168.2.21. В конфиге WG сервера я эту сеть (192.168.2.*) через allowed ip привязал к peer4. Теперь, если я нахожусь внутри WG сети или внутри контейнера сервера WG, я могу сделать ping на 192.168.2.21 и он улетит на камеру. Камера доступна.

Как мне достучаться до камеры, находясь вне контейнера? Видимо нужно прописать какое-то условие в Ip tables и заворачивать все запросы из диапазона 192.168.2.* на сетевой интерфейс wg сервера? Как это сделать? Сразу скажу, я не сетевой администратор и не разбираюсь в теме. Буду рад, любой информации, которая поможет эту тему раскрыть, включая ссылки на доки/статьи. Пробовал начать изучение IP tables, но целиком всю эту тему осилить я не смогу, если только определенную какую-то часть. Прошу помощи.

Для чего это нужно. У меня на даче IP камеры. Мне нужно сделать так, чтобы находясь внутри городской сети(в которой работает wg-сервер) мне не нужно было подключаться к WG сети. Роутер автоматом будет перенаправлять все запросы вида 192.168.2.* на Ubuntu сервер, а тот в свою очередь перенаправит их в WG-контейнер. Поднять на роутере WG возможности нет, это МГТС роутер с минимумом возможностей.



Последнее исправление: kisil-mike (всего исправлений: 1)

Как мне достучаться до камеры, находясь вне контейнера? Видимо нужно прописать какое-то условие в Ip tables и заворачивать все запросы из диапазона 192.168.2.* на сетевой интерфейс wg сервера?

Нет, тебе нужна таблица роутинга. Начни с изучения роутинга вообще и команд route или ip route в частности.

Навскидку это команда ip route add net 192.168.2.0/24 dev wg0, но скорее всего нет.

Aceler ★★★★★
()
Ответ на: комментарий от kisil-mike

В общем, рассказываю как в итоге сделал: Чтобы перенаправить запрос в контейнер, для начала нужно узнать какой у этого контейнера IP. Для этого:

  1. смотрим список сетей докера: docker network ls и находим в этом списке нужную нам сеть. Как правило, сети имею префикс имени контейнера.
  2. Смотрим всю информацию по нужной нам сети: «docker network inspect <my_network_name>». Находим там IP4.
  3. Перенаправляем на этот IP4 запросы через команду, что указал Aceler: route add -net 192.168.2.0/24 gw 172.29.0.2
  4. Чтобы после перезагрузки правило не исчезло, добавляем в конец файла /etc/network/interfaces строчку: up ip ro add 192.168.2.0/24 via 172.29.0.2
  5. Поскольку докер при каждом запуске контейнера меняет его IP, то логичнее закрепить IP за контейнером, через создание новой network. Для compose такой код:
version: "2.1"
services:
  wireguard:
    <...>
    networks:
      my_custom_network:
        ipv4_address: 172.29.0.2

networks:
  my_custom_network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.29.0.0/16
          gateway: 172.29.0.1
kisil-mike
() автор топика