Назад | Перейти на главную страницу

Как туннелировать исходящее соединение через входящее соединение

Я предполагаю, что следующее будет считаться взломом, но вот что:

У меня есть машины A, B и C.
B может открыть соединение с A, но A не может открыть соединение с B (из-за FW).
Работа: A <--- B
Не работает: A ---> B

Я хочу иметь возможность открыть соединение от A к B.
Есть ли способ (инструмент, предпочтительно инструмент ОС), позволяющий бесшовные инициирование соединения от A к B, вполне возможно, путем туннелирования поверх существующего соединения от B к A?

В конце концов, я хочу иметь возможность успешно подключаться по телнету от A к B:

telnet B [port number]  

Или даже к машине C, к которой B имеет доступ, а A - нет. Из:

telnet C [port number]

Позже отредактируйте:

Мне предлагали «статическое» туннелирование. Но у меня было бы бесшовное решение.
Например, настройте, что попытка подключения к определенному диапазону IP-адресов назначения будет туннелироваться через B, где C - это динамически изменяющийся пункт назначения. Таким образом, telnet 80 будет подключаться к цели, проходящей через B

Вы не указали, на какой ОС работают эти устройства, поэтому я предполагаю, что это unix. Если это не так, поменяйте теги на свой вопрос. При этом сказано:

B% ssh A -R 2200:B:22

зарегистрирует вас в A, создавая туннель от A до B, так что, когда вы подключаетесь к порту A, ssh туннелирует ваши пакеты на порт 22 на B.

B% ssh A -R 2200:C:22

также будет работать при условии, что у B есть непрерывный сетевой путь к C; когда на A вы подключаетесь к порту 2200, ssh туннелирует вас на порт 22 на C.

Если вы используете UNIX или UNIX-подобные системы, изучите OpenSSH и его Tunnel, TunnelDevice, и PermitTunnel config директивы. Если ваши системы поддерживают tun устройств, должна быть возможность настроить ssh и sshd для создания туннеля точка-точка (уровень 3, по умолчанию) или Ethernet (уровень 2) между хостами A и B.

В любом случае вам нужно будет настроить устройства tun на A и B, как и на любом другом сетевом устройстве (т. Е. Назначить IP-адреса, добавить маршруты).

И, наконец, если вы хотите разрешить соединения от A к C через туннель A-B, вам необходимо убедиться, что хост B разрешает пересылку IP-пакетов.