Всем привет!
Дано:
Wirenboard 8.4.4, release wb-2507 подключен к роутеру через WiFi.
Рядом с ним располагается ip-камера, которую хочется с помощью контроллера включить в сеть. bridge/nat не важно, главное чтобы NAS из сети контроллера её увидел.
На форуме были несколько тем, но они старые и как я понял уже не актуальные, например эта
По крайней мере, у меня в итоге ничего не получилось.
Возможно вся эта схема выглядит костыльно, но в текущих ограничениях выглядит как единственное решение без прокладывания кабеля.
Подскажите плз, есть вариант реализации такого подключения на нашем контроллере и как его реализовать?
Пожалуйста опишите что такое “включить в сеть”? То есть как именно пакет в сети, например от “nas” должен иметь маршрут. Какие преобразования должен проходить при переходе между интерфейсами (какими?).
Сейчас у меня нет понимания в чем именно нужна помощь, выглядит как просьба спроектировать решение без вводных.
цель очень простая: подключить камеру к NAS, чтобы он получал с неё картинку и события.
хочется чтобы камера попала в общую локальную сеть, получила IP от роутера.
NAT на контроллере не нужен, пакеты пусть ходят без преобразований.
но можно и с ним
правильно ли понимаю что достаточно установить пакет bridge-utils и добавить в изначально пустой (кроме комментария) файл /etc/network/interfaces это? тут правда статика в примере
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.
в общем идея такая, всё работает. всем большое спасибо)
именно этот итоговый скрипт не проверял, делал всё по шагам, поэтому используйте (вдруг кому пригодится) осторожно, проверяйте.
#!/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]"