VPN маршрут кэши өзгөртүүңүздү жашырып жатабы? Үч нерсени текшериңиз
Linux'та тазалоочу глобалдык маршрут кэши жок. Эскирген тест адатта эскирген socket, NAT жазуусу же кайра колдонулган профилди билдирет. Үч текшерүү аларды ажыратат.
Өзгөртүү күчүнө кирбегенде маршрут кэшин тазалоо биринчи инстинкт, ал эми заманбап Linux'та бул бекер эмгек: глобалдык IPv4 маршрут кэши жылдар мурун алынып салынган, ошондуктан ip route show cache эч нерсе басып чыгарбайт жана тазалоочу эч нерсе жок. Сизди алдаган абал бир катмар жогору жашайт: socket ичинде, NAT салыштыруусунда, resolver'де же эски профилди кайра колдонгон тармак менеджеринде. Үч суроо бул учурларды ажыратат: туура эмес жол жаңы агымдан келеби же эски байланыштан, платформаңыз маршруттарды такыр кэштеби, жана абал маршруттоодо не анын үстүндөбү. Интерфейсти кайра кошконго чейин аларга жооп бериңиз.
Биринчи текшерүү: эски жол жаңы агымдан келеби?
Түзүлгөн байланыш өзү түзүлгөн маршрутты сактайт. Ошондуктан туннел аркылуу SSH сессиясы маршруттоо таблицасынын өзгөрүүсүнөн аман калат, ал эми жаңы сессия дароо жаңы жолду алат, жана ошондуктан «өзгөртүү эч нерсе кылбады» көп учурда «эски socket али да аны кармап турат» дегенди билдирет. Жаңы процесс менен сынаңыз, мурунтан ачык турган терезеңиз менен эмес.
ss -tnp | head
ip route get 1.1.1.1
curl -m 5 -sS -o /dev/null -w '%{remote_ip}
' https://example.com
Акыркы команда жаңы байланыш чындыгында жеткен даректи басып чыгарат, жана бул статус терезесине ишенбей эле чыныгы жолду көрүүнүн эң арзан жолу. Аны namespace же интерфейс колдонушу керек болгон булак дареги менен салыштырыңыз.
Эгер жаңы агым туура жолду алса, ал эми эскиси калыбына келбесе, маршруттоого кароону токтотуңуз. Маршрут туура эле; сессия эски эле.
Экинчи текшерүү: платформаңыз маршрут кэшин такыр кармайбы?
Linux'та жооп жок, көпчүлүк колдонмолор көздөгөн мааниде. Ыргытуучу глобалдык даректөө кэши жок, жана тандалган маршрутты кармаган socket деңгээлиндеги жазуу socket менен бирге бошотулат. ip-route колдонмосунун кэш бөлүмү тарыхый жүрүм-турумду сүрөттөйт, азыркы ядродо тазалай алган нерсени эмес.
Башка платформалар башкача, жана кеңештерди көчүрүү дал ушул жерде жаңылат. Windows максат кэшин кармайт, аны netsh interface ip delete destinationcache аркылуу тазалоого болот. BSD жана macOS route -n get аркылуу ар бир максат боюнча издөөлөрдү көрсөтөт, жана алардын кэштери өз графиги боюнча бүтөт. Ушулардын биринде иштеген команда Linux'та эч нерсе кылбайт, ошондуктан ошол эле оңдоо аракет кылгандардын жарымына ийгиликсиз көрүнөт.
NAT же conntrack таблицасы маршрут кэши эмес, бирок ошол эле симптомду жаратат. Өзгөртүүңүзгө чейин которулган агым өз котормосун сактайт, жана conntrack -L аны маршруттоо саясаты алдыга өткөндөн кийин да көрсөтөт. Бул эскирген абал, бирок маршруттарды тазалоо ага тийбейт.
Үчүнчү текшерүү: абал маршруттоодо не анын үстүндөбү?
Башка нерсени окуудан мурун азыркы издөөнү окуңуз: максат үчүн ip route get, анан from жана булак дареги менен ошол эле команда, анан ip rule show. Эгер бул үчөө ниетиңизге дал келсе, маршруттоо оңдолуучу катмар эмес, жана эскирген байкоо башка жерден келген.
Үч көнүмүш шектүү маршруттоонун үстүндө отурат. Тармак менеджери сиз өчүргөндөн кийин бир нече секунддан соң сакталган профилден маршрутту кайра орнотушу мүмкүн, ошондуктан өзгөртүүңүз кайра кайткандай көрүнөт; таблицаны кайра редакциялоодон мурун nmcli connection show --active жана unit абалын текшериңиз. Resolver кэши эски даректи кайтарат, бул кэшти айланып өтүүчү курал менен ошол эле атты сураганга чейин маршруттоо бузулушуна окшош көрүнөт. Колдонмонун байланыш пулу эски максатка иштеген socket кармайт жана ядродон эч качан жаңы чечим сурабайт.
Үч жооп кандай тыянак чыгарууга мүмкүндүк берет
Жоопторду бириктириңиз, оңдоо адатта өзүн айтат. Маршрут кэши жок платформада жаңы агым туура эмес жолду алса, саясат чындыгында туура эмес, ошондуктан туннел орноткон эрежелерди жана таблицаны окуңуз. Эски сессия токтоп турганда жаңы агым туура жолду алса, көйгөй колдонмодо же socket'те. Эки учурда тең туура маршруттар менен бузулган байкоо абал маршруттоонун үстүндө экенин билдирет.
Жалпы жаңыртууга каршы тур. Тармак стекти кайра баштоо же демейки маршруту туннел болгон машинада бардык маршрутту жок кылуу дал ушуну оңдоо үчүн колдонуп жаткан байланышыңызды үзүшү мүмкүн, жана кайсы катмар ийгиликсиз болгонун айта турган далилди жок кылат.
Эгер чын эле бир нерсени тазалоо керек болсо, диагнозго дал келген эң кичине нерсени тазалаңыз: бир процесстин socket'тери, бир conntrack жазуусу, resolver кэши. Анан ошол эле жаңы агым тестин кайталап, эмне өзгөргөнүн жазыңыз.
Жазууларыңызда үч абалды өзүнчө кармаңыз
Сакталган конфигурация, азыркы издөө жана байкалган агым — үч башка факт, жана аларды «кэшке» бириктирүү кемчиликти кайра жаратууну кыйындатат. Маршрутка ээ профилди же unit'ти, ip route get чыгышын, жана чыныгы байланыштын булагы менен максатын жазыңыз.
Алардын жанына платформа менен клиент версиясын жазыңыз, анткени Windows максат кэшин тазалаган оңдоо Linux хостко колдонулуучу оңдоо эмес, жана экөөнүн ортосунда көчүрүлгөн процедура туура эмес сабак үйрөтөт. Көйгөйдү башка бирөөгө өткөрүп бергенде, ошол үч сап ага божомолдоонун ордуна ийгиликсиз абалды кайра жаратууга мүмкүндүк берет.