Du OpenVPN tuneliai viename Linux hoste: kam priklauso maršrutas?
Du kliento profiliai gali egzistuoti kartu, kai baseinai, stumiami maršrutai ir numatytieji reikalavimai yra paskirstyti. Pirmiausia nuspręskite nuosavybę, tada naudokite žymes grįžtamajam keliui.
Du profiliai prijungti, ir vienas jų tyliai neša srautą, skirtą kitam. Linux hostas gali vienu metu be vargo paleisti abu OpenVPN klientus. Ko jis negali padaryti, tai nuspręsti už jus, kuris procesas gali reikalauti kurio prefikso. Šis sprendimas turi būti priimtas prieš pakylant antrajam tuneliui, o ne po to, kai išteklius nustoja atsakinėti.
Pradėkite nuo darbo, kurį turi atlikti antroji jungtis
Biuras, pasiekiamas per vieną profilį, ir laboratorija, pasiekiama per kitą, reikalauja, kad abu tuneliai būtų pakelti ir nė vienas nereikalautų visko. Vienai užsispyrusiai programai, kuri turi išeiti per antrą profilį, reikia politikos taisyklės, o ne antrojo numatytojo maršruto. Atsarginiam ryšiui vienu metu reikia tik vieno veikiančio tunelio, todėl atsarginis neturėtų startuoti kartu su mašina.
Tai trys skirtingos konfigūracijos, ir jos painiojamos, nes visos trys prasideda taip pat: antras profilis ir sėkmingas prisijungimas. Pirmiausia užsirašykite numatytą išdėstymą, tada konfigūruokite jo link. Vienas sakinys apie ketinimą sutaupo valandą paketų fiksavimo.
systemctl list-units --type=service 'openvpn-client@*' ip -4 route show default
Pirmoji komanda išvardija veikiančias instancijas, įskaitant tas, kurios paleistos rankiniu būdu už valdytojo ribų. Antroji išspausdina dabartinį numatytąjį reikalavimą, ir tai yra būsena, kurią vėliau turėsite paaiškinti.
Persidengiantys baseinai lūžta anksčiau nei maršrutizavimas
Du serveriai mielai paskirstys adresus iš to paties 10.8.0.0/24. Tada klientas turi du sąsajas viename prefikse ir niekas nepasako, kuri paskirtis priklauso kuriai, o gaunamas elgesys atrodo kaip maršrutizavimo gedimas, bet iš tikrųjų tai numeracijos gedimas. Baseino pernumeravimas kainuoja vieną konfigūracijos keitimą; kiekvienas vėlesnis maršrutizavimo apėjimas kainuoja savaitgalį. Patikrinkite baseiną prieš pridėdami jam maršrutą.
Pažiūrėkite ir į vietinį LAN. Namų LAN su numeriu 192.168.1.0/24, kurį atskleidžia ir vienas tunelis, sukuria tą pačią dviprasmybę, o simptomas yra pagrindinio kompiuterio vardas, kuris išsprendžiamas, nors ryšys niekada nebaigiamas. Tai atrodo kaip vardų sprendimo gedimas, kol neišspausdinsite maršrutų.
ip -4 addr show ip route show table all | grep -E '10\.|192\.168\.'
Palyginkite abu išvestis su dviem serverio konfigūracijomis prieš liesdami klientą. Jei prefiksai persidengia, sustokite ir pernumeruokite, nes joks perkrovimų skaičius jų neatskirs.
Duokite kiekvienam profiliui savo įrenginį, o kiekvienam prefiksui – savininką
Kiekvienas profilis gauna savo egzemplioriaus pavadinimą ir savo konfigūracijos failą, todėl egzempliorius, vadinamas office, įkelia office.conf, o vadinamasis lab įkelia lab.conf. Patvirtinkite šį susiejimą per paslaugų valdytoją, o ne pasitikėdami katalogo sąrašu, nes drop-in gali pakeisti, kuris failas įkeliamas. Neteisingas susiejimas reiškia, kad derinate profilį, kuris neveikia.
Tada nuspręskite, kas įdiegia maršrutus. Kai serveriai stumia nesuderinamus rinkinius, arba atsisakykite stūmimo ir patys išvardykite prefiksus, arba leiskite vienam profiliui išsaugoti numatytąjį, o kitą valdykite politikos taisyklėmis. Du procesai, kurie abu įdiegia numatytąjį, baigiasi tyliu nugalėtoju ir be rašytinio sprendimo įrašo.
systemctl cat [email protected] grep -E 'route-nopull|pull-filter|redirect-gateway' /etc/openvpn/client/lab.conf
Pirmoji parodo įrenginį su bet kokiu pakeitimu, kuris keičia jo argumentus. Antroji parodo, ar profilis apskritai priima stumiamus maršrutus, ir tai yra jungiklis, lemiantis viską toliau.
Žymės laiko atsakymus sąsajoje, iš kurios jie atėjo
Kai kiekvienas tunelis aptarnauja skirtingus šaltinius, atsakymas gali išeiti netinkama jungtimi ir ryšys miršta po pirmo paketo. Modelis, kuris išlaiko, yra žymėti ateinančius paketus pagal įvesties sąsają, atkurti tą žymę atsakyme ir kiekvienai žymei duoti lentelę su savo numatytuoju šliuzu.
Laisvas atvirkštinio kelio filtravimas paprastai turi būti sušvelnintas paveiktoms sąsajoms, nes atsakymas teisėtai ateina jungtimi, kurios pagrindinė lentelė niekada nepasirinktų. Laikykite žymes siauras, kad jos niekada nepagautų pačių tunelių šifruoto srauto, nes tai siųstų tunelį per jį patį.
ip rule show ip route show table 101 sysctl net.ipv4.conf.all.rp_filter
Perskaitykite esamas taisykles prieš pridėdami dar vieną. Dvigubi prioritetai ir pamirštos lentelės yra įprasta priežastis, kodėl žymių politika atrodo visiškai neveikianti.
Įrodykite izoliaciją sustabdydami vieną jungtį
Kai abu tuneliai pakelti, užrašykite kiekvienos sąsajos adresą, maršrutą į vieną pagrindinį kompiuterį už kiekvieno tunelio ir kelią, kuriuo eina nesusijusi paskirtis. Paprašykite branduolio atlikti paiešką, o ne skaitykite vieną lentelę, nes viena lentelė niekada neparodo galutinio sprendimo.
Tada sustabdykite vieną egzempliorių ir stebėkite, kaip jo sąsaja ir maršrutai išnyksta, kol kitas tęsia. Pertrauka išlikusiame reiškia, kad abu vis dar dalijasi įrenginio pavadinimu, maršrutu ar ugniasienės taisykle, kurios niekas neatskyrė.
Grąžinkite sustabdytą profilį ir pakartokite tuos pačius patikrinimus. Kai tunelis išgyvena tik pirmą paleidimą po perkrovimo, matote gyvavimo ciklo defektą, o ne maršrutizavimo dizainą.