A questão
Como você encaminha uma porta sub-1024 privilegiada para uma porta 1024+ não privilegiada com firewalld?
A razão
Por que estamos fazendo isso? Queremos poder alternar a porta 1050 não privilegiada no gateway e usar um servidor de correio upstream diferente. Por exemplo, para testar uma solução de spam diferente, use a porta 1051 para enviar mensagens para um servidor de correio diferente com uma solução de filtragem de spam diferente.
Os servidores de e-mail se conectam automaticamente ao gateway quando são iniciados. A conexão automática só pode acontecer em portas não privilegiadas que sejam 1024+.
O layout e configuração
Disposição
+--------+ +---------------------+ +----------------+
| WAN | | 1050 | <- | |
| Client | | Gateway | \ | Mail Server |
| | <---> | 25 | -> | 25 |
+--------+ +---------------------+ +----------------+
Configurar firewall
Limpe o firewall, abra a porta, defina a porta para frente e adicione alguns serviços.
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}
Verifique o firewall
Confirme as configurações do firewall...
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:
Isso é o que esperávamos ver nas regras de firewall.
O resultado
Isto é o que obtemos quando telnetamos o servidor de correio upstream no gateway...
root@gateway:~# telnet localhost 1050
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
Isto é o que obtemos de uma máquina cliente remota...
client@client123:~$ telnet gateway.example.org 25
Trying <IP_of_gateway>...
Connected to gateway.example.org.
Escape character is '^]'.
Esperamos ver também a 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
linha, mas não vemos.
Verificação de sanidade...
O teste
Apenas para confirmar se as regras de encaminhamento de porta estão sendo escritas corretamente, nós...
- Abra a porta 1025 no firewall.
- Encaminhamento de porta 1025 a 1050
- E então verifique o que vemos no cliente remoto.
Ajustar firewall
Limpe o firewall, abra a porta, defina a porta para frente e alguns serviços.
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}
Verifique o firewall
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:
O resultado
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)
Temos a 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)
linha esperada, então o firewall está encaminhando a porta conforme o esperado.
Conclusão
O encaminhamento entre portas privilegiadas e não privilegiadas é diferente do encaminhamento entre portas não privilegiadas.
Como encaminhamos uma porta sub-1024 privilegiada para uma porta 1024+ não privilegiada com firewalld no Debian 10 Buster? Se houver uma resposta em algum lugar, indique-a. Não conseguimos encontrá-lo.
Responder1
Sua configuração do firewalld parece correta. A máquina que você testou tem permissão para fazer conexões de saída para a porta 25? Tente em alguma outra máquina.