Pular para o conteúdo

Target TTL do Iptables: Contornando bloqueios de compartilhamento

Dica publicada em Linux / Introdução
Carlos Affonso Henriques. capitainkurn
Hits: 11.613 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Target TTL do Iptables: Contornando bloqueios de compartilhamento

Algum tempo atrás postei aqui o artigo Impedindo o compartilhamento de conexão. Pois bem! Agora vou falar sobre o alvo ou target TTL do Iptables, que permite o caminho inverso, ou seja, contornar um bloqueio de compartilhamento por ttl.

Definição

Cada vez que um pacote atravessa um roteador ele "perde", por assim dizer, um ponto de seu TTL de origem, isto foi implementado no TCP/IP com a finalidade de impedir que pacotes ficasses vagando na internet de um roteador a outro indefinidamente.

A manipulação de TTL tem inúmeras aplicações além de contornar eventuais bloqueios, pode-se por exemplo restringir o acesso de uma rede corporativa desta maneira. Imagine uma VPN entre matriz e filial por exemplo, pode-se restringir a capacidade de envio de pacotes para fora da VPN, ou mesmo estabelecer bloqueios muito eficientes. Emfim, em GNU/Linux os limites são a inventividade do administrador ou desenvolvedor.

O target TTL e suas sintaxes

Os chains que permitem ser direcionados para o target TTL são PREROUTING, POSTROUTING e FORWARD.

Pela documentação do Iptables reza que no chain PREROUTING pode-se especificar qual interface de rede em que se deseja que o alvo seja aplicado, porém em meus experimentos práticos constatei que este recurso funciona para pacotes que saem de uma determinada interface de rede (-o ethX) nos chains POSTROUTING e FORWARD.

No chain PREROUTING não é possível especificar uma interface de rede. Em meu caso estou usando o Iptables 1.4.0 sob Kernel 2.6.25.4 e não testei a solução em versões mais recentes do Kernel que nesta data 23/11/2008 encontra-se na versão 2.6.27.7.

O target TTL possui três parâmetros:
  • --ttl-set n - Onde n é um valor de TTL que será arbitrado entre 0 e 255;
  • --ttl-inc n - Onde n é um valor de TTL que será incrementado entre 1 e 254, embora possa ser incrementado até 255 não há sentido nisso, pois o TCP/IP suporta um ttl máximo de 255;
  • --ttl-dec n - Onde n é um valor de TTL que será decrementado entre 1 e 255.

A sintaxe:

# iptables -t mangle -A PREROUTING -j TTL --ttl-dec 40

Notem o que eu mencionei acima sobre especificar interfaces de rede no chain PREROUTING.

# iptables -t mangle -A FORWARD -o eth0 -j TTL --ttl-set 128

No chain FORWARD apenas podem ser especificadas interfaces de saída. Uma coisa muito interessante sobre aplicar o target TTL no chain FORWARD é que ele não faz decréscimo de um ponto no TTL quando um pacote oriundo da rede interna o atravessa.

# iptables -t mangle -A POSTROUTING -d 192.168.7.115 -j TTL --ttl-dec 30

A regra acima decrementa 30 hops do ttl do host 192.168.7.115. A target TTL só faz manipulação de ttl em hosts ou redes no chain POSTROUTING. sempre -d para redes locais e -s para redes remotas. Observem no exemplo seguinte.

# iptables -t mangle -A POSTROUTING -s 200.221.2.45 -j TTL --ttl-dec 30

A regra acima decrementa 30 hops do ttl do host 200.221.2.45.

Espero ter ajudado!

Bom trabalho a todos.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Alterando o editor do crontab

Obtendo o Dockerfile a partir de uma imagem

Atualizando a BIOS de máquinas virtuais baseadas em KVM/QEMU

[RESOLVIDO] Slackware 13.1.x sob CentOS/KVM não reconhece interface de rede

Conhecendo o printf

Man pages em formatos de arquivos digitais

Compilando o Mono para atualização da versão 2.4

Quebrar senha de root do MySQL

Mozilla Aurora - Instalação no Ubuntu com apenas três comandos

Adobe Reader - Instalação do leitor de PDF mais famoso do mundo

#1 Comentário enviado por idfelipe em 02/12/2008 - 01:53h
Muito Bom...
Thanks!

Contribuir com comentário

Entre na sua conta para comentar.