WireGuard сервер алдымен жібергеннен кейін ғана жұмыс істейді: соңғы нүктені білу
Бағытқа тәуелді сәттілік әдетте бір тараптың екіншісінің мекенжайын ешқашан білмегенін білдіреді. Соңғы нүктелерді салыстырыңыз, содан кейін аударма салыстыруының мерзімі біткенін тексеріңіз.
Туннель сервер алдымен бірдеңе жібергеннен кейін ғана жұмыс істейтін сияқты. Клиенттен бастаңыз — ештеңе болмайды, бірнеше секунд күтіңіз, қайталап көріңіз — және сәтті болады. Әдеттегі диагностика — бұзылған NAT, және әдеттегі диагностика қате. Өзгерген нәрсе — бір тарап екіншісінің қайда орналасқанын білді.
Соңғы нүктені білу, қолжетімділік емес
WireGuard тарапы қайда жіберу керегін білмейінше қол алысуды бастамайды. Конфигурация мұны мекенжай мен порттан тұратын соңғы нүкте ретінде береді, ал жұмыс күйі қазір сенетін соңғы нүктесін қадағалайды.
wg show сол көріністің екі жағын да шығарады, ал шығыста соңғы нүктесі жоқ тарап, оның ашық кілті мен рұқсат етілген префикстері қаншалықты дұрыс болса да, ештеңе бастай алмайды. Кез келген ережені өзгерту алдында клиенттің көзқарасын сервермен салыстырыңыз, өйткені екеуі кімнің нені білетіні туралы жиі келіспейді.
Тарап соңғы нүктені қалай біледі
WireGuard әдейі үнсіз. Дұрыс аутентификацияланған пакет тарап күтпеген мекенжайдан келгенде, іске асыру сол тараптың соңғы нүктесін жаңа көзге жаңартады, және желі ауыстыратын ноутбукта роуминг осылай жұмыс істейді. Бұл мінез-құлық бағытқа тәуелділікті түсіндіреді: егер сервер бірінші жіберсе және оның пакеті клиентке жетсе, клиент сервердің ағымдағы мекенжайын біліп, жауап бере алады. Оған дейін оның жіберетін жері жоқ. Механизм — бірінші пайдаланудағы сенімнің қысқа жолы емес, аутентификацияланған роуминг, өйткені пакет соңғы нүкте жылжымас бұрын жарамды болуы керек еді.
wg құралдарының құжаттамасы сол жаңартуды сипаттайды, және оның айналасында жобалау жасайтын болсаңыз, бір рет оқыған жөн.
Күйлі аударма өз бағытын қосады
UDP аударатын шлюзден өткенде, шлюз өзі көрген бірінші пакет үшін күй жасайды. RFC 4787 сол мінез-құлықты және сайып келгенде салыстыруды жоятын уақыт шектеулерін сипаттайды. Белсенді емес салыстыру мерзімі бітеді, содан кейін алыс жақтан келген кіріс пакетін шлюз хостқа жетпей тұрып тастайды. Бүкіл таң бойы жұмыс істеген туннель дәл осы себептен түстен кейін жауап беруді тоқтатады.
Бұл бірдей бағыттық симптомды тудыратын екінші және тәуелсіз механизм. Соңғы нүктені білу де, аударма күйі де дұрыс болуы керек, және біреуін түзету екіншісін түзетпейді.
Шынында қалаған бағытты конфигурациялаңыз
Қосылымды бастауы керек клиент үшін сервердің соңғы нүктесін клиенттің тараптар бөліміне қойып, сонда қалдырыңыз. Сервер бірінші жібереді деп сену — тыныш желіде өзгеретін трафик ретінің кездейсоқтығына сену. Конфигурация көзделген бағытты мәлімдеуі керек, оны ашуы емес.
Аударманың артындағы қолжетімді болып қалуы керек тарап үшін сол жақта тұрақты keepalive қосыңыз. Әр 25 секунд сайын keepalive — әдеттегі бастапқы мән, оның мақсаты туннельді тексеру емес, салыстыруды ашық ұстау. Оны тасымалдайтын бір жақты таңдаңыз, өйткені екі жақта қосу нәтижені жақсартпай трафик пен журнал шуын екі есе арттырады.
Күйді триггерге дейін және одан кейін салыстырыңыз
Сәтсіздік болған сәтте екі көріністі түсіріңіз, содан кейін сервер жібергеннен кейін тағы да. Бірінші команда соңғы нүктелер мен қол алысу жасын көрсетеді. Екіншісі порт үшін аударма жазбасының бар-жоғын көрсетеді. Түсірілім қай бағыттың шын мәнінде сымнан өткенін көрсетеді, ал маршрут тексерісі клиенттің бұл трафикті мүлдем басқа жерге жібермейтінін растайды.
wg show conntrack -L -p udp 2>/dev/null | grep 51820 tcpdump -ni any -c 20 'udp port 51820' ip route get 198.51.100.7
Соңғы нүкте бағанын және аударма жазбасын бірге жазыңыз. Соңғы нүктесіз тарап пен салыстыруы жоқ шлюз — екі түрлі ақау. Олардың тек біреуін ғана keepalive түзетеді.