Tam, gdzie teraz mieszkam, połączenie internetowe (przewodowe) pokazuje następujące dziwne objawy. Wydają się być niezależne od tego, czy używam nazw hostów, czy adresów IP.
- Pingowanie działa
- Skype działa
- Wget łączy się, ale nigdy nie otrzymuje odpowiedzi. (Ciągle czeka na „Wysłano żądanie HTTP, oczekuje na odpowiedź” do upływu limitu czasu).
- Z wyjątkiem małego podzbioru domen, dla których działa.
- Polecenia ssh (
ssh host ls
) działają. - Interaktywny ssh działa przez chwilę, ale zawiesza się szybko, np. Podczas pierwszego
ls
- w tym samym momencie za każdym razem. - W systemie Windows wszystko działa dobrze.
Co mogę zrobić, aby dalej to zdiagnozować? Do tej pory patrzyłem tylko na warstwę aplikacji. Ponieważ istnieje pozorne połączenie z Internetem, musi istnieć sposób na tunelowanie Firefoksa, ale najpierw chciałbym ustalić problem.
Jest to bardzo prawdopodobne, że duże pakiety nie przechodzą. Dowiedziałem się, że istnieje MTU, ale ustawienie jej na eth0 nie rozwiązuje mojego problemu. Myślę, że jestem za PPPOE i routerem. Zewnętrzne adresy IP są takie same w systemach Windows i Linux.
Dane wyjściowe niektórych poleceń:
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
Mogę wysłać pingi do rozmiaru 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
twierdzi, że MTU rzeczywiście jest ustawione poprawnie.Odpowiedzi:
Tim, z szacunkiem nalegam, abyś zignorował swoje wątpliwości dotyczące zmiany MTU. W twoim numerze jest napisany problem MTU, a ja jestem profesjonalnym inżynierem sieci od ponad 15 lat.
Aby udowodnić, czy MTU pomaga, przeprowadź testy z komputera z systemem Linux za pomocą polecenia ping z
DF
bitem ustawionym w nagłówku IP ...Obliczyłem
-s
parametr, zakładając, że twoja MTU IP PPPoE ma 1300 bajtów. Jeśli ping się powiedzie, użyj-s 1472
i obserwuj, co się stanie ... jeśli ping się teraz nie powiedzie, masz rozstrzygający dowód na problem z MTU (zakładając, że nie ustawiłeś MTU łącza Ethernet). FYI-s 1472
wyśle 1500-bajtowe żądanie echa z ethernetem;-M do -s 1472
wysyła ten sam 1500-bajtowy ładunek z bitem DF ustawionym w nagłówku IP.Pamiętaj również, że MTU musi być ustawione po obu stronach łącza ... więc musisz to zrobić również na swoim modemie.
EDYTOWAĆ
Tim, nadal nie uruchomiłeś poleceń, o które cię prosiłem . Pozwól, że dam ci przykład tego, co jest nie tak z tym, co zrobiłeś (muszę zmodyfikować host docelowy na stackexchange.com, ze względu na zaporę ogniową dla fragmentacji IP na mojej ścieżce do 8.8.8.8)
Przykład negatywny (użycie flag ping)
Retoryczne pytanie: w jaki sposób pakiet ping o pojemności 64 KB przeszedł przez 1500-bajtowy segment ethernetowy? (patrz Uwaga końcowa A) Nie mogę pomóc, dopóki nie opublikujesz informacji, o które proszę. To jest ten sam przykład z
ping -M do
Pozytywny przykład
ping -M do
dostarcza informacji o maksymalnej MTU wzdłuż ścieżki (w tym przypadku wiemy, że segment ethernetowy pierwszego przeskoku maIP MTU
1500 bajtów).Uwagi końcowe:
Odp .: Twoje pingi można skompletować jako serię fragmentów IP, ponieważ domyślnie
ping
umożliwia fragmentację IP. Jeśli próbujesz znaleźć maksymalny rozmiar pakietu, który przejdzie przez łącze, musisz zmodyfikować nagłówek IP (który zilustrowałem-M do
), aby upewnić się, że na końcu nie złączysz pofragmentowanych odpowiedzi. Używanieping -c 1 -s 65507 64.34.119.12
:źródło
ifconfig eth0 mtu 1232
tak myślę), nie zmienia to problemu. Także ustawienie MTU znacznie poniżej limitu nie jest. Nie zdawałem sobie sprawy, że musiałem ustawić MTU dla drugiej strony łącza - w jaki sposób robi to Windows 7, który wydaje się automatycznie dostrajać MTU?ifconfig eth0 mtu 1500
, rozmiar ping wydaje się ograniczona na 1468, który, z nagłówkami, jest bardzo zbliżony do 1500.