WSL2 ичиндеги Git VPN учурунда токтоп калат: интерфейс MTUсубу же жолбу?
Git аутентификациядан өтүп, анан WSL2 ичинде илинип калабы? Linux интерфейсин Windows VPN адаптери менен салыштырыңыз, бир кичине маанини текшерип, анын жашоо циклин пландаңыз.
Клон аутентификациядан өтөт, объектилердин саны пайда болот, анан бир нече мүнөт бою эч нерсе кыймылдабайт. Windows VPN туташкан деп билдирет, хост аты чечилет, ошол эле машинадагы браузер ошол эле репозиторий баракчасын кыйынчылыксыз ачат. Бул айкалыш каттоо маалыматтарына эмес, пакет өлчөмүнө белги берет, жана өлчөм суроосун эки жерде коюу керек, анткени WSL2нин өз MTUсу бар өз Linux интерфейси бар. Бир сан жолдун Windows тарабына, экинчиси дистрибутивге таандык, ал эми VPN адаптерин гана окуу жолдун жарымын текшерилбей калтырат.
Үч белги өлчөм маселесин башкалардан бөлөт
Биринчи белги — форма: байланыш түзүү жана кичине алмашуу ийгиликтүү болот, анан массалык өткөрүү илгерилөөнү токтотот. Экинчиси — симметрия: ошол эле репозиторий жана ошол эле транспорт ийгиликсиз болот, ал эми ошол эле жолдогу башка хост иштейт, же ийгиликсиздик күн убактысы менен эмес, пайдалуу жүктүн өлчөмү менен өзгөрөт. Үчүнчүсү — тынчтык: аутентификация катасы жок, прокси баш тартуусу жок, ат чечүү ийгиликсиздиги жок, эч качан бүтпөгөн өткөрүү гана.
Бул үчөө бирге пакет өлчөмү тууралуу гипотезаны негиздейт. DNS ийгиликсиздиги, мөөнөтү өткөн токен, четке кагылган SSH ачкычы жана CONNECTтен баш тарткан прокси — ар бири өз катасын чыгарат жана алардын эч бири ийгиликтен кийинки токтоп калууга окшошпойт. Текшерүү учурунда ошол эле репозиторийди, транспортту жана убакыт терезесин сактоо салыштырууну ак кыла турган нерсе.
Чечим кабыл алуудан мурун эки интерфейсти салыштырыңыз
Windows көрүнүшүн жана Linux көрүнүшүн бир сессияда чогултуңуз жана аны кайсы интерфейс ташып жүрөт деп болжолдоонун ордуна репозиторийдин дарегин кармаңыз. Төмөнкү буйрук адегенде барар жерди чечет, ошондуктан маршрут издөө клон чындыгында байланышкан серверди сүрөттөйт, ал браузер көрсөткөн аттан айырмаланышы мүмкүн. Эки жарымды бири-бирине жакын аткарыңыз, анткени VPN аракеттердин ортосунда интерфейс метрикаларын өзгөртүшү мүмкүн.
netsh interface ipv4 show subinterfaces
wsl -d Ubuntu -- bash -lc 'dest=$(getent ahostsv4 github.com | awk \'NR==1{print $1}\'); ip -br link show; ip route get "$dest"'
Linux жарымын Windows кабыгына чыгарылышты жабыштыруунун ордуна дистрибутивдин ичинде аткарыңыз, анткени интерфейс аттары жана маршрут тандоо ондо гана маанилүү. Windows кабыгынан жабыштырылган натыйжа туура эмес сандарды чоң ишеним менен билдирет. Бир нерсени өзгөртүүдөн мурун ар тараптан түзмөктү, тандалган маршрутту жана MTUну жазып алыңыз.
Сан кичине болушу керекпи, аны чечиңиз
Жол көтөрө алгандан чоң интерфейс MTU автоматтык түрдө кемчилик эмес, анткени жол MTUсун ачуу дал ушул үчүн бар. Ийгиликсиздик режими ачуу басылганда пайда болот: ICMP билдирүүлөрү жолдун бир жеринде чыпкаланат, жиберүүчү чекти эч качан билбейт, жана чоң пакеттер жоголуп, кичинелери өтөт. Бул жолдун касиети, Gitтин эмес. Бул ошондой эле кичине файл чоңу эч качан бүтпөгөн байланышта ийгиликтүү болушунун себеби.
Эгер далилдер муну колдосо, Linux интерфейсиндеги убактылуу өзгөртүү эң арзан текшерүү. Колдонууга боло турган жол өлчөмүнөн төмөн маанини тандаңыз, мурункусун жазып алыңыз жана салыштыруу маанилүү болушу үчүн калганын туруктуу кармаңыз. Эгер өткөрүү кичине мааниде бүтсө, сизде кокустук эмес, диагноз бар.
ip -br link show dev eth0
sudo ip link set dev eth0 mtu 1380
ip -br link show dev eth0
Жөндөө кайда жашоосу керек экенин чечиңиз
Текшерүүдөн үч вариант келип чыгат, адатта алардын бирөө гана ылайыктуу. Эгер кичине маани өткөрүүнү оңдоп, маани бул тармакка чындап керек болсо, жөндөөгө жашоо циклинен ээ керек: дистрибутивдеги баштоо илмеги, платформа башкарган тармак конфигурациясы же документтелген процедура. Эгер маани эч нерсени оңдобосо, аны кайтарыңыз жана транспорт, прокси жана аутентификация суроолоруна кайтыңыз.
Баштоо илмегинин бар-жоктугу колдонулган Windows жана WSL версияларына жана конфигурацияланган тармак режимине байланыштуу. Windows тармагын күзгүдө чагылдыруу VPNдин дистрибутив менен өз ара аракеттенүүсүн MTU оңдоодон маанилүүрөөк жолдор менен өзгөртүшү мүмкүн, ошондуктан ага айланып өтүү жолун долбоорлоодон мурун режимди аныктаңыз. Бир операторго же бир VPN профилине ылайыктуу маани кийинкиси үчүн демейки эмес.
Качуу керек нерсе — азгырган жайгаштыруу: ар бир интерактивдүү кабыктын баштоо файлындагы артыкчылыктуу тармак буйругу, же скрипт бир сапты аткара алышы үчүн бүт ip бинардык файлына сырсөзсүз sudo. Экөө тең диагнозду туруктуу таасирге айландырат жана баштапкы маселени кийинчерээк көрүүнү кыйындатат.
Таза баштоодон кийин текшериңиз, анан кайтарыңыз
Дистрибутив кайра башталганга чейин гана сакталган өзгөртүү оңдоо эмес. Дистрибутивди кайра баштаңыз, VPNди кайра туташтырыңыз жана ping же кичине HTTP суроосу сыяктуу алмаштыргычтын ордуна баштапкы Git операциясын кайталаңыз. Анан жаңы сессияда интерфейс көздөлгөн маанини алып жүргөнүн ырастаңыз.
ip -br link show dev eth0
ip route get "$(getent ahostsv4 github.com | awk 'NR==1{print $1}')"
Жазып алынган баштапкы маанини өзгөртүүнүн жанында кармаңыз, экспериментти таза кайтарууга болушу үчүн, жана кайсы дарек үй-бүлөсү текшерилгенин белгилеңиз, анткени IPv4 натыйжасы ошол эле хосттогу IPv6 байланышы тууралуу эч нерсе айтпайт. WSL тармактарынын документтери оңдоо кандай болушу керектигин аныктаган режимдерди сүрөттөйт; MTU саны өзү жергиликтүү өлчөө, сунуш эмес.