У меня есть 3 устройства в моей домашней сети; Netgear ReadyNAS, Raspberry Pi [Pi1] под управлением Raspbian Debian и Raspberry Pi [Pi2] под управлением XBMC, который, я думаю, также основан на Debian.

Я установил 3 правила переадресации портов на маршрутизаторе и теперь могу без проблем подключаться к ReadyNas & Pi1 через Интернет.

Pi2 не доступен, соединение отказано. Я переориентировал правило, которое работает для ReadyNas на Pi2, и оно все еще не работает, заставляя меня поверить, что это проблема для Pi. Я пробовал оба порта 22 (SSH) и 8001 (веб-сервер)

Внутренне я могу подключиться к Pi2 без проблем.

Больше всего меня беспокоит служба SSH на порту 22, которая использовалась для большинства моих испытаний. В конечном счете, я также хочу перенаправить порты веб-сервера.

Что может быть не так?

1 ответ1

1

Вы должны проверить свои правила брандмауэра на XMBC Pi. Причина в том, что из-за ограничений безопасности некоторые предварительно сконфигурированные блоки блокируют все соединения, происходящие из-за пределов локальной сети.

Команда сделать это

  iptables -t filter -L -n -v

и аналогично для других таблиц, nat и mangle. Если вы можете действовать по этим правилам, то это самое простое решение.

В качестве альтернативы, если на вашем маршрутизаторе запущено программное обеспечение, такое как dd-wrt, OpenWrt, Tomato и т.д., На маршрутизаторе действует следующее правило.

 iptables -t nat -A POSTROUTING -o LAN_IFACE -s ! 192.168.0.0/24 -d 192.168.0.15 -p tcp --dport 22 -j MASQUERADE

Это предполагает, что ваша домашняя сеть - 192.168.0.0/24, непокорный Pi - 192.168.0.15, а интерфейс локальной сети маршрутизатора называется LAN_IFACE. Правило просто переписывает источник пакета как исходящий от самого маршрутизатора (192.168.0.1 согласно вышеупомянутым предположениям), таким образом обманывая XMBC, чтобы думать, что соединения инициируются локально, а не удаленно.

И наконец, если ваш маршрутизатор не разрешает вышеуказанное, если у вас есть какой-то другой компьютер с Linux (например, я полагаю, первый Pi), вы можете

  1. Порт перенаправляет соединения для Pi2 на некоторые порты с большим номером Pi1

  2. после маскировки перенаправить эти пакеты на Pi2 и соответствующий порт.

На этот раз для каждого порта вам понадобятся две команды: давайте снова рассмотрим ssh и допустим, что маршрутизатор имеет перенаправленные порты ssh для подключения Pi2 к порту 51111 (192.168.0.10:51111). Затем:

  iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 51111 -j DNAT --to 192.168.0.15:22
  iptables -A FORWARD -p tcp -d 192.168.0.15 --dport 22 -j ACCEPT

Просто убедитесь, что вы разрешили пересылку на Pi1,

  sysctl net.ipv4.conf.eth0.forwarding=1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .