Itinatago ba ng cache ng mga ruta ng VPN ang iyong pagbabago? Suriin ang tatlong bagay
Walang pangkalahatang cache ng ruta ang Linux na maaaring buhusan. Ang lumang pagsubok ay karaniwang nangangahulugang lumang socket, entry ng NAT o profile na inilapat muli. Tatlong pagsusuri ang naghihiwalay sa kanila.
Ang pagbuga ng cache ng ruta ang unang instinct kapag hindi umiiral ang isang pagbabago, at sa makabagong Linux ito ay walang saysay na pagod: ang pangkalahatang cache ng ruta ng IPv4 ay tinanggal maraming taon na ang nakalipas, kaya ip route show cache ay walang iniimprenta at walang mabubuga. Ang kalagayang dumadaya sa iyo ay nakatira isang antas pataas: sa socket, pagmamapa ng NAT, resolver o tagapamahala ng network na muling naglapat ng lumang profile. Tatlong tanong ang naghihiwalay sa mga kasong iyon: nagmumula ba ang maling landas sa bagong daloy o sa lumang koneksyon, nagcacache ba ang iyong platform ng mga ruta, at nasa routing ba ang kalagayan o nasa itaas nito. Sagutin ang mga iyon bago mo i-reset ang isang interface.
Pagsusuri isa: nagmumula ba ang lumang landas sa bagong daloy?
Ang naitatag na koneksyon ay nagpapanatili ng rutang ginamit nang ito ay likhain. Kaya naman ang sesyon ng SSH sa tunnel ay nakakalampas sa pagbabago ng talahanayan ng routing habang ang bagong sesyon ay agad na kumukuha ng bagong landas, at kaya naman ang «walang ginawa ang pagbabago» ay madalas na nangangahulugang «hinahawakan pa rin ito ng lumang socket». Subukan gamit ang bagong proseso, hindi gamit ang bintanang nakabukas na.
ss -tnp | head
ip route get 1.1.1.1
curl -m 5 -sS -o /dev/null -w '%{remote_ip}
' https://example.com
Ang huling utos ay nag-iimprenta ng address na talagang naabot ng bagong koneksyon, at iyon ang pinakamurang paraan upang makita ang tunay na landas nang hindi nagtitiwala sa bintana ng kalagayan. Ihambing ito sa address ng pinagmulan na dapat gamitin ng namespace o interface.
Kung ang bagong daloy ay kumukuha ng tamang landas at ang luma ay hindi bumabawi, itigil ang pagtingin sa routing. Tama ang ruta; luma ang sesyon.
Pagsusuri dalawa: may cache ba ng ruta ang iyong platform?
Sa Linux ang sagot ay wala, sa diwa na tinutukoy ng karamihan ng gabay. Walang pangkalahatang cache ng destinasyon na itatapon, at ang entry sa antas ng socket na humahawak ng piniling ruta ay pinapalaya kasama ng socket. Ang seksyon ng cache sa manwal ng ip-route ay naglalarawan ng makasaysayang pag-uugali, hindi isang bagay na maaari mong buhusan sa kasalukuyang kernel.
Iba ang ibang platform, at dito nagkakamali ang pagkopya ng payo. Ang Windows ay may cache ng destinasyon na maaari mong linisin gamit ang netsh interface ip delete destinationcache. Ang BSD at macOS ay nagpapakita ng paghahanap bawat destinasyon sa pamamagitan ng route -n get, at ang kanilang mga cache ay nagwawakas ayon sa sarili nilang iskedyul. Ang utos na gumagana sa isa sa mga ito ay walang ginagawa sa Linux, kaya naman ang parehong lunas ay tila nabibigo sa kalahati ng mga taong sumusubok nito.
Ang talahanayan ng NAT o conntrack ay hindi cache ng ruta, kahit na nagbubunga ito ng parehong sintomas. Ang daloy na isinalin bago ang iyong pagbabago ay nagpapanatili ng salin nito, at ipapakita ito ng conntrack -L matagal pagkatapos na umabante ang patakaran ng routing. Iyon ay lumang kalagayan, ngunit hindi ito tatanggalin ng paglilinis ng mga ruta.
Pagsusuri tatlo: nasa routing ba ang kalagayan o nasa itaas nito?
Basahin ang kasalukuyang paghahanap bago ang anupaman: ip route get para sa destinasyon, pagkatapos ang parehong utos na may from at address ng pinagmulan, pagkatapos ip rule show. Kung ang tatlong ito ay tumutugma sa iyong layunin, ang routing ay hindi ang antas na aayusin, at ang lumang obserbasyon ay nagmula sa ibang lugar.
Tatlong karaniwang pinaghihinalaan ang nakaupo sa itaas ng routing. Maaaring muling i-install ng tagapamahala ng network ang isang ruta mula sa naka-save na profile ilang segundo pagkatapos mong tanggalin ito, kaya ang iyong pagbabago ay tila bumabalik; suriin ang nmcli connection show --active at ang kalagayan ng unit bago muling i-edit ang talahanayan. Ang cache ng resolver ay nagbabalik ng lumang address, na parang kabiguan ng routing hanggang sa tanungin mo ang parehong pangalan gamit ang tool na lumalampas sa cache. Ang pool ng koneksyon ng isang application ay nagpapanatili ng gumaganang socket patungo sa lumang destinasyon at hindi kailanman humihingi ng bagong desisyon sa kernel.
Ano ang hinahayaan ng tatlong sagot na tapusin mo
Pagsamahin ang mga sagot at kadalasan ay sinasabi na ng lunas ang sarili nito. Ang bagong daloy na kumukuha ng maling landas sa platform na walang cache ng ruta ay nangangahulugang tunay na mali ang patakaran, kaya basahin ang mga tuntunin at talahanayang in-install ng tunnel. Ang bagong daloy na kumukuha ng tamang landas habang natigil ang lumang sesyon ay nangangahulugang ang problema ay ang application o socket. Ang tamang ruta na may sirang obserbasyon sa parehong kaso ay nangangahulugang nasa itaas ng routing ang kalagayan.
Labanan ang pangkalahatang pag-refresh. Ang pag-restart ng stack ng network o pagtanggal ng bawat ruta sa isang makina na ang default na ruta ay ang tunnel ay maaaring putulin ang mismong koneksyong ginagamit mo upang ayusin ito, at sinisira nito ang ebidensiyang magsasabi kung aling antas ang nabigo.
Kung talagang kailangan mong linisin ang isang bagay, linisin ang pinakamaliit na tumutugma sa diagnosis: mga socket ng isang proseso, isang entry ng conntrack, cache ng resolver. Pagkatapos ay ulitin ang parehong pagsubok ng bagong daloy at isulat kung ano ang nagbago.
Panatilihing hiwalay ang tatlong kalagayan sa iyong mga tala
Ang naka-save na configuration, kasalukuyang paghahanap at naobserbahang daloy ay tatlong magkaibang katotohanan, at ang pagsasanib sa kanila sa «cache» ang dahilan kung bakit mahirap kopyahin ang depekto. Isulat ang profile o unit na nagmamay-ari ng ruta, ang output ng ip route get, at ang pinagmulan at destinasyon ng tunay na koneksyon.
Isulat sa tabi ang platform at bersyon ng client, dahil ang lunas na naglilinis ng cache ng destinasyon ng Windows ay hindi lunas na naaangkop sa isang host ng Linux, at ang pamamaraang kinopya sa pagitan ng dalawa ay nagtuturo ng maling aral. Kapag ipinasa mo ang problema sa ibang tao, ang tatlong linyang iyon ay nagbibigay-daan sa kanya na kopyahin ang nabigong kalagayan sa halip na manghula.