Вы должны проверить свои правила брандмауэра на 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), вы можете
Порт перенаправляет соединения для Pi2 на некоторые порты с большим номером Pi1
после маскировки перенаправить эти пакеты на 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