Предположим, что есть хосты A
и B
. A
разрешен доступ по SSH B
на основе его IP-адреса. Теперь рассмотрим другой хост C
. C
не имеет доступа к B
, но если бы мы могли направить его трафик через A
, то C
могли бы получить доступ к B
. Проблема в том, как выполнить такую трансляцию адресов? Никакие два хоста не находятся в одной локальной сети.
Первой моей мыслью было сделать SNAT с iptables на A
:
iptables -t nat -A POSTROUTING --protocol tcp --source C --destination B --sport 7777 --dport 22 -j SNAT A
то есть, что C
нужно попытаться подключиться A:7777
, но я понял, что маршрутизация пакета до SNAT все портит, поэтому трансляция адресов должна быть сделана в PREROUTING -- что, к сожалению, невозможно. Другая мысль была настроить VPN, но я думаю, что это слишком сложно. Есть ли аккуратный способ сделать это, желательно с чем-то таким чистым, как iptables?