Цепочка переадресации портов Iptables в сети VPN на Debian

Цепочка переадресации портов Iptables в сети VPN на Debian

У меня проблема с настройкой сети. Почти работает... но не полностью:)

Я хочу иметь доступ к камере в здании на даче. У меня есть доступ к Интернету без публичного IP, поэтому я решил создать VPN. В загородном доме у меня есть один RaspberryPI (VPN-клиент) и LTE-маршрутизатор (Huawei B315), соединенные вместе с IP-камерой. В моем доме, где у меня есть модем с публичным IP, у меня есть еще один RPI (VPN-сервер). VPN находится в режиме маршрутизации (RPI создает отдельную сеть).

Итак, подведем итог:

  1. Шлюз - модем у меня дома
  2. RPI1 - VPN-сервер, подключенный к модему у меня дома (IP: eth0-192.168.0.6 (локальная сеть), tun0-10.8.0.1 (сеть VPN))
  3. PRI2 — VPN-клиент, подключенный к модему в другом доме (IP: eth0-192.168.0.100, tun0-10.8.0.2)
  4. Камера - Planet ICA-4150 (с веб-интерфейсом Active-X) - подключена к модему в другом доме (IP: 192.168.0.10)

VPN работает — я могу пинговать оба RPI друг с друга и могу подключиться по SSH из своего дома к RPI1, а затем к RPI2.

Я хочу иметь возможность открывать веб-интерфейс камеры следующим образом: example.ddns.net:9000. DDNS настроен и работает.

На модеме моего дома я перенаправил порт 9000 извне на локальный IP 192.168.0.6:9000 (RPI1).

Мои настройки iptables: RPI1:

iptables -A PREROUTING -t nat -p tcp --dport 9000 -j DNAT --to-destination 10.8.0.2:9000
iptables -A PREROUTING -t nat -p udp --dport 9000 -j DNAT --to-destination 10.8.0.2:9000
iptables -A FORWARD -p tcp -d 10.8.0.2 --dport 9000 -j ACCEPT
iptables -A FORWARD -p udp -d 10.8.0.2 --dport 9000 -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

РПИ2:

iptables -A PREROUTING -t nat -p tcp --dport 9000 -j DNAT --to-destination 192.168.0.10:80
iptables -A PREROUTING -t nat -p udp --dport 9000 -j DNAT --to-destination 192.168.0.10:80
iptables -A FORWARD -p tcp -d 192.168.0.10 --dport 80 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.0.10 --dport 80 -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

Когда я ввожу правильный адрес в браузере, я вижу веб-интерфейс, но не могу войти в систему. Конечно, я могу войти в систему, когда мой ноутбук подключен локально к камере. И я также провел эксперимент, подключив камеру к локальной сети в моем доме и экспортировав один порт в модеме моего дома напрямую в камеру, и это тоже работает, но только если я перенаправляю и порты TCP, и порты UDP. Я также не могу войти в систему, когда я ввожу 192.168.0.6:9000 в браузере из моей локальной сети дома.

Я также пробовал менять порт с 9000 на 24000, но безуспешно.

Есть у кого-нибудь идеи, что я делаю не так? Может я что-то упустил в iptables?

решение1

Я думаю, это потому, что вы получаете веб-страницу на порту 9000 в вашем браузере, но камера, на которой размещен сервер, видит req на порту 80. Поэтому действие post, если оно помещает абсолютный URL, будет отправлено на порт 80. Вы можете проверить это на вкладке сетей вашего браузера. Если это так, добавьте iptable dnat для IP-адреса назначения и dport 80

Связанный контент