Как перенаправить весь трафик, поступающий на данный порт, на другой порт?
Определите макет и проблему
Расположение
Вот макет того, что я пытаюсь сделать...
+--------+ +---------------------+ +---------------- +
| БЛЕДНАЯ | <---> | 6789 | | |
| Клиент | | Шлюз | | Хост |
| | | 4567 | <---> | 2345 Сервис |
+--------+ +---------------------+ +---------------- +
Я хочу прозрачно перенаправить весь трафик, поступающий на порт 6789, на порт 4567. Клиент в глобальной сети и служба на хосте не должны ничего знать о шлюзе.
Шлюз - Debian 10 с firewalld.
Эта проблема
Я не могу перенаправить трафик, поступающий на порт 6789 шлюза, на порт 4567.
Текущая установка
Шаг 01. Откройте порт на брандмауэре и убедитесь, что порт открыт.
Откройте порт на шлюзе
Запустите брандмауэр-cmd
команда: брандмауэр-cmd --добавить порт = 6789
Проверьте состояние брандмауэра...
root@gateway:~# firewall-cmd --list-all
публичный (активный)
цель: по умолчанию
icmp-инверсия блока: нет
интерфейсы: это0
источники:
сервисы: dhcpv6-клиент http https ssh
порты: 6789/TCP
протоколы:
маскарад: да
форвард-порты:
исходные порты:
icmp-блоки:
богатые правила:
- Подтвердите, что порт открыт.
- На шлюзе запустите прослушиватель:
нк -vvlp 6789 &
- Подтвердите, что прослушиватель в порядке...
root@gateway:~# netstat -tulnp | грэп 6789
TCP 0 0 0.0.0.0:6789 0.0.0.0:* ПРОСЛУШИВАТЬ 2274/nc
- С клиента попытайтесь получить доступ к шлюзу:
client@client123:~$ nc -vvN gateway.example.org 6789
Подключение к порту 6789 gateway.example.org [tcp/*] выполнено успешно!
Вывод: Порт 6789 открыт на брандмауэре.
Очистить, убив нк
процесс как на клиенте, так и на шлюзе.
Шаг 02. Подтвердите соединение между шлюзом и службой на хосте.
root@gateway:~# телнет локальный хост 4567
Пытаюсь 127.0.0.1...
Подключен к локальному хосту.
Экранирующий символ '^]'.
220 backendhost.backendhost MyService (Debian/GNU)
Вывод: Туннель между шлюзом и службой на хосте работает.
Шаг 03. Добавьте переадресацию порта на шлюз и проверьте состояние брандмауэра.
root@gateway:~# firewall-cmd --add-forward-port=port=6789:proto=tcp:toport=4567`
root@gateway:~# firewall-cmd --list-all
публичный (активный)
цель: по умолчанию
icmp-инверсия блока: нет
интерфейсы: это0
источники:
службы: dhcpv6-клиент ssh
порты: 6789/TCP
протоколы:
маскарад: нет
переадресация портов: порт = 6789: proto = tcp: toport = 4567: toaddr =
исходные порты:
icmp-блоки:
богатые правила:
Вывод: Проброс порта находится в брандмауэре.
В этот момент, если я попытаюсь подключиться к хосту от клиента, я получаю...
client@client123:~$ telnet gateway.example.org 6789
Попытка <IP_of_gateway>...
telnet: невозможно подключиться к удаленному хосту: в соединении отказано
На данный момент я хочу увидеть то, что я видел на шаге 02 выше.
Вопросы
Вот тут я не уверен...
Когда я бегу netstat -тулнп
на шлюзе он НЕ показывает ничего, прослушивающего порт 6789. Я не ожидаю этого, поскольку у меня нет запущенной службы, которая прослушивает порт 6789.
Нужна ли мне какая-то служба для прослушивания порта 6789? Если да, то? Или я что-то упускаю в настройках брандмауэра? Нужен ли мне какой-то прозрачный прокси, как упоминается здесь?
Я не собираюсь загромождать этот пост ссылками на все, что я прочитал за последние пару недель, но если есть пост, в котором есть ответ, пожалуйста, укажите его.
Редактировать
В ответ на @A.B.
Хост работает за брандмауэром. Когда хост запускается, он автоматически создает туннель к шлюзу, используя переадресацию порта SSH.
Вот команда, которую хост запускает при загрузке: ssh -N -R 4567:localhost:2345 туннель@gateway.example.org
Этот туннель работает, как было подтверждено на шаге 02. И хотя я не упоминал об этом ранее, клиент работает, когда он находится в той же локальной сети, что и хост.
С чем я борюсь, так это с тем, чтобы трафик, поступающий на шлюз, был успешно передан на хост. Шлюз должен быть «прозрачным». Сертификат безопасности хранится у хоста, и клиент должен думать, что он общается напрямую с хостом.
Я все еще пытаюсь изучить терминологию, поэтому, если есть более правильный способ задать этот вопрос, я, безусловно, готов узнать, что это такое.