Подключение ip-камеры к контроллеру

Всем привет!
Дано:
Wirenboard 8.4.4, release wb-2507 подключен к роутеру через WiFi.
Рядом с ним располагается ip-камера, которую хочется с помощью контроллера включить в сеть. bridge/nat не важно, главное чтобы NAS из сети контроллера её увидел.

На форуме были несколько тем, но они старые и как я понял уже не актуальные, например эта

По крайней мере, у меня в итоге ничего не получилось.

Возможно вся эта схема выглядит костыльно, но в текущих ограничениях выглядит как единственное решение без прокладывания кабеля.
Подскажите плз, есть вариант реализации такого подключения на нашем контроллере и как его реализовать?

Добрый день!

Насколько мне известно, на данный момент эта настройка ещё актуальна.

Прошу уточнить: что делали, какой результат получили. Чем точнее вы укажете конфигурацию, тем лучше.

Для диагностики проблемы также прошу прислать архив с диагностической информацией контроллера. Создание архива описано в документации.

Пожалуйста опишите что такое “включить в сеть”? То есть как именно пакет в сети, например от “nas” должен иметь маршрут. Какие преобразования должен проходить при переходе между интерфейсами (какими?).
Сейчас у меня нет понимания в чем именно нужна помощь, выглядит как просьба спроектировать решение без вводных.

цель очень простая: подключить камеру к NAS, чтобы он получал с неё картинку и события.

хочется чтобы камера попала в общую локальную сеть, получила IP от роутера.
NAT на контроллере не нужен, пакеты пусть ходят без преобразований.
но можно и с ним

diag_output_ABYBM7OO_2025-10-02-13.22.57.zip (554,1 КБ)

правильно ли понимаю что достаточно установить пакет bridge-utils и добавить в изначально пустой (кроме комментария) файл /etc/network/interfaces это? тут правда статика в примере

auto br1
iface br1 inet static
        address 192.168.51.183
        network 255.255.255.0
        netmask 255.255.255.0
        gateway 192.168.51.1
        bridge_ports wlan0 eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

слишком много действий чтобы коротко адекватно описать)
пробовал через nmcli

тут от камеры стрелочка к NAS, не к роутеру должна быть.
и попробовал с этим вариантом, отваливается от сети

network 192.168.51.0

Добрый день!

Да, технически для реализации вашей задачи потребуется только пакет bridge-utils.

не работает(
при логине пишет так:

The following network interfaces were found in /etc/network/interfaces
which means they are currently configured by ifupdown:

 - br1

If you want to manage those interfaces with NetworkManager instead
remove their configuration from /etc/network/interfaces
or use web interface config editor to remove them.

конфиг:

# cat /etc/network/interfaces
# This file is automatically generated by wb-nm-helper.

auto br1
iface br1 inet static
        address 192.168.51.183
        network 192.168.51.0
        netmask 255.255.255.0
        gateway 192.168.51.1
        bridge_ports wlan0 eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

список интерфейсов:

~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:85:01:01:d0:2e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::285:1ff:fe01:d02e/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:85:01:01:70:44 brd ff:ff:ff:ff:ff:ff
4: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 98:03:cf:b1:b8:12 brd ff:ff:ff:ff:ff:ff
5: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 9a:03:cf:b1:b8:12 brd ff:ff:ff:ff:ff:ff
7: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether de:08:0e:ef:68:ef brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::dc08:eff:feef:68ef/64 scope link
       valid_lft forever preferred_lft forever
17: dbg0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 1a:55:89:a2:69:43 brd ff:ff:ff:ff:ff:ff
    inet 10.200.200.1/30 brd 10.200.200.3 scope global noprefixroute dbg0
       valid_lft forever preferred_lft forever
    inet6 fe80::1855:89ff:fea2:6943/64 scope link
       valid_lft forever preferred_lft forever
27: veth4197d07@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
    link/ether 3e:8f:e3:4d:2a:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::3c8f:e3ff:fe4d:2a42/64 scope link
       valid_lft forever preferred_lft forever
28: vetha070287@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
    link/ether b6:61:c9:37:a1:1d brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::b461:c9ff:fe37:a11d/64 scope link
       valid_lft forever preferred_lft forever
29: vethd8f2d49@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
    link/ether 1a:c2:e0:56:7b:78 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    inet6 fe80::18c2:e0ff:fe56:7b78/64 scope link
       valid_lft forever preferred_lft forever

Добрый день!

Вижу, что метод конфликтует с NetworkManager, похоже, он уже устарел.
К сожалению, не могу точно ответить, как правильно настроить — недостаточно компетенции по этому вопросу.

Рекомендую посмотреть документацию по NetworkManager, возможно, там описана нужная настройка. На нашем оборудовании подобное применение не тестировалось.
Я передам идею в отдел документации, чтобы отразить такую возможность на вики

настроил с мануалами и дипсиком) в конце попросил его оформить в готовый скрипт.
просто бридж с вайфаем полноценно не работает, сделал через NAT.
в общем идея такая, всё работает. всем большое спасибо)

:exclamation: именно этот итоговый скрипт не проверял, делал всё по шагам, поэтому используйте (вдруг кому пригодится) осторожно, проверяйте.

#!/bin/bash

# Настройка bridge и NAT для подключения устройств через eth0 к интернету через WiFi
# На основе выполненных команд из истории

set -e

echo "=== Настройка bridge и NAT (оптимизированная версия) ==="

# Проверяем, выполняется ли скрипт от root
if [ "$EUID" -ne 0 ]; then
    echo "Пожалуйста, запустите скрипт от root"
    exit 1
fi

# 1. Создаем bridge интерфейс br0 (если не существует)
echo "1. Проверка и настройка bridge br0..."
if ! nmcli connection show br0 &>/dev/null; then
    echo "Создаем bridge br0..."
    nmcli connection add type bridge con-name br0 ifname br0
fi

# 2. Добавляем eth0 в bridge br0 (если не существует)
echo "2. Проверка и добавление eth0 в bridge..."
if ! nmcli connection show bridge-slave-eth0 &>/dev/null; then
    echo "Добавляем eth0 в bridge br0..."
    nmcli connection add type bridge-slave ifname eth0 master br0
fi

# 3. Настраиваем статический IP для br0
echo "3. Настройка статического IP для br0..."
nmcli connection modify br0 ipv4.addresses 192.168.100.1/24
nmcli connection modify br0 ipv4.method manual
nmcli connection modify br0 ipv4.gateway ""  # Важно: оставляем шлюз пустым
nmcli connection modify br0 connection.autoconnect yes

# 4. Активируем соединения
echo "4. Активация bridge соединений..."
nmcli connection up br0
nmcli connection up bridge-slave-eth0

# 5. Проверяем и включаем IP forwarding (если еще не включен)
echo "5. Проверка IP forwarding..."
if [ "$(cat /proc/sys/net/ipv4/ip_forward)" != "1" ]; then
    echo "Включаем IP forwarding..."
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
    sysctl -p
else
    echo "IP forwarding уже включен"
fi

# 6. Добавляем правила iptables (только если их нет)
echo "6. Настройка правил iptables..."

# Проверяем и добавляем NAT правило
if ! iptables -t nat -L POSTROUTING -n | grep -q "MASQUERADE.*wlan0"; then
    echo "Добавляем NAT правило..."
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
fi

# Проверяем и добавляем правила форвардинга
if ! iptables -L FORWARD -n | grep -q "br0.*wlan0"; then
    echo "Добавляем правила форвардинга..."
    iptables -A FORWARD -i br0 -o wlan0 -j ACCEPT
    iptables -A FORWARD -i wlan0 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
fi

# Проверяем и добавляем правило для входящих соединений на br0
if ! iptables -L INPUT -n | grep -q "br0"; then
    echo "Добавляем правило INPUT для br0..."
    iptables -A INPUT -i br0 -j ACCEPT
fi

# Проверяем и добавляем правила для трафика между сетями
if ! iptables -L FORWARD -n | grep -q "192.168.51.0/24.*192.168.100.0/24"; then
    echo "Добавляем правила для трафика между сетями..."
    iptables -A FORWARD -i wlan0 -o br0 -s 192.168.51.0/24 -d 192.168.100.0/24 -j ACCEPT
    iptables -A FORWARD -i br0 -o wlan0 -s 192.168.100.0/24 -d 192.168.51.0/24 -j ACCEPT
fi

# 7. Проверяем и удаляем неправильный маршрут по умолчанию
echo "7. Проверка маршрутов..."
if ip route show | grep -q "default via.*dev br0"; then
    echo "Удаляем неправильный маршрут по умолчанию через br0..."
    ip route del default via 192.168.51.1 dev br0
fi

# 8. Сохраняем правила iptables (если установлен iptables-persistent)
echo "8. Сохранение правил iptables..."
if command -v netfilter-persistent &> /dev/null; then
    netfilter-persistent save
    echo "Правила сохранены"
else
    echo "Для сохранения правил после перезагрузки установите: apt install iptables-persistent"
fi

# 9. Финальная проверка
echo "9. Финальная проверка настроек..."
echo "--- Bridge статус:"
bridge link show || echo "Команда bridge не найдена, используем альтернативу..." && ip link show type bridge

echo "--- IP адреса:"
ip addr show br0
ip addr show eth0

echo "--- Таблица маршрутизации:"
ip route show

echo "--- Активные соединения:"
nmcli connection show --active

echo "=== Настройка завершена ==="
echo ""
echo "Текущая конфигурация:"
echo "- Bridge br0: 192.168.100.1/24"
echo "- eth0 добавлен в bridge br0"
echo "- NAT настроен для выхода в интернет через wlan0"
echo "- Разрешена маршрутизация между сетями 192.168.51.0/24 и 192.168.100.0/24"
echo ""
echo "Для устройств в сети WiFi:"
echo "Добавьте на роутере статический маршрут: Сеть 192.168.100.0/24 → Шлюз [IP_контроллера_в_WiFi]"
1 лайк