У меня проблема при использовании переадресации портов ssh и nat одновременно.
Ситуация:
Машина A работает на веб-сервере через порт 8080. Машина B - это Raspberry Pi, который работает как маленький маршрутизатор. Он имеет два сетевых интерфейса (eth0 и eth1). eth0 подключен к локальной сети и через нее к глобальной сети. eth1 подключен только к компьютеру A. Он запускает ddclient для подключения к dyndns.
Цель:
Я хочу безопасно подключиться к машине A к порту 8080 и т.д. Через ssh port forwarding.
Что я пробовал:
На моей локальной машине (MacBook) я использовал:
ssh -L 5903:127.0.0.1:5901 pi@pi.dynip.org
или же
ssh -L 5903:127.0.0.1:5901 pi@machine-b-ip
и я могу подключиться к серверу vnc на машине B с (только для целей тестирования):
vnc://127.0.0.1:5903/
Таким образом, я предполагал перенаправить порт 8080 с моей локальной машины на машину B и "nat" на машину A с такими правилами iptable:
iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE
iptables -A FORWARD --in-interface eth0 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth0 -m tcp --dport 8080 -j DNAT --to-destination 192.168.110.101:8080
Мой другой конфиг iptables был:
iptables -t nat -A PREROUTING -p tcp -i eth0 -m tcp --dport 9090 -j DNAT --to-destination 192.168.114.151:8080
iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE
iptables -A FORWARD --in-interface eth0 -s 192.168.178.20 -j ACCEPT
iptables -A FORWARD --in-interface eth0 -j DROP
Я также включил ssh GatewayPorts на машине B, но каждый раз, когда я хочу подключиться через:
http://127.0.0.1:8080/
Я получаю сообщение об ошибке "Отказано в соединении", и в журнале говорится, что "этот сервис не запущен". Но если я подключусь через:
http://ip-machine-b:8080/
оно работает.
Не могли бы вы мне помочь? Я попробовал несколько решений от удаленной и локальной переадресации ssh-портов, через ssh multi hops, nat и т.д., Но не смог найти для меня работающего решения.
Заранее спасибо, Доминик.