1

Я не уверен, какой правильный термин использовать, и я не знаю, какие инструменты мне следует использовать. Единственное, что у меня есть, - это цель, которую я хотел бы достичь.

У меня есть две машины Linux (A и B) и удаленный сервис. Служба прослушивает порт 16000. Исходящее соединение с компьютера A на порту 16000 заблокировано брандмауэром, но на B это не так. Мне нужно получить доступ к сервису из A. Поэтому, вероятно, его нужно будет маршрутизировать (правильный термин?) через B. Я не могу изменить программу, которая обращается к сервису (поэтому он всегда будет пытаться использовать порт 16000).

Я знаю, что есть много обучающих программ по подобным темам, но я не знаю, какой из них мне следует следовать, потому что, по-видимому, существует множество возможностей. У меня полный доступ к обеим машинам. Я простой разработчик, а не администратор Linux, но для меня это действительно блокировка :( Каков наилучший способ сделать это? Что я должен выполнить на машине A и на машине B?

Благодарю.

2 ответа2

3

Я не знаю лучшего способа, есть несколько

Исправить брандмауэр

Это кажется мне лучшим. Из вашего вопроса не ясно, где находится брандмауэр (это отдельное устройство, функция маршрутизатора или программный брандмауэр на A?)

маршрутизация

Вы, вероятно, можете направить весь трафик от А до Б, но я бы этого не делал.

Вы должны настроить A со статической сетевой конфигурацией, которая дает адрес B в качестве шлюза по умолчанию.

Вы должны настроить B как однорукий маршрутизатор.

Возможно, вам придется выполнить некоторые дополнительные трюки с NAT на реальном маршрутизаторе LAN-Internet, чтобы вместо этого трафик A возвращался в B.

Вероятно, было бы проще поместить A в подсеть отдельно и добавить сетевой адаптер в B.

Подождите и посмотрите, если кто-то придумает простое решение. Сначала я попробую свою другую идею ниже.

экспедиция

Вы можете, например, добавить запись /etc/host на A, которая связывает DNS-имя службы с IP-адресом B. Обычно преобразователи имен сначала обращаются к /etc /hosts (если вы не можете указать порядок - подробности зависит от ОС)

На B используйте что-то вроде socat для настройки пересылки / ретрансляции на порт 16000, который действует как прокси. Смотрите 3-й пример в документации по socat .

1

Если какое-либо исходящее подключение к 16000 с сервера A заблокировано, и приложение может подключиться только к порту 16000, ваша единственная надежда состоит в том, что вам разрешено подключаться к локальному порту 16000 (локальному, как на сервере A).

Если это возможно, просто настройте переадресацию порта SSH с локального порта 16000 на сервер B:

ssh -L 16000:service:16000 server_b

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .