WireGuard застанува: MTU граница или правило за препраќање што недостасува?
Сѐ зад серверот е проблем со препраќање или со повратна рута. Малите барања работат, а големите застануваат — тоа е потписот на големината на пакетот.
Навиката е да се намали MTU веднаш штом WireGuard почне лошо да се однесува, и таа навика крие друг дефект. Порта што не препраќа и патека што не носи големи пакети даваат различни обрасци: едниот паѓа во двете насоки и при секоја големина, другиот преживува мали барања и умира на големите. Утврдете кој облик го имате пред да смените кој било број. Тестот е евтин и отстранува половина од можните причини.
Два дефекти, два различни облика
Проблемот со препраќање се појавува веднаш зад серверот. Ракувањето успева, адресата на тунелот одговара, и ништо зад портата не е достапно дури и со мало барање. Пакетот стигна до серверот и не беше препратен, или одговорот немаше повратна рута.
Проблемот со големина се појавува само над праг. DNS, TCP ракување и мало API повикување работат, додека преземање датотека или голем одговор заглавува. Пакетите што се вклопија поминаа од крај до крај, а тие што не се вклопија беа фрлени некаде без употреблив извештај.
Тие описи укажуваат на различни луѓе и различни конфигурациски датотеки, затоа мерењето на обликот вреди повеќе од претпоставка. Еден ping до портата не може да ги одвои.
Исклучете го препраќањето пред да смалите нешто
Тестирајте дестинација зад портата, не самата порта. Ping до адресата на тунелот на серверот докажува само дека интерфејсот е активен и дека стигнувате до машината што го завршува тунелот. Сообраќајот за пошироката мрежа зависи од тоа дали IP препраќањето е овозможено на таа машина и од заштитен ѕид што го дозволува препратениот тек. Двете мора да бидат вистинити, и ако едното е лажно, се добива истата тишина.
Повратното рутирање е исто толку важно. Ако дестинациската мрежа не знае како да стигне до адресата на тунелот на клиентот, барањето пристигнува и одговорот исчезнува, и клиентот пријавува истек на време што изгледа исто како отфрлено препраќање.
Каде што дизајнот користи превод на адреси, правилото за превод е дел од таа повратна патека. Неговото отстранување додека се гони проблем со MTU претвора еден работен дизајн во расипан, затоа прочитајте ги постојните правила пред да ги уредите.
Измерете каде започнува прекинот
Прво прочитајте ја состојбата на препраќањето и правилата за филтрирање. Тоа се проверки само за читање и тие одговараат на евтиното прашање:
sysctl net.ipv4.ip_forward
sudo iptables -S FORWARD
ip route get 10.30.0.9
Потоа проверете големини со битот за забрана на фрагментација, од клиентот, кон домаќин зад портата:
ping -M do -s 1200 10.30.0.9
ping -M do -s 1400 10.30.0.9
Ако првата проверка работи, а втората не успее со грешка за фрагментација, патеката ви ја кажува својата употреблива големина. Ако ниту една не работи, гледате препраќање или рутирање, и MTU не е променливата што треба да се смени.
| Observation | Points toward | Where to look |
|---|---|---|
| Nothing beyond the gateway works | Forwarding or return route | Forwarding flag, filter rules, routing table |
| Small works, large stalls | Packet size on the path | Tunnel MTU and the link underneath |
| Only names fail | DNS resolution | The resolver configured for the tunnel |
| Works sometimes | Multiple paths or state expiry | Flow selection and NAT state |
Поправете го слојот што го докажавте
Кога препраќањето е дефект, поправката е правило за препраќање или рута, изразено колку што дизајнот дозволува потесно. Кога големината е дефект, поправката е MTU што ја зема предвид инкапсулацијата на токму оваа патека, применет на интерфејсот што му е потребен, а не на секој адаптер во флотата.
Како и да е, потоа повторете ја истата задача кон истата дестинација. Ако првичниот голем пренос сега завршува, промената го реши слојот што паѓаше. Ако се подобри само малата проверка, лекувавте симптом и вистинската граница е сѐ уште на место.
Запишете кој облик го набљудувавте пред промената. Таа една линија, запишана до поправката, е она што го спречува следниот човек да намали MTU што никогаш не бил проблем.