Вопрос
Как перенаправить привилегированный порт ниже 1024 на непривилегированный порт 1024+ с помощью firewalld?
Причина
Почему мы это делаем? Мы хотим иметь возможность переключать непривилегированный порт 1050 на шлюзе и использовать другой вышестоящий почтовый сервер. Например, чтобы протестировать другое решение для борьбы со спамом, используйте порт 1051 для отправки почты на другой почтовый сервер с другим решением для фильтрации спама.
Почтовые серверы автоматически подключаются к шлюзу при запуске. Автоматическое подключение может происходить только на непривилегированных портах 1024+.
Макет и настройка
Макет
+--------+ +---------------------+ +---------------- +
| БЛЕДНАЯ | | 1050 | <- | |
| Клиент | | Шлюз | \ | Почтовый сервер |
| | <---> | 25 | -> | 25 |
+--------+ +---------------------+ +---------------- +
Настройка брандмауэра
Очистите брандмауэр, откройте порт, установите порт вперед и добавьте несколько служб.
root@gateway:~# firewall-cmd --reload
root@gateway:~# firewall-cmd --zone=public --add-port=25/tcp
root@gateway:~# firewall-cmd --zone=public --add-forward-port=port=25:proto=tcp:toport=1050
root@gateway:~# firewall-cmd --add-service={http,https,smtp}
Проверить брандмауэр
Подтвердите настройки брандмауэра...
root@gateway:~# firewall-cmd --list-all
публичный (активный)
цель: по умолчанию
icmp-инверсия блока: нет
интерфейсы: это0
источники:
сервисы: dhcpv6-клиент http https smtp ssh
порты: 25/TCP
протоколы:
маскарад: нет
переадресация портов: порт = 25: proto = tcp: toport = 1050: toaddr =
исходные порты:
icmp-блоки:
богатые правила:
Это то, что мы ожидали увидеть в правилах брандмауэра.
Результат
Вот что мы получаем, когда подключаемся по телнету к восходящему почтовому серверу на шлюзе...
root@gateway:~# telnet localhost 1050
Пытаюсь 127.0.0.1...
Подключен к локальному хосту.
Экранирующий символ '^]'.
220 debian10email.debian10email Постфикс ESMTP (Debian/GNU)
Это то, что мы получаем от удаленной клиентской машины...
client@client123:~$ telnet gateway.example.org 25
Попытка <IP_of_gateway>...
Подключен к gateway.example.org.
Экранирующий символ '^]'.
Мы также ожидаем увидеть 220 debian10email.debian10email Постфикс ESMTP (Debian/GNU)
линии, но не являются.
Санитарная проверка...
Тест
Чтобы убедиться, что правила переадресации портов написаны правильно, мы...
- Откройте порт 1025 на брандмауэре.
- Перенаправление портов с 1025 на 1050
- А потом проверяем, что мы видим на удаленном клиенте.
Настроить брандмауэр
Очистите брандмауэр, откройте порт, установите порт вперед и несколько служб.
root@gateway:~# firewall-cmd --reload
root@gateway:~# firewall-cmd --zone=public --add-port=1025/tcp
root@gateway:~# firewall-cmd --zone=public --add-forward-port=port=1025:proto=tcp:toport=1050
root@gateway:~# firewall-cmd --add-service={http,https,smtp}
Проверить брандмауэр
root@gateway:~# firewall-cmd --list-all
публичный (активный)
цель: по умолчанию
icmp-инверсия блока: нет
интерфейсы: это0
источники:
сервисы: dhcpv6-клиент http https smtp ssh
порты: 1025/TCP
протоколы:
маскарад: нет
переадресация портов: порт = 1025: proto = tcp: toport = 1050: toaddr =
исходные порты:
icmp-блоки:
богатые правила:
Результат
client@client123:~$ telnet gateway.example.org 1025
Попытка <IP_of_gateway>...
Подключен к gateway.example.org.
Экранирующий символ '^]'.
220 debian10email.debian10email Постфикс ESMTP (Debian/GNU)
У нас есть ожидаемое 220 debian10email.debian10email Постфикс ESMTP (Debian/GNU)
line, поэтому брандмауэр выполняет переадресацию портов, как и ожидалось.
Заключение
Переадресация между привилегированными и непривилегированными портами отличается от переадресации между непривилегированными портами.
Как перенаправить привилегированный порт ниже 1024 на непривилегированный порт 1024+ с помощью firewalld в Debian 10 Buster? Если где-то есть ответ, укажите, пожалуйста.Нам не удалось его найти.