Как перенаправить привилегированный порт sub-1024 на непривилегированный порт 1024+ с помощью firewalld?

Как перенаправить привилегированный порт sub-1024 на непривилегированный порт 1024+ с помощью firewalld?

Вопрос

Как перенаправить привилегированный порт sub-1024 на непривилегированный порт 1024+ с помощью firewalld?

Причина

Зачем мы это делаем? Мы хотим иметь возможность переключать непривилегированный порт 1050 на шлюзе и использовать другой почтовый сервер верхнего уровня. Например, чтобы протестировать другое решение по борьбе со спамом, используйте порт 1051 для отправки почты на другой почтовый сервер с другим решением по фильтрации спама.

Почтовые серверы автоматически подключаются к шлюзу при запуске. Автоматическое подключение может происходить только на непривилегированных портах 1024+.

Макет и настройка

Макет

+--------+         +---------------------+         +----------------+
|  WAN   |         |                1050 | <-      |                |
| Client |         |       Gateway       |    \    |   Mail Server  |
|        |  <--->  | 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
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: etho0
  sources: 
  services: dhcpv6-client http https smtp ssh
  ports: 25/tcp
  protocols: 
  masquerade: no
  forward-ports: port=25:proto=tcp:toport=1050:toaddr=
  source-ports: 
  icmp-blocks: 
  rich rules: 

Именно это мы и ожидали увидеть в правилах брандмауэра.

Результат

Вот что мы получаем, когда подключаемся по telnet к вышестоящему почтовому серверу на шлюзе...

root@gateway:~# telnet localhost 1050
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)

Вот что мы получаем с удаленной клиентской машины...

client@client123:~$ telnet gateway.example.org 25
Trying <IP_of_gateway>...
Connected to gateway.example.org.
Escape character is '^]'.

Мы тоже рассчитываем увидеть эту 220 debian10email.debian10email ESMTP Postfix (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
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: etho0
  sources: 
  services: dhcpv6-client http https smtp ssh
  ports: 1025/tcp
  protocols: 
  masquerade: no
  forward-ports: port=1025:proto=tcp:toport=1050:toaddr=
  source-ports: 
  icmp-blocks: 
  rich rules: 

Результат

client@client123:~$ telnet gateway.example.org 1025
Trying <IP_of_gateway>...
Connected to gateway.example.org.
Escape character is '^]'.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)

У нас есть ожидаемая 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)строка, поэтому брандмауэр перенаправляет порты, как и ожидалось.

Заключение

Переадресация между привилегированными и непривилегированными портами отличается от переадресации между непривилегированными портами.

Как нам перенаправить привилегированный порт sub-1024 на непривилегированный порт 1024+ с помощью firewalld на Debian 10 Buster? Если где-то есть ответ, пожалуйста, укажите его. Мы не смогли его найти.

решение1

Ваша конфигурация firewalld выглядит правильной. Разрешено ли машине, с которой вы тестировали, делать исходящие соединения на порт 25? Попробуйте с другой машины.

Связанный контент