AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1169813
Accepted
jurijus01
jurijus01
Asked: 2025-01-06 06:16:36 +0800 CST2025-01-06 06:16:36 +0800 CST 2025-01-06 06:16:36 +0800 CST

ipTables bloqueando tráfego da porta 25 do IPv4 apesar de permitir IPv6. Pode ser corrigido?

  • 772

Solução de problemas de conectividade IPv4 limitada na porta 25.

Tenha regras ipTables:

  Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  185.121.228.0/24     anywhere            
ACCEPT     all  --  127.0.0.0/24         anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp

Uma vez que a política de ENTRADA padrão é ACEITAR,

root@mail:/home/ubuntu# echo “HELO” | nc -4 smtp.google.com 25
220 mx.google.com ESMTP ffacd0b85a97d-38a1c8bb5f7si23003263f8f.375 - gsmtp
502-5.5.1 Unrecognized command. For more information, go to
502 5.5.1  https://support.google.com/a/answer/3221692 ffacd0b85a97d-38a1c8bb5f7si23003263f8f.375 - gsmtp

Quando a política de ENTRADA padrão é DROP, o mesmo comando trava indefinidamente.

Agora, a parte mais interessante é que a mudança na política de INPUT não tem efeito sobre

root@mail:/home/ubuntu# echo “HELO” | nc -6 smtp.google.com 25

que está recebendo resposta do Google de qualquer maneira.

É preciso que o servidor de e-mail envie e-mails para todos os outros servidores de e-mail, não apenas para aqueles compatíveis com IPv6.

Se alguém pudesse explicar o que está acontecendo, seria fantástico!

Atualizado: a impressão do ip-save é:

:INPUT DROP [41791:1739301]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6390374:3802889072]
-A INPUT -i ens3 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 127.0.0.0/24 -i lo -j ACCEPT
-A INPUT -s 185.121.228.0/24 -i ens3 -j ACCEPT
COMMIT
iptables
  • 1 1 respostas
  • 53 Views

1 respostas

  • Voted
  1. Best Answer
    Nikita Kipriyanov
    2025-01-07T02:39:40+08:002025-01-07T02:39:40+08:00

    A maneira como você filtra a entrada obstrui sua saída também. Isso porque qualquer conexão "de saída", de fato, requer replies , pacotes de retorno, que não são permitidos atualmente em seu firewall.

    Pense em como a conexão de saída funciona, digamos TCP: sua máquina envia SYN, então ela precisa receber SYN e ACK (que serão processados ​​na cadeia INPUT), enviar seu próprio ACK, e assim por diante, por exemplo, enquanto a conexão é iniciada de dentro, o tráfego sempre flui em ambas as direções. Seu firewall não tem nenhuma regra na cadeia INPUT para reconhecer e permitir esse SYN e ACK, então ele é processado de acordo com a política, por exemplo, descartado, e a conexão de saída não pode prosseguir.

    Para alguns casos, o firewall simples sem estado que não considera que alguns pacotes são respostas para outros é o suficiente. É quando você pode criar o conjunto de regras que cobre todo o tráfego de ida e volta. Mas para a grande maioria dos casos você não pode, e é por isso que temos que introduzir um conceito de conexões no firewall (para tudo, incluindo UDP aparentemente sem conexão, ICMP e assim por diante) e distinguir pacotes que se relacionam a alguma conexão ativa.

    Resumindo, o Linux tem um módulo rastreador de conexão que faz isso, comumente conhecido como conntrack, e sua interface iptables tem algumas correspondências e alvos na sintaxe do conjunto de regras. Além disso, todo o recurso NAT do Linux é baseado no conntrack.

    Em um típico conjunto de regras de firewall stateful, uma das primeiras regras é a que usa conntrack para permitir pacotes de todas as conexões estabelecidas atualmente ou novas conexões relacionadas a conexões já estabelecidas. Ela pode ser adicionada assim:

    iptables -t filter -I INPUT 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    

    E sua conexão de saída começará a funcionar magicamente mesmo quando a política de ENTRADA for DROP.

    Havia uma forma mais antiga dessa regra, que usava o statemódulo obsoleto, -m state --state RELATED,ESTABLISHED. Estou lhe contando isso caso você a encontre em algum tutorial antigo online; apenas saiba o que é, mas não a use. Não há tal módulo em kernels recentes, mas essa forma antiga ainda funcionaria, sendo silenciosamente traduzida para o conntrackmódulo, então é melhor apenas usá-la explicitamente. -I INPUT 1significa "inserir na frente" (ser o primeiro).

    Uma pequena ressalva, se você já estabeleceu uma conexão e quer se livrar dela, você não precisa apenas adicionar uma regra abaixo dela; você também precisa quebrar a conexão ativa real para que o rastreador de conexão pare de reconhecê-la e permiti-la. Com TCP, geralmente não é um grande problema, mas quando você começa a usar protocolos baseados em UDP, especialmente protocolos complexos como SIP, você encontrará alguns problemas desagradáveis, e você precisa ter um bom entendimento do comportamento do rastreador de conexão para resolvê-los.

    Quanto ao IPv6, suspeito que você não tenha nenhum firewall para ele. É uma coisa separada, configuração usando ip6tables, pode ser visualizada com ip6tables-savee tem o mesmo conntrackmódulo.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve