Onde estou morando agora, a conexão à Internet (com fio) mostra os seguintes sintomas estranhos. Eles parecem ser independentes de eu usar nomes de host ou endereços IP.
- Trabalhos de ping
- O Skype funciona
- O Wget se conecta, mas nunca recebe uma resposta. (Continua aguardando "Solicitação HTTP enviada, aguardando resposta" até o tempo limite.)
- Exceto por um pequeno subconjunto de domínios, para o qual ele trabalha.
- Os comandos ssh (
ssh host ls
) funcionam. - O ssh interativo funciona por um curto período de tempo, mas trava rapidamente, por exemplo, durante o primeiro
ls
- no mesmo ponto todas as vezes. - No Windows, tudo funciona bem.
O que posso fazer para diagnosticar isso ainda mais? Até agora, eu apenas estive olhando a camada do aplicativo. Como existe uma aparente conexão com a Internet, deve haver uma maneira de encapsular o Firefox, mas eu gostaria de identificar o problema primeiro.
É muito provável que esteja relacionado a pacotes grandes que não estão passando. Descobri que existe uma MTU, mas defini-la como eth0 não resolve o meu problema. Eu acho que estou por trás do PPPOE e de um roteador. Os IPs externos são os mesmos no Windows e Linux.
Saída de alguns comandos:
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1024 qdisc mq state UP qlen 1000
link/ether 00:26:aa:aa:aa:61 brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether c4:17:aa:aa:aa:ff brd ff:ff:ff:ff:ff:ff
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 5e:49:aa:aa:aa:27 brd ff:ff:ff:ff:ff:ff
ip route show
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.4 metric 1
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
169.254.0.0/16 dev eth0 scope link metric 1000
default via 192.168.1.1 dev eth0 proto static
ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1024 qdisc mq state UP qlen 1000
link/ether 00:26:2d:78:ac:61 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether c4:17:fe:3b:56:ff brd ff:ff:ff:ff:ff:ff
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 5e:49:01:03:55:27 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
inet6 fe80::5c49:1ff:fe03:5527/64 scope link
valid_lft forever preferred_lft forever
Posso enviar pings até o tamanho 1468.
tim@milagros:/$ ping -M do -c 1 -s 1470 stackexchange.com
PING stackexchange.com (64.34.119.12) 1470(1498) bytes of data.
--- stackexchange.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
tim@milagros:/$ ping -M do -c 1 -s 1468 stackexchange.com
PING stackexchange.com (64.34.119.12) 1468(1496) bytes of data.
1476 bytes from stackoverflow.com (64.34.119.12): icmp_seq=1 ttl=52 time=176 ms
--- stackexchange.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 176.539/176.539/176.539/0.000 ms
tim@milagros:~/projekt/perl$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:26:2d:78:ac:61
inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:161 errors:0 dropped:0 overruns:0 frame:0
TX packets:194 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:143947 (143.9 KB) TX bytes:67727 (67.7 KB)
Interrupt:16
ifconfig
alega que o MTU está realmente configurado corretamente.Respostas:
Tim, peço-lhe respeitosamente que ignore suas dúvidas sobre a alteração do MTU. Seu problema tem um problema de MTU escrito e eu sou um engenheiro de rede profissional há mais de 15 anos.
Para provar se o MTU ajuda, faça testes em sua máquina Linux usando ping com o
DF
bit definido no cabeçalho IP ...Calculei o
-s
parâmetro assumindo que seu PPPoE IP MTU é de 1300 bytes. Se esse ping for bem-sucedido, use-s 1472
e observe o que acontece ... se o ping falhar agora, você tem uma prova conclusiva de que há um problema na MTU (supondo que você não tenha definido o MTU do link Ethernet mais baixo). Para sua informação,-s 1472
enviará uma solicitação de eco de carga Ethernet de 1500 bytes;-M do -s 1472
envia a mesma carga útil de 1500 bytes com o bit DF definido no cabeçalho IP.Lembre-se também de que o MTU deve ser definido nos dois lados do link ... então você também precisará fazer isso no seu modem.
EDITAR
Tim, você ainda não executou os comandos que lhe pedi . Deixe-me dar um exemplo do que há de errado com o que você fez (preciso modificar o host de destino para stackexchange.com, devido ao firewall para fragmentação de IP no meu caminho para 8.8.8.8)
Exemplo negativo (usando seus sinalizadores de ping)
Pergunta retórica: como um pacote de ping de 64 KB passou por um segmento Ethernet de 1500 bytes? (consulte a Nota final A) Não posso ajudar, a menos que você publique as informações que estou solicitando. Este é o mesmo exemplo, com
ping -M do
Exemplo positivo
ping -M do
fornece informações sobre o MTU máximo ao longo do caminho (neste caso, sabemos que o segmento Ethernet do primeiro salto possui umIP MTU
de 1500 bytes).Notas finais:
R. Seus pings podem ser concluídos como uma série de fragmentos de IP, porque por padrão
ping
permite a fragmentação de IP. Se você está tentando encontrar o tamanho máximo de pacote que passará por um link, modifique o cabeçalho IP (com o qual ilustrei-M do
) para garantir que não obtenha um monte de respostas fragmentadas agrupadas no final. Usandoping -c 1 -s 65507 64.34.119.12
:fonte
ifconfig eth0 mtu 1232
, acho), isso não muda o problema. Definir uma MTU muito abaixo do limite também não. Eu não sabia que tinha que definir o MTU para o outro lado do link - como o Windows 7, que parece ajustar automaticamente seu MTU, faz isso?ifconfig eth0 mtu 1500
, o tamanho de ping parece tampado em 1468, que, com os cabeçalhos, está muito perto de 1500.