How do you port forward a privileged sub-1024 port to a non-privileged 1024+ port with 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)
, но не видим.
Чтобы убедиться, что правила проброса портов написаны правильно, мы...
Очищаем брандмауэр, открываем порт, устанавливаем проброс порта и несколько служб.
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? Если где-то есть ответ, пожалуйста, укажите его. Мы не смогли его найти.
Ваша конфигурация брандмауэра выглядит правильной. Разрешается ли тестируемому компьютеру выполнять исходящие подключения к порту 25? Попробуйте с другой машины.