Lietotne piesaistās VPN adresei, un savienojums tomēr iziet pa parasto noklusējuma maršrutu. Piesaistē nekas neizdevās; tā izdarīja tieši to, ko dara piesaiste. Socket piesaiste vietējai adresei izvēlas avota adresi, ko kodols ievieto galvenē. Tā neinstalē maršrutu un neveido politikas noteikumu, kas sūtītu paketes ar šo avotu konkrētā tunelī.

Pārējā šīs rokasgrāmatas daļa ir pārbaudes secība, ko izmantoju, kopā ar komandu, kas dod katru novērojumu.

Ko piesaiste patiešām izlemj

Piesaiste piešķir socketam vietējo adresi. Pēc tam kodols veic to pašu maršruta meklēšanu, ko būtu veicis citādi, ja vien politikas noteikums nemaina, kuru tabulu šī meklēšana lasa.

Tāpēc pakete var iziet ar VPN avota adresi fiziskajā saskarnē. Otrā pusē tā ierodas no privāta diapazona, ko tīkls šajā ceļā nekad nav gaidījis, atgaitas trafikam nav maršruta atpakaļ, un savienojums iekaras vai tiek atiestatīts.

Linux IP socketu uzziņa dokumentē piesaistes semantiku. Maršrutēšanas puse dzīvo ip-rule un ip-route, un tie ir atsevišķi rokasgrāmatas ieraksti pamatota iemesla dēļ.

Pārliecinieties, ka adrese pieder šai vārdu telpai

Adresei, kurai varat piesaistīties, jāpastāv saskarnē tīkla vārdu telpā, kurā darbojas lietotne. Partnera adrese, vārtejas adrese vai adrese, kas pastāv tikai citā vārdu telpā, nav piesaistāma, un izsaukums neizdodas ar EADDRNOTAVAIL.

ip -br addr show
ip netns identify <pid>
ss -tanp | grep <port>

Izpildiet šos trīs tādā pašā kontekstā kā lietotni: tā pati vārdu telpa un, ja varat iegūt, tas pats lietotājs. Vecā net30 diagramma nav pierādījums tam, kādu adresi jūsu pašreizējā topoloģija piešķīra klientam. Lasiet saskarni, kas patiešām ir aktīva.

Lasiet meklēšanu šim avotam un mērķim

Viena komanda atbild uz jautājumu, uz kuru piesaiste nebilda:

ip route get 203.0.113.10 from 10.8.0.2
ip rule show

Pirmā rinda izdrukā maršrutu, ko pakete no šī avota uz šo mērķi ietu, tostarp izejošo saskarni un vēlamo avotu. Ja tā nosauc fizisko saskarni, piesaiste un maršruts atšķiras, un pakete izies ar avotu, uz kuru ceļš nevar atgriezties.

Pēc tam ip rule show pasaka, vai kāds noteikums būtu izvēlējies citu tabulu. Šeit svarīgas ir prioritātes, jo uzvar pirmais atbilstošais noteikums, un noteikums, kas aiztur visu virs jūsu noteikuma, padara jūsu noteikumu neredzamu.

Instalējiet politikas noteikumu tikai tad, ja tāds ir projekts

Maršrutēšana pēc avota ir apzināts projekts, nevis vienas lietotnes labojums. Ja politikas īpašnieks vēlas, lai trafiks no tuneļa apakštīkla izmantotu tuneli, noteikums pieder viņa konfigurācijā, nevis vienreizējā komandā jūsu portatīvajā datorā.

Darbospējīga forma ir atsevišķa tabula ar noklusējuma maršrutu caur tuneli, plus noteikums, kas sūta VPN avota diapazonu šajā tabulā. Pievienojiet izņēmumus, kas projektam nepieciešami, jo tabula, kurā ir tikai tuneļa noklusējums, uztvers mērķus, kuriem jāpaliek lokāliem vai jāsasniedzami pa fizisko ceļu.

ip route add default dev tun0 table 100
ip rule add from 10.8.0.2 table 100 priority 100
ip route get 203.0.113.10 from 10.8.0.2

Atceliet ar ip rule del un ip route flush table 100. Viss šādi pievienotais pazūd pēc pārstartēšanas, ja vien to neieraksta pārvaldnieks, kas ir gan drošības īpašība, gan iemesls neturēt vienīgo kopiju savā shell vēsturē.

Pārbaudiet ar trim novērojumiem

Pierakstiet avotu, ko lietotne pieprasīja, maršrutu, ko izvēlējās meklēšana, un avotu, ko serveris patiešām redzēja.

Šie trīs var atšķirties, un katra atšķirība norāda uz citu vietu. Uzņemšana tuneļa saskarnē pierāda, ka pakete izgāja ar pareizo avotu. Uzņemšana fiziskajā saskarnē pierāda, ka tā izgāja nepareizajā ceļā. Tikai servera puses skats pierāda ceļu no gala līdz galam.

Ja lietotne piedāvā piesaistes ierīcei opciju vai maršrutēšanas režīmu katrai lietotnei, uzskatiet to par citu mehānismu ar citiem ierobežojumiem. Līdzīgi izskatoši iestatījumi ne visi noved pie tā paša kodola lēmuma.

Saistītie raksti