Bigarren OpenVPN bezero bat Linux ostalari bakarrean pilatzeak bi lekutatik batean huts egiten du. Edo barneko bezeroak ezin du bere zerbitzarira iritsi kanpoko tunelak garraio hori hartu duelako, edo bigarren bezeroak bide-taula berridazten du eta lehenengo tunelak funtzionatzeari uzten dio. Bi arazoak bideratzean daude, ez enkriptatzean, eta biak konpontzen dira tunel berriak aplikazio-trafikorik eraman aurretik. Hemen agertzen diren helbideak adibidekoak dira: tun0 kanpoko tunela da, 203.0.113.9 barneko zerbitzaria da, eta TCP 9999 barneko bidea erabili behar duen fluxua da.

Bi hutsegite modu, bide-taula bat

Barneko bezeroak UDP socket bat irekitzen dio bere zerbitzariari, eta socket horrek uneko bide-taula jarraitzen du beste edozein bezala. Kanpoko tunelak jada bide lehenetsia badu, eskuko soinuaren paketeak kanpoko tunelera sartzen dira. Horrek soilik funtzionatzen du kanpoko zerbitzariak barnekoa harrapa dezakeenean eta beste aldeak fluxua eramatea onartzen duenean; bestela eskuko soinua blokeatu egiten da eta bezeroak berriro saiatzen du.

Bigarren hutsegitea zerbitzariaren pushetik dator. Ohiko pusha redirect-gateway def1 da, eta horrek 0.0.0.0/1 eta 128.0.0.0/1 instalatzen ditu bide lehenetsia ordezkatu beharrean. Beraz, bakoitzak bere /1 bikotea instalatzen duen bi bezeroek talka egiten dute, eta bikote berrienak irabazten du ia helmuga guztietarako. Bilatu bi aurrizki horiek taulan tunel bat hiltzen denean bigarrena konektatu ondoren, baliteke bide lehenetsia bera inoiz aldatu ez izana.

Markatu fluxua eta eman taula bat

Zuzendu hautatutako trafikoa mangle taulan markatuz eta politika arauan marka bat etorraraziz. Arauak taula dedikatu batera seinalatzen du, zeinen bide lehenetsia barneko gailua den, beraz markatutako paketeek soilik hartzen dute barneko bidea.

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 200

Arau-multzo honetako hutsegite gehienak bi akatsetatik datoz. Suhormak ezartzen duen markaren balioa eta arauak bat etorrarazten duen balioa berdinak izan behar dira, desadostasunak ez baitu ez errorerik ez efekturik sortzen. Gainera PREROUTINGek kanpotik iristen diren paketeak soilik ikusten ditu, beraz ostalari honetan hasitako konexioak OUTPUT arau bat behar du, bat-etortze berberarekin, markatua izan aurretik.

Kendu bideen jabetza bigarren bezeroari

Bi aukerek bigarren bezeroari taula editatzea eragozten diote, eta puntu desberdinetan jarduten dute. route-nopull aukerak ukatzen ditu bultzatutako bide-aukerak, beraz ez da ezer instalatzen. route-noexec bultzatutako aukerak bezeroaren ingurunera onartzen ditu, baina taula-aldaketa hook bati uzten dio, zerbitzariak zer proposatu zuen ikusi behar duzunean nahi duzun hain zuzen.

Hooka bultzatutako balioekin exekutatzen da bere ingurunean, eta onartu dituzun sarrerak soilik gehitu beharko lituzke. Egin ezazu idempotentea: hustu kudeatzen duen taula berreraiki aurretik, eta ez ezazu pentsatu aurreko exekuzioak egoera garbia utzi zuenik. Birsorkuntzak hooka berriro deitzen du, eta garbitu gabe gehitzen duen hookak bide bikoiztuak metatuko ditu.

Aukeratu jabe bakarra eta idatzi ezazu. Bi aukerak ezartzen dituen profilak, edo eskuzko script batekin lehiatzen den hookak, inork geroago azalduko ez duen taula sortzen du.

Finkatu bi zerbitzarien helbideak

Barneko zerbitzariak ostalari-bide bat behar du kanpoko gailutik, barneko bezeroa konektatu aurretik. Sarrera hori da barneko garraioa kanpoko tunelaren barruan mantentzen duena, bide lehenetsia jarrai dezan utzi beharrean.

ip route add 203.0.113.9/32 dev tun0
ip route get 203.0.113.9

Gehitu kanpoko zerbitzariarentzako ostalari-bide egokia taula nagusian ere, bestela birsorkuntzak kanpoko bezeroaren garraioa bere tunelera bidera dezake. Ordena ez da aukerakoa: gehitu sarrera hauek dagokion interfazea existitzen ondoren, hau da, konektatu ondoren exekutatzen den hook edo script baten bidez. Gailu itzal batera seinalatzen duen bidea kendu edo baztertu egiten da, beraz abioan idatzitako sarrera ez da zure suposatutako sekuentziaz gainditzen.

Egiaztatu bilaketa taula osoa irakurri beharrean. Bide-bilaketaren irteerak kernelak erabiliko duen gailua eta iturburu-helbidea aipatzen ditu, eta hori da bezeroak bere socket-a irekitzean lortzen duena.

Probatu katea eta egin hutsegitea ikusgai

Harrapatu kanpoko interfazean barneko bezeroa konektatzen ari den bitartean. Barneko eskuko soinuak kanpoko tunelaren barruan enkriptatutako karga gisa agertu behar luke; 203.0.113.9ra UDP soil gisa agertzen bada, ostalari-bidea falta da eta katea ez zen inoiz eraiki.

Isilka lotura fisikora itzultzen den katea da emaitzarik okerrena, interfazearen egoerak ezer ez duelako iragartzen eta barneko trafikoak iturburu-helbide okerretik irteten duelako. Kanpo tunela erortzean bigarren bezeroa zuzenean berriz konekta badaiteke, desgaitu bide hori edo lotu kanpoko interfazeari, hutsegitea ikusgai izan dadin.

Amaitu bi fluxu eta arauen dump batekin: markatutako konexio batek eta markatu gabeak bide desberdinak hartu behar lituzkete, eta ip rule show-k zuk nahi zenukeen lehentasuna zerrendatu beharko luke. Bi fluxuek bide bera hartzen badute, marka ez zaio aplikatzen uste duzun tokian.

Erlazionatutako artikuluak