Come diagnosticare una connessione affidabile e inaffidabile?


9

Dove sto vivendo ora, la connessione Internet (cablata) mostra i seguenti strani sintomi. Sembrano essere indipendenti dal fatto che io usi nomi host o indirizzi IP.

  • Il ping funziona
  • Skype funziona
  • Wget si connette, ma non riceve mai una risposta. (Continua ad attendere "Richiesta HTTP inviata, in attesa di risposta" fino al timeout.)
    • Tranne un piccolo sottoinsieme di domini, per i quali funziona.
  • I comandi ssh ( ssh host ls) funzionano.
  • Interactive ssh funziona per un breve periodo, ma si blocca rapidamente, ad esempio durante il primo ls, sempre nello stesso punto.
  • Sotto Windows, tutto funziona bene.

Cosa posso fare per diagnosticare ulteriormente questo? Finora ho appena guardato il livello dell'applicazione. Poiché esiste una connessione Internet apparente, deve esserci un modo per eseguire il tunneling di Firefox, ma vorrei prima individuare il problema.

È molto probabilmente correlato a pacchetti di grandi dimensioni che non si fanno strada. Ho scoperto che esiste un MTU, ma impostarlo su eth0 non risolve il mio problema. Penso di essere dietro PPPOE e un router. Gli IP esterni sono gli stessi su Windows e Linux.

Uscita di alcuni comandi:

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 inviare ping fino alla dimensione 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 

6
Sento un problema di MTU . Leggi la mia risposta lì per vedere una spiegazione. Se hai bisogno di aiuto per risolvere il problema, dovrai fornire ulteriori informazioni sulla configurazione.
Gilles 'SO- smetti di essere malvagio' l'

@Gilles: ho provato a seguire questi passaggi, anche impostando un MTU molto più basso del necessario, ma non sembra risolvere il problema. ifconfigafferma che l'MTU è stato impostato correttamente.

@Tim: Quindi è necessario descrivere la configurazione della rete. Quale sistema operativo stai eseguendo? Come viene configurata la rete sul tuo computer (configurazione statica, Network Manager, ...)? Ci sono altri dispositivi (router?) Sotto il tuo controllo tra te e il tuo ISP? Con quale metodo ti connetti al tuo ISP? E come è andata la misura del ping?
Gilles 'SO- smetti di essere malvagio' il

@Tim, hai risolto questo problema?
Mike Pennington,

1
@Mike: il problema non è solo con HTTP. Esiste un limite massimo per le dimensioni del file per SCP, le sessioni SSH smettono di funzionare se ottengo un output eccessivo e i ping con un calo eccessivo.

Risposte:


8

Tim, ti esorto rispettosamente a ignorare i tuoi dubbi sul cambio di MTU. Il tuo problema ha il problema MTU scritto dappertutto e sono stato un ingegnere di rete professionale per oltre 15 anni.

Per provare se MTU aiuta, esegui test dal tuo computer linux usando ping con il DFbit impostato nell'intestazione IP ...

ping -M do -s 1232 <some pingable internet ip address>

Ho calcolato il -sparametro supponendo che la MTU IP PPPoE sia di 1300 byte. Se quel ping ha successo, allora usa -s 1472e guarda cosa succede ... se il ping ora fallisce, hai una prova conclusiva che c'è un problema MTU (supponendo che tu non abbia impostato il tuo MTU di collegamento Ethernet inferiore). Cordiali saluti, -s 1472invierà una richiesta di eco del payload ethernet a 1500 byte; -M do -s 1472invia lo stesso payload di 1500 byte con il bit DF impostato nell'intestazione IP.

Ricorda inoltre che MTU deve essere impostato su entrambi i lati del collegamento ... quindi dovresti farlo anche sul tuo modem.

MODIFICARE

