pfSense kā VPN serveris un klients: divi ceļi, viens maršrutētājs
Ienākošais serviss un izejošais izejas tunelis var dalīt vienu ierīci. Trīs nosacījumi nosaka, vai to maršruti, tulkošana un kļūmes paliek atsevišķi.
Viena ierīce var vienlaikus skatīties divos virzienos: klejojošie lietotāji pieslēdzas iekšpusei, un tā pati kaste pieslēdzas ārpusei pie izejas pakalpojumu sniedzēja, lai izvēlētā plūsma izietu pa citu tīklu. Abu servisu ieslēgšana aizņem minūtes; lai tie sadzīvotu, vajag projektu, jo otrā loma pārraksta maršrutēšanas tabulu, uz kuras balstās pirmā. Trīs nosacījumi nosaka, vai šī uzbūve darbojas, proti, vai ienākošais serviss saglabā savu atgriešanās ceļu, vai izejošais tunelis vēl sasniedz savu partneri un vai plūsma, ko gribējāt pārsūtīt, tiek izvēlēta izejai. Ja kļūdīsities vienā, iegūsiet divus tuneļus, kuri abi ziņo par savienojumu, kamēr starp tiem nekas noderīgs neplūst. Tālākās pārbaudes nosaka katru nosacījumu tādā secībā, kādā kļūmes parasti parādās.
Nosauciet abas lomas pirms jebkura iestatījuma aizskaršanas
Pierakstiet četrus faktus par katru eksemplāru: tā attālo partneri, autentifikācijas materiālu, izdalāmo adrešu kopu un aiz tā esošos tīklus. Abi eksemplāri ir atsevišķi objekti ierīcē un tiem jāpaliek atsevišķiem arī jūsu piezīmēs. Gandrīz katrs vēlāk mulsinošais simptoms nāk no to vērtību sajaukšanas, un divi eksemplāri, kas dala vienu piezīmju kopu, ir ceļš, kā nepareizā kopa nonāk nepareizajā laukā.
Ienākošajam servisam vajag tuneļa tīklu, kas nepārklājas ar izejošā tuneļa adresēm vai jebkuru privāto tīklu, ko ierīce maršrutē. Pārklāšanās ir vienīgā kļūda, kas vienlaikus rada simptomus abās lomās, un to ir daudz lētāk noķert uz papīra. Pirms jebkura servisa konfigurēšanas vienuviet salīdziniet abas kopas un katru maršrutēto privāto tīklu.
Kopīgs aparatūra nenozīmē kopīgus pieteikšanās datus, un klienta sertifikāts no attālās piekļuves kopas nedrīkstētu būt izmantojams pret izejas pakalpojumu sniedzēju. Atsevišķs materiāls arī pārvērš atsaukšanu vietējā lēmumā, nevis visa flotes notikumā.
Turiet servera atbildes uz WAN ceļa
Atbildes, ko ierīce ģenerē pati, ir pirmie nevīžīga noklusējuma maršruta upuri. Kad pienāk klejojošā lietotāja iekapsulētais pakets, atbilde ir vietēji radušās plūsma, un tai jāiziet pa saskarni, pa kuru šis lietotājs ienāca. Ja izejošais klients ir uzstādījis noklusējuma maršrutu, kas to pārtver, atbilde nonāk nepareizajā tunelī, un sesija apstājas, kamēr serviss vēl izskatās vesels.
Nav vienas atzīmēšanas rūtiņas, kas to atrisinātu, jo lēmums ir par to, kādu plūsmu izejošais klients drīkst pārtvert. Vai nu nevelciet nekādus maršrutus un virziet tikai to, ko izvēlaties, vai velciet maršrutus un pievienojiet izņēmumus, kas uztur ierīces pašas servisus darbā. Pierakstiet izvēli blakus eksemplāram, citādi nākamais cilvēks pieņems pretējo.
netstat -rn | head -20
pfctl -sr | grep -i vpn
ifconfig | grep -A3 ovpn
Lasiet maršrutēšanas tabulu pēc garākās atbilstības, nevis pēc secības, kādā kaut ko konfigurējāt. Jautājums ir, kurš ieraksts uzvar izejas partnera adresei un kurš ieraksts uzvar ienākošā servisa atbildei, un šīs divas atbildes var atšķirties.
Neļaujiet izejošajam tunelim apēst savu galapunktu
Izejošajam klientam jāsasniedz partnera publiskā adrese, lai vispār izveidotu tuneli. Ja šī adrese pati tiek maršrutēta tunelī, klients dzenas pakaļ savai astei: transports nekad nepaceļas, vai arī paceļas un nokrīt tajā brīdī, kad tiek uzstādīts maršruts. Žurnāls izskatās kā autentifikācijas taimauts, nevis maršrutēšanas kļūme, tāpēc maršruts ir pelnījis pirmo pārbaudi.
Pārbaudiet maršrutu pirms pieteikšanās datiem un vēlreiz pēc tam, kad tunelis ir pacēlies, jo ieraksts var būt pareizs startā un nepareizs minūti vēlāk. Partnera adresei jānorāda uz parasto WAN ceļu, nekad uz tuneļa ierīci. Kad transports ir stabils, interesantais jautājums pārceļas uz pārsūtīto plūsmu, un tas ir nākamais lēmums.
netstat -rn | grep -F '198.51.100.10'
traceroute -n 198.51.100.10
Izvēlieties, kuri lietotāji saņem izeju
Avota politika pieder ieejai, kur plūsma nonāk ierīcē, tāpēc izvēlieties attālās piekļuves kopu vai šaurākas identitātes tajā. Saglabājiet privātos galamērķus un pārvaldības izņēmumus, kurus nekad nedrīkst sūtīt uz izeju, un novietojiet šos noteikumus pirms plašā. Tad izejas ceļam vajag savu tulkošanu vai maršrutētu atgriešanās kārtību, kas vairumā projektu nozīmē izejošo NAT uz izejas saskarnes, aptverot kopu. Tulkošana neizvēlas izeju; tā tikai pārraksta to, kas jau ir izgājis, tāpēc NAT noteikums uz nesaistīta WAN izvēlē neko nemaina.
Apstipriniet, ka attālais gals pieļauj pārsūtīto plūsmu no šī projekta, jo daži pakalpojumu sniedzēji to pieļauj, bet citi ne. Atšķirība izpaužas kā tunelis, kas savienojas un neko nenes, ko ir viegli nolasīt kā vietēju kļūmi. Pārbaudiet trīs plūsmas atsevišķi, jo tās neizdodas neatkarīgi, un divi no trim ir pusuzbūvēts projekts.
openvpn --config user07.ovpn
curl -sS https://ifconfig.me
curl --interface 10.10.10.1 -sS https://intranet.corp.example/health
Pirmā komanda ir klejojošā lietotāja ārējais savienojums, un tā darbojas, kad klients ziņo, ka inicializācijas secība ir pabeigta. Otrā, palaista no tā pieslēgtā portatīvā datora, būtu jāziņo izejas pakalpojumu sniedzēja adrese, nevis jūsu WAN adrese. Trešā darbojas ierīcē, piesaistīta kopas adresei, un pārbauda avota politiku pārsūtītajai plūsmai, pilnībā neiesaistot attālo lietotāju. Ja tā atbild no WAN, politika nesakrita, un nekāds NAT labojums neatrisina izvēles problēmu.
Izlemiet, kas notiek, kad izeja neizdodas
Pierakstiet kļūmes uzvedību pirms tā notiek: kad izejošais tunelis krīt, vai lietotāji atgriežas pie parastā WAN vai tiek bloķēti, līdz izeja atgriežas? Abas atbildes ir aizstāvamas, un ierīce neizvēlēsies jūsu vietā. Noņemts maršruts vai politika, kas norāda uz mirušu vārteju, automātiski nerada pilnīgas bloķēšanas rezultātu. Ja gribat bloķēšanu, politikai tas jāsaka skaidri, un tas jāpārbauda, atņemot izeju, nevis par to domājot. Ja gribat atgriešanos, publiskojiet to lietotājiem, jo plūsma, kas klusi izvēlas parasto ceļu, ir tieši tā plūsma, ko kāds uzskatīja par segtu.
Atspējojiet klienta eksemplāru, apskatiet, ko pieslēgts lietotājs vēl sasniedz, un pēc tam palaidiet to vēlreiz. Pieprasījums, kam beidzas laiks, ir pilnīgas bloķēšanas rezultāts, ko lūdzāt; tas, kas atbild ar WAN adresi, ir atgriešanās, ko nedokumentējāt. Atkārtojiet pārbaudi IPv6 un DNS gadījumā, jo politika, kas rakstīta IPv4, neko nesaka par AAAA plūsmu, un risinātājs, ko iebīda jebkurš tunelis, atbild no vietas, kur vaicājums patiešām iziet.
pfSsh.php playback svc stop openvpn client 2
curl --max-time 6 -sS https://ifconfig.me
pfSsh.php playback svc start openvpn client 2
«Netgate» maršrutētā OpenVPN recepte parāda, kā avota politika, saskarnes piešķiršana un izejošā tulkošana sader kopā, un tās apjoms starp vietnēm ir daļa, ko nevajag kopēt visu. Ko tā nepateiks, ir to, kuru no trim iepriekš minētajiem nosacījumiem jūsu projekts jau ir pārkāpis.