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 / unix / Perguntas / 410995
Accepted
Frio
Frio
Asked: 2017-12-15 23:11:52 +0800 CST2017-12-15 23:11:52 +0800 CST 2017-12-15 23:11:52 +0800 CST

Uma pequena dúvida sobre MASQUERADE e SNAT/DNAT

  • 772

Eu sei o que significa SNAT e DNAT. E eu sei que quando quero configurar um serviço aberto de servidor de rede local para internet, devo usar:

  • SNAT para ajudar a mudar os pacotes vindos do servidor de rede local para o endereço do roteador.
  • DNAT para ajudar a mudar os pacotes vindos da internet para o ip de rede local do servidor

Mas quando compartilhamos rede usando MASQUERADE, não precisamos configurar o DNAT para esses pacotes vindos da internet. Alguns artigos dizem que o MASQUERADE é o mesmo que o SNAT, exceto pelo ip externo do roteador. Mas por que o MASQUERADE não precisa da configuração do DNAT? E suponha que o MASUQERADE possa fazer isso por nós, por que o iptables não define automaticamente o SNAT para nós quando configuramos o DNAT?

Editar

Eu só tenho uma nova pergunta. Suponha que dois usuários na rede local naveguem na mesma página da Web e as portas dos clientes que eles abriram sejam as mesmas. Quando a resposta do servidor de páginas da web empacota para o roteador, como o roteador sabe que os pacotes pertencem a qual usuário?

iptables
  • 1 1 respostas
  • 5035 Views

1 respostas

  • Voted
  1. Best Answer
    dirkt
    2017-12-15T23:43:16+08:002017-12-15T23:43:16+08:00

    Tanto o SNAT quanto o DNAT fazem tradução de endereços para pacotes de entrada e saída, usando o recurso de rastreamento de conexão ( conntrack) do kernel. Portanto, se o kernel detectar que um pacote na direção reversa pertence a uma conexão NATed, ele fará a tradução reversa automaticamente, sem uma regra especial para isso.

    É por isso que, por exemplo, uma única regra SNAT é suficiente (embora não faça mal se você tiver uma regra DNAT para a outra direção).

    E sim, MASQUERADE é basicamente SNAT com o endereço retirado da interface. Para citar man iptables-extensions:

    O mascaramento é equivalente a especificar um mapeamento para o endereço IP da interface da qual o pacote está saindo, mas também tem o efeito de que as conexões são esquecidas quando a interface fica inativa.

    Aliás, acho mais simples lembrar que SNAT = Source NAT (altera o endereço de origem do pacote), e DNAT = Destination NAT (altera o endereço de destino do pacote).

    Editar

    (Normalmente, você deve fazer novas perguntas como uma pergunta separada).

    netstatmostra apenas conexões entre aplicativos em execução no computador local e outros hosts. Ele não mostra o rastreamento de conexão do kernel, você pode encontrar informações sobre isso em /proc(por exemplo /proc/net/nf_conntrack) ou com utilitários adicionais do conntrackpacote.

    A camada de rede não sabe nada sobre "usuários". Uma conexão consiste no endereço de origem, na porta de origem, no endereço de destino e na porta de destino. Isso é tudo o que a camada de rede conhece. Ele faz NAT (Network Address Translation) substituindo o endereço de origem/destino e também substituindo o número da porta de destino/origem (ou seja, local) por algum outro número se essa porta já estiver em uso.

    Portanto, dois usuários em hosts diferentes com portas idênticas (em suas máquinas) que não são NATed obterão portas diferentes no host NATing. Dois usuários na mesma máquina sempre usarão portas locais diferentes em primeiro lugar, então isso nunca é um problema. O mesmo se um usuário abrir duas conexões ao mesmo tempo.

    • 7

relate perguntas

  • iptables não filtra tráfego em ponte

  • iptables persistentes

  • Regras do Iptables para permitir que o appVM passe pelo proxyVM configurado para passar apenas por uma VPN no QubesOS

  • Como fazer todo o tráfego passar por uma interface no Linux

Sidebar

Stats

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

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk 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