Tim, non hai ancora eseguito i comandi che ti ho chiesto . Lascia che ti dia un esempio di cosa non va in quello che hai fatto (ho bisogno di modificare l'host di destinazione in stackexchange.com, a causa del firewalling per la frammentazione IP nel mio percorso in 8.8.8.8)

Esempio negativo (utilizzando i flag di ping)

[mpenning@Bucksnort ~]$ ping -c 1 -s 65507 64.34.119.12
PING 64.34.119.12 (64.34.119.12) 65507(65535) bytes of data.
65515 bytes from 64.34.119.12: icmp_seq=1 ttl=51 time=53.2 ms

--- 64.34.119.12 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 53.246/53.246/53.246/0.000 ms
[mpenning@Bucksnort ~]$

Domanda retorica: come ha fatto un pacchetto di ping da 64 KB a superare un segmento Ethernet a 1500 byte? (vedi nota finale A) Non posso fare a meno che non pubblichi le informazioni che sto chiedendo. Questo è lo stesso esempio, conping -M do

Esempio positivo

[mpenning@Bucksnort ~]$ ping -M do -c 1 -s 65507 64.34.119.12
PING 64.34.119.12 (64.34.119.12) 65507(65535) bytes of data.
From 24.102.60.3 icmp_seq=1 Frag needed and DF set (mtu = 1500)

--- 64.34.119.12 ping statistics ---
0 packets transmitted, 0 received, +1 errors

[mpenning@Bucksnort ~]$

ping -M dofornisce informazioni sulla MTU massima lungo il percorso (in questo caso, sappiamo che il segmento ethernet del primo hop ha un valore IP MTUdi 1500 byte).

Note finali:

R. I ping possono essere completati come una serie di frammenti IP, perché per impostazione predefinita pingconsente la frammentazione IP. Se stai cercando di trovare la dimensione massima del pacchetto che passerà attraverso un collegamento, devi modificare l'intestazione IP (che ho illustrato con -M do) per assicurarti di non ottenere un insieme di risposte frammentate unite alla fine. Utilizzando ping -c 1 -s 65507 64.34.119.12:

[mpenning@Bucksnort ~]$ sudo tshark -n -i eth0 icmp
  1   0.000000 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=0)
  2   0.000058 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=1480)
  3   0.000071 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=2960)
  4   0.000081 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=4440)
  5   0.000094 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=5920)
  6   0.000105 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=7400)
  7   0.000116 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=8880)
  8   0.000124 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=10360)
  9   0.000133 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=11840)
 10   0.000143 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=13320)
 11   0.000152 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=14800)
 12   0.000162 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=16280)
 13   0.000172 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=17760)
 14   0.000181 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=19240)
 15   0.000191 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=20720)
 16   0.000201 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=22200)
 17   0.000211 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=23680)
 18   0.000221 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=25160)
 19   0.000230 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=26640)
 20   0.000240 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=28120)
 21   0.000250 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=29600)
 22   0.000259 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=31080)
 23   0.000269 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=32560)
 24   0.000278 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=34040)
 25   0.000288 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=35520)
 26   0.000298 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=37000)
 27   0.000308 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=38480)
 28   0.000318 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=39960)
 29   0.000327 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=41440)
 30   0.000337 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=42920)
 31   0.000352 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=44400)
 32   0.000361 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=45880)
 33   0.000372 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=47360)
 34   0.000384 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=48840)
 35   0.000394 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=50320)
 36   0.000403 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=51800)
 37   0.000411 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=53280)
 38   0.000419 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=54760)
 39   0.000428 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=56240)
 40   0.000437 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=57720)
 41   0.000446 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=59200)
 42   0.000455 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=60680)
 43   0.000466 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=62160)
 44   0.000477 24.102.60.3 -> 64.34.119.12 IP Fragmented IP protocol (proto=ICMP 0x01, off=63640)
 45   0.000486 24.102.60.3 -> 64.34.119.12 ICMP Echo (ping) request
 46   0.044402 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=0)
 47   0.044439 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=1480)
 48   0.044899 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=2960)
 49   0.044910 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=4440)
 50   0.044916 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=5920)
 51   0.045149 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=7400)
 52   0.045399 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=8880)
 53   0.045409 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=10360)
 54   0.045415 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=11840)
 55   0.045649 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=13320)
 56   0.045899 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=14800)
 57   0.045908 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=16280)
 58   0.045915 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=17760)
 59   0.046148 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=19240)
 60   0.046163 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=20720)
 61   0.046402 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=22200)
 62   0.046421 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=23680)
 63   0.046650 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=25160)
 64   0.046668 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=26640)
 65   0.046901 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=28120)
 66   0.046918 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=29600)
 67   0.047151 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=31080)
 68   0.047171 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=32560)
 69   0.047399 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=34040)
 70   0.047418 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=35520)
 71   0.047424 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=37000)
 72   0.047650 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=38480)
 73   0.047900 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=39960)
 74   0.048149 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=41440)
 75   0.048165 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=42920)
 76   0.048172 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=44400)
 77   0.048178 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=45880)
 78   0.048398 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=47360)
 79   0.048650 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=48840)
 80   0.048667 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=50320)
 81   0.048674 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=51800)
 82   0.048900 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=53280)
 83   0.048922 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=54760)
 84   0.049150 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=56240)
 85   0.049174 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=57720)
 86   0.049398 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=59200)
 87   0.049649 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=60680)
 88   0.049671 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=62160)
 89   0.049677 64.34.119.12 -> 24.102.60.3 IP Fragmented IP protocol (proto=ICMP 0x01, off=63640)
 90   0.049683 64.34.119.12 -> 24.102.60.3 ICMP Echo (ping) reply

Sono completamente d'accordo con te che c'è qualche problema MTU. Quello che ho fatto è testare ping di dimensioni diverse per trovare esattamente il limite. Tuttavia, quando imposto l'MTU per eth0 ( ifconfig eth0 mtu 1232, credo), non cambia il problema. Anche l'impostazione di un MTU molto più basso del limite. Non mi rendevo conto che dovevo impostare l'MTU per l'altro lato del collegamento: come fa Windows 7, che sembra sintonizzare automaticamente l'MTU?

1
@Tim, non posso ancora rispondere alla tua domanda su Windows 7 ... ci sono alcune possibilità ... 1) impostarlo da un tecnico isp o dal software isp. 2) Differenze nel modo in cui gestiscono Path MTU Discovery ... potrebbero esserci altre dinamiche in gioco, ma otteniamo l'output dei ping e scopriamo dove andare da lì
Mike Pennington,

Certo, lo prenderò stasera.

@Tim, per favore modifica con i risultati dei tuoi ping se sei ancora interessato al debugging.
Mike Pennington,

@ Mike: Certamente. Ho aggiunto l'output. Windows e Linux hanno lo stesso IP. Ho scoperto che l'MTU che ho menzionato in precedenza è stato causato dalla mia impostazione dell'MTU per eth0! Con ifconfig eth0 mtu 1500, la dimensione del ping sembra limitata al 1468, che, con le intestazioni, è molto vicino al 1500.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.