Deixe-me começar dizendo que vasculhei a Internet, até empresas das quais comprei o software e já se passaram 5 meses !! Então, estou me voltando para a comunidade, pois meus olhos e cérebro estão sangrando de tanto ler e tentar chegar a lugar nenhum. Em suma, isso pode ser feito, SIM. Aparentemente eu sou muito estúpido para fazer isso, porém pelo menos eu tenho um grande conhecimento de iptables agora :-)
Minha exigência: eu uso protonmail para meu e-mail. Se você não sabia, é tão seguro que você precisa executar um "software ponte" em cada máquina que precisa enviar/receber e-mail. Eu simplesmente quero enviar e-mails de mim mesmo, para mim mesmo, para minha casa inteligente, câmeras, alertas, etc etc. Como você pode imaginar, não consigo instalar este software em 20 dispositivos, muito menos em câmeras !!! Portanto, preciso de um único servidor linux executando este software para atuar como o "hub" de e-mail
Minha rede é 192.168.10.0/24 sem vlans, sem complicações (pfsense como meu roteador/firewall)
Estou usando mxlinux/debian como meu "host de e-mail" 192.168.10.106 IMAP está escutando na porta 1143 SMTP está escutando na porta 1025
Tudo o que eu queria fazer era fazer com que QUALQUER dispositivo na minha rede pudesse usar 192.168.10.106 para enviar e-mails usando SMTP na porta 1025. Achei que seria fácil... !!! Não posso alterá-lo para algo como 0.0.0.0 etc.
Primeiro, você deve saber que entrei em contato diretamente com o protonmail, pois é um serviço de e-mail pago, eles realmente têm técnicos que sabem o que estão fazendo e falam com você. No entanto, eles acham que é um "risco de segurança" permitir que seu serviço ouça em 0.0.0.0, portanto, o código não permitirá que isso seja alterado. Fiz o seguinte no "servidor de email / 192.168.10.106"
Editado
/etc/sysctl.conf
e descomentado na#
frente de net.ipv4.ip_forward=1Atualizada
iptables
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.10.0/24 --dport 1025 -j DNAT --to-destination 127.0.0.1:1025 sudo iptables -t nat -A POSTROUTING -o lo -p tcp --dport 1025 -j SNAT --to-source 192.168.10.106 sudo iptables -A FORWARD -i eth0 -o lo -p tcp --dport 1025 -j ACCEPT
Salve minhas entradas na reinicialização e vai me perguntar se eu quero salvar minhas tabelas acima, preciso dizer que sim, então vou:
sudo apt install iptables-persistent
Vá para "configuração do firewall" do MX e desative "público, privado e escritório", basicamente desative o firewall
Reinicie o computador
OK, agora listando após uma reinicialização, fica assim. Eu tentei de um computador Windows na minha rede 192.168.10.50 para telnet e como você pode ver, estou vendo pacotes, mas não está funcionando :-( :-( :-( :-( :-( :-( :-( :- ( :-( :-( :-(
sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 15748 packets, 1719K bytes)
pkts bytes target prot opt in out source destination
5 260 DNAT tcp -- eth0 * 192.168.10.0/24 0.0.0.0/0 tcp dpt:1025 to:127.0.0.1:1025
Chain INPUT (policy ACCEPT 15748 packets, 1719K bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 730 packets, 73256 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 730 packets, 73256 bytes)
pkts bytes target prot opt in out source destination
0 0 SNAT tcp -- * lo 0.0.0.0/0 0.0.0.0/0 tcp dpt:1025 to:192.168.10.106
Este sou eu testando o serviço no computador de e-mail host local
$ telnet 127.0.0.1 1025
Trying 127.0.0.1... Connected to 127.0.0.1.
Escape character is '^]'.
220 127.0.0.1 ESMTP Service Ready
Observe os pacotes descartados no lado recebido da eth0
$ uname -a
Linux email 5.10.0-23-amd64 #1 SMP Debian 5.10.179-2 (2023-07-14) x86_64 GNU/Linux
bob@email:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.106 netmask 255.255.255.0 broadcast 192.168.10.255
ether 00:0c:29:63:d5:4f txqueuelen 1000 (Ethernet)
RX packets 126620 bytes 24077186 (22.9 MiB)
RX errors 0 dropped 6447 overruns 0 frame 0
TX packets 30080 bytes 3728557 (3.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 57 bytes 4931 (4.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 57 bytes 4931 (4.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Nenhuma das opções acima funcionou, então tentei variações diferentes. Também encontrei um comando que me sugeriram usar que não pareceu ajudar, mas tentei mesmo assim.
sysctl -w net.ipv4.conf.eth0.route_localnet=1