Где я сейчас живу, подключение к интернету (проводное) показывает следующие странные симптомы. Кажется, они не зависят от того, использую ли я имена хостов или IP-адреса.
- Пинг работает
- Скайп работает
- Wget подключается, но никогда не получает ответ. (Продолжает ждать на «HTTP-запрос отправлен, ожидая ответа» до истечения времени ожидания.)
- За исключением небольшого подмножества доменов, для которых это работает.
- SSH команды (
ssh host ls
) работает. - Интерактивный ssh работает ненадолго, но быстро зависает, например, во время первого
ls
- каждый раз в одной и той же точке. - Под виндой все работает нормально.
Что я могу сделать, чтобы диагностировать это дальше? Пока что я просто смотрю на прикладной уровень. Поскольку существует очевидное подключение к Интернету, должен быть какой-то способ туннелирования Firefox, но я хотел бы сначала определить проблему.
Скорее всего, это связано с большими пакетами, не проходящими через них. Я обнаружил, что есть MTU, но установка его для eth0 не решает мою проблему. Я думаю, что я за PPPOE и маршрутизатор. Внешние IP-адреса одинаковы в Windows и Linux.
Вывод некоторых команд:
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
Я могу отправить пинг до размера 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
утверждает, что MTU действительно установлен правильно.Ответы:
Тим, я с уважением призываю вас игнорировать ваши сомнения по поводу изменения MTU. В вашей проблеме написана проблема MTU, и я работаю профессиональным сетевым инженером более 15 лет.
Чтобы доказать, помогает ли MTU, проведите тесты с вашей машины linux, используя ping с
DF
битом, установленным в заголовке IP ...Я рассчитал
-s
параметр, предполагая, что ваш MTU IP PPPoE равен 1300 байтов. Если этот эхо-запрос завершается успешно, используйте-s 1472
и наблюдайте за тем, что происходит ... если эхо-тестирование не выполняется, у вас есть убедительное доказательство наличия проблемы MTU (при условии, что вы не установили MTU для Ethernet-соединения ниже). К вашему сведению,-s 1472
отправит 1500-байтовый эхо-запрос ethernet-payload;-M do -s 1472
отправляет ту же самую 1500-байтовую полезную нагрузку с битом DF, установленным в заголовке IP.Также помните, что MTU должен быть установлен на обеих сторонах ссылки ... так что вам нужно будет сделать это и на вашем модеме.
РЕДАКТИРОВАТЬ
Тим, ты все еще не выполнил команды, о которых я тебя просил . Позвольте мне привести пример того, что не так с тем, что вы сделали (мне нужно изменить хост назначения на stackexchange.com, из-за брандмауэра для фрагментации IP на моем пути к 8.8.8.8)
Отрицательный пример (используя ваши флаги пинга)
Риторический вопрос: как пакет ping размером 64 КБ прошел через 1500-байтовый сегмент Ethernet? (см. примечание A к концу). Я не смогу помочь, если вы не разместите информацию, которую я запрашиваю. Это тот же пример, с
ping -M do
Положительный пример
ping -M do
предоставляет информацию о максимальном MTU вдоль пути (в этом случае мы знаем, что сегмент Ethernet первого скачка имеетIP MTU
1500 байт).Конечные заметки:
О. Ваши эхо-запросы могут быть завершены в виде последовательности фрагментов IP-адресов, поскольку по умолчанию
ping
допускается фрагментация IP-адресов. Если вы пытаетесь найти максимальный размер пакета, который будет проходить через ссылку, вы должны изменить заголовок IP (который я иллюстрировал-M do
), чтобы гарантировать, что вы не получите кучу фрагментированных ответов, сшитых вместе в конце. Использованиеping -c 1 -s 65507 64.34.119.12
:источник
ifconfig eth0 mtu 1232
я думаю), это не меняет проблему. Установка MTU намного ниже, чем предел, тоже нет. Я не осознавал, что должен был установить MTU для другой стороны ссылки - как Windows 7, которая, кажется, автоматически настраивает свой MTU, делает это?ifconfig eth0 mtu 1500
размер пинга, по-видимому, ограничен 1468, что с заголовками очень близко к 1500.