O que é o MASQUERADE no contexto de iptables?

42

Em iptablesmuitas vezes eu ver o alvo MASQUERADE . O que é isso? Eu procurei e encontrei muitas coisas. Mas preciso que alguém me explique o que é o MASQUERADE de uma maneira fácil de entender?

Um exemplo (retirado desta resposta ) é:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Mohammad Reza Rezwani
fonte

Respostas:

33

É um algoritmo dependente da implementação do iptables que permite rotear o tráfego sem interromper o tráfego original.

Eu uso o algoritmo de disfarce quando quero criar um adaptador wifi virtual e compartilhar meu wifi.

Não estou falando sobre o compartilhamento da conexão Ethernet através do seu wifi, estou falando sobre o compartilhamento da conexão wifi através do seu wifi, mascarando-o em um adaptador virtual. Com efeito, isso permite que você compartilhe sua conexão Wi-Fi através de Wi-Fi.

.

.

Leia isso e role para baixo até MASQUERADE: http://billauer.co.il/ipmasq-html.html

Leia isso para mais detalhes: http://oreilly.com/openbook/linag2/book/ch11.html

Todas essas perguntas sobre o "Connectify for linux" podem ser resolvidas com a implementação do algo MASQUERADE.

Para um exemplo direto, visite esta página: http://pritambaral.com/2012/05/connectify-for-linux-wireless-hotspot/

EU NÃO LEU O ÚLTIMO LINK !!!! Mas o seguinte é um trecho / exemplo preciso.

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -A FORWARD -i wlan0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Eu realmente não gosto de como os mecanismos de pesquisa tornam o algoritmo um tipo maligno de invasão. Eu o uso apenas para compartilhar minha internet com meus telefones Android.

EDIÇÃO FINAL: este link é o melhor http://gsp.com/cgi-bin/man.cgi?section=3&topic=libalias

Usuário banido
fonte
como o seu primeiro link que foi --exactly-- o que eu estou procurando :)
Mohammad Reza Rezwani
Testei a MASUERADEregra (a terceira linha na sua listagem de códigos) e o link é exatamente compartilhado e disponível nas interfaces. Portanto, estou frustrado para o que é a FORWARDregra? (a regra na segunda linha da sua listagem de códigos)
千 木 郷
34

MASQUERADE é um destino de tabelas de ip que pode ser usado em vez do destino SNAT (NAT de origem) quando o ip externo da interface inet não é conhecido no momento em que a regra é escrita (quando o servidor obtém o ip externo dinamicamente).

Sergey P. tcp azure
fonte
O que deve ser usado quando o endereço IP é conhecido?
Luc
4
@Luc, destino SNAT (tradução de endereço de rede de origem) com definição de IP de origem que deve ser colocado em vez do IP de origem original no pacote IP do host original. Assim, -j SNAT --to-source xx.xx.xx.xxonde xx.xx.xx.xx é o ip externo da interface desejada. E não posso dizer que deva ser usado quando o IP externo for conhecido. Eu preferiria usar o MASQUERADE em vez do SNAT para tornar as regras flexíveis e não vinculadas ao ip externo específico que eu tenho no momento.
Sergey P. tcp azure
7

O IP Masquerade também é conhecido como Conversão de Endereço de Rede (NAT) e Compartilhamento de Conexão de Rede, alguns outros sistemas operacionais populares. É basicamente um método para permitir que um computador que não tenha um endereço IP público na Internet se comunique com outros computadores na Internet com a ajuda de outro computador sentado entre ele e a Internet.

Como você sabe, o endereço IP é usado na Internet para identificar máquinas. Dado um pacote com um endereço IP, todo roteador que compõe a Internet sabe para onde enviá-lo e levá-lo ao seu destino. Agora, também existem alguns intervalos de endereços IP que foram reservados para uso privado nas Redes Locais e outras redes que não estão diretamente conectadas à Internet. Esses endereços privados são garantidos para não serem usados ​​na Internet pública.

Isso causa problemas para as máquinas conectadas a redes privadas usarem endereços IP privados, porque não podem ser conectados diretamente à Internet. Eles não têm um endereço IP que pode ser usado na Internet pública. O IP Masquerade resolve esse problema, permitindo que uma máquina com um endereço IP privado se comunique com a Internet, enquanto modifica os pacotes da máquina para usar um endereço IP público válido em vez do endereço IP privado original. Os pacotes retornados da Internet são modificados novamente para usar o endereço IP original antes de chegar à máquina IP privada.

Observe que isso não está limitado à mascarada de rede da Internet / NAT pode ser usado para rotear o tráfego de uma rede para outra, digamos 10.0.0.0/24 e 192.168.0.0/24

A regra de mascarada de iptables pode ser substituída pela regra de SNAT

iptables -t nat -A POSTROUTING -o eth2 -s 10.0.0.0/24  -j MASQUERADE

=

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth2 -j SNAT --to-source 192.168.1.2
# supposing eth2 assigned ip is 192.168.1.2

Tanto o disfarce quanto o snat requerem o ip_forward ativado no nível do kernel com eco "1" > /proc/sys/net/ipv4/ip_forwardou permanentemente, editando o arquivo de configurações nano /etc/sysctl.conf.

O IP Forward faz a máquina agir como um roteador, redirecionando / encaminhando pacotes de toda a interface ativa logicamente pela rede de destino (local / net / other / etc) ou seguindo a tabela de rotas. Observe que ativar o ip_forward pode apresentar um risco de segurança importante; se o ip_forward não puder ser evitado, ele deverá ser supervisionado / protegido por regras adicionais de iptables / route.

intika
fonte