Għaqqad żewġ klijenti OpenVPN fuq host Linux wieħed b'fwmark
Iż-żewġ klijenti jridu r-rotta default. Ibblokka s-server intern b'rotta host, waqqaf lit-tieni klijent milli jikteb mill-ġdid it-tabelli, imbagħad idderieġi l-flussi b'fwmark.
L-istivar ta' tieni klijent OpenVPN fuq host Linux wieħed ifalli f'waħda minn żewġ postijiet. Jew il-klijent intern ma jistax jilħaq is-server tiegħu għax il-mina ta' barra qabdet dak it-trasport, jew it-tieni klijent jerġa' jikteb it-tabella tar-rotot u l-ewwel mina tieqaf taħdem. Iż-żewġ problemi jinsabu fir-routing, mhux fiċ-ċifrar, u t-tnejn jiġu solvuti qabel ma l-mina l-ġdida ġġorr xi traffiku tal-applikazzjoni. L-indirizzi hawn huma illustrattivi: tun0 hija l-mina ta' barra, 203.0.113.9 huwa s-server intern, u TCP 9999 huwa l-fluss li għandu juża t-triq interna.
Żewġ modi ta' falliment, tabella waħda tar-rotot
Klijent intern jiftaħ soket UDP lejn is-server tiegħu, u dak is-soket isegwi t-tabella tar-rotot attwali bħal kull ieħor. Jekk il-mina ta' barra diġà għandha d-default, il-pakketti tal-handshake jidħlu fil-mina ta' barra. Dan jaħdem biss meta s-server ta' barra jista' jilħaq is-server intern u n-naħa l-oħra taqbel li ġġorr il-fluss; inkella l-handshake jieqaf u l-klijent jerġa' jipprova.
It-tieni falliment jiġi mill-push tas-server. Il-push tas-soltu huwa redirect-gateway def1, li jinstalla 0.0.0.0/1 u 128.0.0.0/1 minflok ma jissostitwixxi r-rotta default. Għalhekk żewġ klijenti li kull wieħed jinstalla l-par /1 tiegħu jieħdu għal xulxin, u l-aktar par ġdid jirbaħ għal kważi kull destinazzjoni. Fittex dawk iż-żewġ prefissi fit-tabella meta mina tmut wara li jqabbad it-tieni, għax ir-rotta default innifisha forsi qatt ma nbidlet.
Immarka l-fluss u agħtih tabella
Idderieġi t-traffiku magħżul billi timmarkah fit-tabella mangle u tqabbel il-marka f'regola tal-politika. Ir-regola tipponta lejn tabella dedikata li r-rotta default tagħha hija l-apparat intern, sabiex biss il-pakketti mmarkati jieħdu t-triq interna.
iptables -t mangle -A PREROUTING -p tcp -m multiport --dport 9999 -j MARK --set-mark 0x9999
ip rule add fwmark 0x9999 table 200 pref 1000
ip route add default dev tun1 table 200Il-biċċa l-kbira tal-fallimenti f'dan is-sett ta' regoli jiġu minn żewġ żbalji. Il-valur tal-marka li jistabbilixxi l-firewall u l-valur li tqabbel ir-regola għandhom ikunu identiċi, għax nuqqas ta' qbil ma jagħti la żball u lanqas effett. U PREROUTING jara biss pakketti li jiġu minn barra, għalhekk konnessjoni mibdija fuq dan il-host teħtieġ regola OUTPUT bl-istess tqabbil qabel ma tiġi mmarkata xejn.
Ħu s-sjieda tar-rotot mit-tieni klijent
Żewġ għażliet iżommu lit-tieni klijent milli jeditja t-tabella, u jaħdmu f'punti differenti. route-nopull jinjora l-għażliet tar-rotta mibgħuta bil-push, għalhekk xejn ma jiġi installat. route-noexec jaċċetta l-għażliet mibgħuta fl-ambjent tal-klijent imma jħalli l-bidla tat-tabella lil hook, u dan huwa dak li trid meta jkollok bżonn tara x'offra s-server.
Il-hook jaħdem bil-valuri mibgħuta fl-ambjent tiegħu, u għandu jżid biss id-daħliet li approvajt. Agħmlu idempotenti: żvojta t-tabella li jippossjedi qabel terġa' tibniha, u tassumix li l-esekuzzjoni preċedenti ħalliet stat nadif. Rikonnessjoni terġa' ssejjaħ il-hook, u hook li jżid mingħajr ma jnaddaf jakkumula rotot duplikati.
Agħżel sid wieħed u ikteb dan. Profil li jistabbilixxi ż-żewġ għażliet, jew hook li jikkompeti ma' skript manwali, jipproduċi tabella li ħadd ma jista' jispjega aktar tard.
Ibblokka ż-żewġ indirizzi tas-server
Is-server intern jeħtieġ rotta host mill-apparat ta' barra qabel ma jqabbad il-klijent intern. Dik id-daħla hija li żżomm it-trasport intern ġewwa l-mina ta' barra minflok ma tħallih isegwi d-default.
ip route add 203.0.113.9/32 dev tun0
ip route get 203.0.113.9Żid ukoll rotta host li taqbel għas-server ta' barra fit-tabella prinċipali, inkella rikonnessjoni tista' tidderieġi t-trasport tal-klijent ta' barra stess fil-mina tiegħu stess. L-ordni mhijiex fakultattiva: żid dawn id-daħliet wara li teżisti l-interface rilevanti, jiġifieri hook jew skript li jaħdem wara l-konnessjoni. Rotta li tipponta lejn apparat li huwa mitfi titneħħa jew tiġi injorata, għalhekk daħla miktuba waqt il-boot ma tissopravvix lill-ordni li assumejt.
Iċċekkja t-tfittxija minflok taqra t-tabella kollha. L-output tat-tfittxija tar-rotta jsemmi l-apparat u l-indirizz tas-sors li l-kernel se juża, u dan huwa eżattament dak li jieħu l-klijent meta jiftaħ is-soket tiegħu.
Ittestja l-katina u agħmel il-falliment viżibbli
Aqbad fuq l-interface ta' barra waqt li l-klijent intern iqabbad. Il-handshake intern għandu jidher bħala payload encrypted ġewwa l-mina ta' barra; jekk jidher bħala UDP sempliċi lejn 203.0.113.9, ir-rotta host hija nieqsa u l-katina qatt ma nbniet.
Katina li bil-kwiet terġa' lura għall-uplink fiżiku hija l-agħar riżultat, għax l-istat tal-interface ma jħabbar xejn u t-traffiku intern joħroġ mill-indirizz tas-sors żbaljat. Jekk it-tieni klijent jista' jerġa' jqabbad direttament meta l-mina ta' barra taqa', iddiżattiva dik it-triq jew orbtiha mal-interface ta' barra sabiex il-falliment ikun viżibbli.
Iffinalizza b'żewġ flussi u dump wieħed ta' regoli: konnessjoni mmarkata u waħda mhux immarkata għandhom jieħdu toroq differenti, u ip rule show għandu jelenka l-prijorità li kellek f'moħħok. Jekk iż-żewġ flussi jieħdu l-istess triq, il-marka mhijiex qed tiġi applikata fejn taħseb.