Re: [resolvido: Problema com MSS] Velox: duas placas de rede e compartilhamento
No dia 19/05/2005 às 14:56,
"Douglas A. Augusto" <douglas.augusto@pop.com.br> escreveu:
> Tenho aqui em casa uma máquina com o Velox instalado (eth1-ppp0) e uma
> pequena rede local (192.168.0.0) através da interface eth0 (endereçada
> como 192.168.0.2), de modo que a máquina com Velox funciona como
> gateway.
>
> A conexão funciona muito bem para a máquina Velox, mas nas máquinas da
> rede curiosamente só consigo "pingar" e acessar via ssh máquinas
> remotas. Não posso por exemplo acessar uma página web, dar 'apt-get
> update', ou coisas afins.
>
> Cheguei a pensar que o vilão seria o firewall, mas isso se repete ao
> deixá-lo desligado (liberado).
>
> Para deixar a história mais esquisita ainda, via web, consigo acessar
> apenas o site do Google. Para os outros sites os nomes são resolvidos,
> e até parece que carregarão, mas pára em: "Aguardando resposta de..."
Mais uma vez, obrigado àqueles que tentaram me ajudar. O problema era
menos trivial, e vou explicar abaixo.
Em um compartilhamento (masquerade), o cabeçalho de pacotes TCP que vêm
das máquinas na rede é acrescido de alguns bytes para identificar que o
pacote é de uma máquina da rede, isto é, aquelas que usam a máquina
conectada à internet como gateway.
O problema é que alguns provedores (onde estão hospedados os sites) não
podem (ou não querem) aceitar um pacote que contenha essas informações
extras, fazendo a conexão literalmente parar. Parece-me que os pacotes
sobe uma conexão ADSL tendem a ser maiores. Segundo minha experiência, o
Google é um dos poucos que lida perfeitamente com esses pacotes
"inchados".
Depois de muito pesquisar, descobri que há uma maneira de limitar o
tamanho "pacotes", restringindo o que é chamado de 'Maximum Segment
Size', ou simplesmente MSS. Isso é feito adicionando-se uma regra
especial no 'iptables', garantindo que os pacotes TCP, oriundos de
máquinas em compartilhamento e com o MSS maior que um valor apropriado,
sejam ajustados para o valor correto --o que sobrar de dados é
"empacotado" em um outro pacote.
A regra que usei foi:
iptables -t mangle -A POSTROUTING -p tcp -m tcp --tcp-flags \
SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu -o ppp0
Apesar de ter descoberto que o problema era no MSS, tive dificuldades
para refinar esta regra, pois muitas referências apontavam algumas
diferenças, como:
- man iptables:
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
- pppoeconf
iptables -o ppp0 --insert FORWARD 1 -p tcp --tcp-flags
SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS
--clamp-mss-to-pmtu
Para mim só funcionou com "-t mangle -A POSTROUTING", me baseando em
"http://www.hgfelger.de/mss/mss-clamp".
--
Douglas Augusto
[Netiqueta]
§ Respostas e comentários devem vir após o texto original ou parágrafo a
parágrafo.
Reply to: