Как вариант:
тут и там - дебиан, "там" сеть 192.168.101.0/24, "тут" - 192.168.100.0/24"Там" есть 10 серверов с апачем (192.168.101.101-110), 3 с mysql (192.168.101.51-53) и 1 c Windows Terminal Server (192.168.101.151).
"Тут" есть почтовый сервер IMAP и SMTP: 192.168.100.143 и 192.168.100.25
Пробрасываем известным методом порты:
nobody@192.168.100.1:/ $ ssh -L1101:192.168.101.101:80 \
-L1102:192.168.101.102:80 \
...
-L1110:192.168.101.110:80 \
-L13306:192.168.101.51:3306 \
-L23306:192.168.101.52:3306 \
-L33306:192.168.101.53:3306 \
-L3389:192.168.101.151:3389 \
-R1025:192.168.100.25:25 \
-R1143:192.168.100.143:143 \
192.168.101.1
Получаем 2 букета на локалхостах машин с адресами 192.168.100.1 и 192.168.101.1
Забирать проброшенное как-то неудобно.
Делаем дополнительные интерфейсы на _192.168.100.1_ (не .101.1):
iface eth0:51 inet static
address 192.168.101.51
netmask 255.255.255.0
...
iface eth0:53 inet static
address 192.168.101.53
netmask 255.255.255.0
iface eth0:101 inet static
address 192.168.101.101
netmask 255.255.255.0
...
iface eth0:110 inet static
address 192.168.101.110
netmask 255.255.255.0
iface eth0:151 inet static
address 192.168.101.151
netmask 255.255.255.0
Получаем на своей стороне такие же адреса, как на другой стороне. Ни сервер, ни клиент ssh путаться не будут. Если что-то не заработало, на этом этапе глюк можно не искать.
nobody@192.168.100.1:/ $ ssh -L192.168.101.101:80:192.168.101.101:80 \
-L192.168.101.102:80:192.168.101.102:80 \
...
-L192.168.101.110:80:192.168.101.110:80 \
-L192.168.101.51:3306:192.168.101.51:3306 \
-L192.168.101.52:3306:192.168.101.52:3306 \
-L192.168.101.53:3306:192.168.101.53:3306 \
-L192.168.101.151:3389:192.168.101.151:3389 \
192.168.101.1
Разберем синтаксис:
-L192.168.101.151:3389:192.168.101.151:3389
слева "-L192.168.101.151:3389"
справа ":192.168.101.151:3389"
Левую часть понимаем только "тут", правую часть умеет понимать сервер, к которому подсоединяемся. В адресе справа можно писать доменные имена, которые "тут" даже не разыменовать, а "там" можно.
Что бы добавить следующие строки,
-R192.168.100.25:25:192.168.100.25:25 \
-R192.168.100.143:143:192.168.100.143:143 \
надо на другой стороне провести аналогичную работу по созданию интерфейсов.
192.168.100.1:~ # iptables -t filter -A INPUT -d 192.168.101.101 -p tcp -m tcp --dport 80 -j ACCEPT
Даем доступ к проброшенному с 192.168.101.101 80-му порту пользователям сети 192.168.100.0/24 и другим, кто может там тусить.
Для примера, сделаем либеральную политику - всем "тут" можно ходить на сайты "там":
-A INPUT -d 192.168.101.0/24 -s 192.168.100.0/24 -p tcp -m tcp --dport 80 -j ACCEPT
Всё. Творческих узбеков.