У вас є симптоми проблеми MTU : деякі TCP-з'єднання замерзають, більш-менш відтворювані для даної команди чи URL-адреси, але без загальновизнаного загального шаблону. Показовим симптомом є те, що інтерактивні сеанси ssh працюють добре, але передача файлів майже завжди не вдається. Крім того, pppoe - це номер один, який приносить проблему MTU для домашніх користувачів. Тому я призначаю чек MTU.
Що це? М aximum т ransmission у нита максимального розміру пакета по каналу мережі. MTU варіюється від транспортного середовища до транспортного середовища, наприклад, провідний Ethernet та wifi (802.11) мають різні MTU, а посилання на банкомати (які складають більшу частину інфраструктури міжміських відстаней) мають власну MTU.
PPPOE - це інкапсульований протокол, що означає, що кожен пакет складається з декількох байтів заголовка, за яким слідує базовий пакет - тому він зменшує максимальний розмір пакета на розмір заголовка.
IP дозволяє маршрутизаторам фрагментувати пакети, якщо вони виявляють, що вони занадто великі для наступного стрибка, але це не завжди працює. Теоретично слід виявити належний MTUавтоматично , але це також не завжди працює. Зокрема, googling дозволяє припустити, що Менеджер мережі не завжди належним чином діє на інформацію MTU, отриману при відкритті MTU, але я не знаю, на які версії впливають чи які проблемні випадки використання.
Як це виміряти.
Якщо у вас є iputilstracepath
Linux , запустіть, щоб побачити MTU через шлях до DNS-сервера Google. Якщо ваша версія має опцію, запустіть . Див. Розділ Відкрийте MTU між мною та IP-адресою для отримання додаткових варіантів.tracepath 8.8.8.8
traceroute
--mtu
traceroute -n --mtu 8.8.8.8
Не маючи автоматизованих інструментів, можна вимірювати вручну. Спробуйте надіслати пінг-пакети заданого розміру зовнішнім хостам, які відповідають на них, наприклад ping -c 1 -s 42 8.8.8.8
(в Linux; в інших системах шукайте документацію вашої ping
команди). Ваші пакети мають отримати достатньо малі значення 42 (якщо 42 не працює, щось блокує пінг.). Для більших значень пакет не пройде. 1464 є типовим максимальним значенням, якщо обмежувальним елементом інфраструктури є ваша локальна мережа Ethernet. Якщо вам пощастить, коли ви надсилаєте занадто великий пакет, ви побачите таке повідомлення Frag needed and DF set (mtu = 1492)
. Якщо вам не пощастило, просто продовжуйте експериментувати зі значенням, поки не знайдете максимальний максимум, тоді додайте 28 ( -s
визначає розмір корисного навантаження, а крім цього є 28 байт заголовків). Дивись такожЯк оптимізувати підключення до Інтернету за допомогою MTU та RWIN на форумах Ubuntu.
Як встановити його (замінити 1454 визначеним MTU та eth0
назвою мережевого інтерфейсу)
- Як разовий (Linux): запустіть
ifconfig eth0 mtu 1454
- Постійно (Debian та похідні, такі як Ubuntu, якщо не використовується Менеджер мереж): Редагувати
/etc/network/interfaces
. Одразу після запису для вашого мережевого інтерфейсу (після iface eth0 …
директиви) додайте рядок з pre-up ifconfig $IFACE mtu 1454
. Крім того, якщо ваша IP-адреса статична, ви можете додати mtu 1454
параметр до iface eth0 inet static
директиви.
Постійно (Debian та похідні інструменти, такі як Ubuntu, з мережевим менеджером або без нього): Створіть скрипт, що викликається, /etc/network/if-pre-up.d/mtu
із наступним вмістом та зробіть його виконаним у світі ( chmod a+rx
):
#!/bin/sh
ifconfig $IFACE mtu 1454
Подальші ресурси