Fjartengdir notendur ná ekki öðrum staðnum í gegnum VPN-hnútinn
Flutningur í gegnum hnútinn krefst þriggja uppflettinga: leið biðlarans, útleið hnútsins og afturleið hinum megin, auk einnar afmarkaðrar framsendingarreglu.
Fjartengdur notandi tengist hnútnum, nær skráarserfinum á eigin LAN-hnútsins, og allt virðist heilbrigt. Svo opnar hann sameign á 10.20.0.50 í höfuðstöðvunum, sem hnúturinn nær að í gegnum aðskilinn síðu-til-síðu göng, og það rennur út á tíma. Bæði göngin eru uppi og báðir teljarar hækka, svo ekkert göng er bilað. Að fara í gegnum hnútinn eru þrjár leiðarákvarðanir á þremur tækjum, og göng flytja aðeins þau forskeyti sem þau voru byggð fyrir. Hér er röðin sem ég athuga, og skipunin sem sýnir hvort hvert skref er satt.
Flutningur krefst þriggja uppflettinga, ekki eins gangs
Hvert tæki gerir sína eigin samsvörun lengsta forskeytis og gleymir henni. Fartölvan verður að senda 10.20.0.50 inn í göngin í stað þess að senda það á staðbundna beininn sinn. Hnúturinn verður að taka pakka sem barst á viðmót fjartengingar og afhenda hann viðmóti síðu-til-síðu. Höfuðstöðvarnar verða að senda svar fyrir heimilisfang notandans til baka í gegnum göngin. Ef eitt af þremur bregst virðist það eins í vafranum: þögn.
Þess vegna sannar prófun hvers gangs fyrir sig svo litlu. Að pikka LAN-heimilisfang hnútsins æfir fyrstu ákvörðunina, og að pikka hnútinn frá höfuðstöðvunum æfir þriðju. Pakkinn sem bregst hefur notendahópinn sem uppruna og annan staðinn sem áfangastað, svo skrifaðu þau forskeyti niður fyrst. Hér er hópurinn 10.80.0.0/24, LAN hnútsins 10.10.0.0/24 og höfuðstöðvarnar 10.20.0.0/24.
Ýttu fjarlæga forskeytinu út til fjartengda biðlarans
Á OpenVPN fjartengingarþjóni lærir biðlarinn leiðir við tengingu. Án push sendir biðlari með skiptum göngum 10.20.0.50 á eigin gátt og pakkinn fer aldrei inn í göngin.
push "route 10.20.0.0 255.255.255.0"
Ýtt leið tekur gildi þegar biðlarinn tengist, svo notandi sem er áfram á netinu sér ekkert fyrr en hann tengist aftur. Athugaðu á biðlaranum: ip route get 10.20.0.50 á Linux, route print á Windows. Úttakið ætti að nefna göngviðmótið.
Push hjálpar hnútnum ekki. Það er skilaboð til biðlarans, ekki leið á þjóninum og ekki leyfi til að framsenda, svo hnútur með fullkomna push-línu sleppir flæðinu samt einu hoppi seinna. Þetta er venjulega ástæðan fyrir því að fólk ályktar að push hafi mistekist.
Gefðu hnútnum raunverulega útleið
Hnúturinn þarf sína eigin næstu hopp fyrir forskeyti höfuðstöðvanna. Á leiðbeint göngum er það venjuleg leið í gegnum viðmót síðu-til-síðu, og ein skipun sýnir bæði valda leið og valinn uppruna:
ip route get 10.20.0.50 from 10.80.0.25
sudo ip route add 10.20.0.0/24 via 172.30.0.2 dev s2s0
Þegar síðu-til-síðu fóturinn er sjálfur OpenVPN getur leiðin verið í þeirri stillingu með göngheimilisfang jafningjans sem gátt: route 10.20.0.0 255.255.255.0 172.30.0.2. Gáttin er ekki valfrjáls. Slepptu henni og næsta hopp fellur á sjálfgefið gildi útfærslunnar, sem er mismunandi milli eins-jafningja biðlara og fjöl-jafningja hnúts.
Stefnubundið IPsec er öðruvísi: kjarni hnútsins sendir pakkann á venjulega LAN-gátt sína og stefnan grípur hann á útleið, svo göngleið gerir annaðhvort ekkert eða beinir umferð fram hjá stefnunni. Fylgstu með upprunanum í skipuninni hér að ofan, því 10.10.0.1 í stað heimilisfangs hópsins þýðir að kjarninn valdi heimilisfang sem hinum megin verður hafnað. iroute er heldur ekki svarið; það segir þjóninum hvaða biðlari á undirnet bak við eigin göng, ekki hvert á að senda umferð fyrir þriðja staðinn.
Lengdu hina hliðina út að notendahópnum
Höfuðstöðvarnar ná þegar yfir LAN hnútsins, 10.10.0.0/24. Notendahópurinn er annað forskeyti og verður líka að vera í valunum, annars nær engin stefna yfir svar sem er beint á 10.80.0.25. Hver jafningi nefnir sama par forskeytamengja frá sinni hlið:
# strongSwan swanctl.conf, on the hub
local_ts = 10.10.0.0/24, 10.80.0.0/24
remote_ts = 10.20.0.0/24
# on the headquarters peer
local_ts = 10.20.0.0/24
remote_ts = 10.10.0.0/24, 10.80.0.0/24
local_ts eins tækis er remote_ts hins. Afritaðu blokk hnútsins yfir í höfuðstöðvarnar og parinu er snúið við, svo child SA kemst aldrei upp.
Eldri ipsec.conf setningagerðin notar kommuaðskilið leftsubnet. Virka öryggissamtengið heldur valunum sem það samdi um, svo endurreistu göngin eftir breytinguna. Valið sem var breytt klukkan 10:00 og prófað gegn SA sem kom upp klukkan 09:40 bregst enn, á meðan stillingarskráin virðist rétt allan tímann.
Athugaðu svo síðasta hoppið. ip route get 10.80.0.25 á fjarlæga endapunktinum ætti að vísa inn í göngin. Ef þjónustan notar LAN-beini sem sjálfgefna gátt þarf sú beini líka afturleiðina, annars deyr svarið þar. Að keyra tcpdump -ni eth1 host 10.80.0.25 á þeim hluta sýnir hvort svarið yfirgaf endapunktinn yfirhöfuð.
Leyfðu flæðið á hnútnum
Framsending verður að vera virk og slóðin leyfð. Afmarkaðu reglurnar við forskeytin tvö í stað þess að samþykkja allt milli viðmótanna.
sysctl -w net.ipv4.ip_forward=1
iptables -I FORWARD -i tun0 -o s2s0 -s 10.80.0.0/24 -d 10.20.0.0/24 -j ACCEPT
iptables -I FORWARD -i s2s0 -o tun0 -s 10.20.0.0/24 -d 10.80.0.0/24 -j ACCEPT
Síun afturleiðar er þögla bilunin við hliðina: þegar fæturnir tveir eru á mismunandi viðmótum getur rp_filter=1 sleppt svarinu á meðan teljari samþykktarreglunnar hreyfist aldrei. Berðu saman iptables -vnL FORWARD fyrir og eftir tilraun. Regla sem hækkar aldrei næst ekki, svo líttu laginu neðar í stað þess að endurskrifa hana.
Ef aðeins einn hópur þarf flutning skaltu setja leiðina í skrá fyrir hvern biðlara undir client-config-dir í stað þess að víkka alþjóðlega pushið. Upprunanetadresstaðfærsla á hnútnum fjarlægir líka þörfina fyrir afturleið hinum megin, en hún felur heimilisfang notandans, svo skrár fjarlæga staðarins og heimilisfangsbundnar reglur hætta að greina notendur.
Athugaðu frá biðlaranum og rúllaðu svo til baka í öfugri röð
Prófaðu TCP-gátt, ekki bara ICMP, því ping getur farið í gegn á meðan þjónustan er áfram blokkuð. nc -vz 10.20.0.50 445 og traceroute -n 10.20.0.50 frá biðlaranum sýna hvort annað hoppið er göngheimilisfang hnútsins. Á hnútnum tcpdump -ni tun0 host 10.20.0.50 og sama sía á viðmóti síðu-til-síðu: beiðni á báðum án svars á hvorugu færir vandamálið til hinnar hliðarinnar.
Prófaðu svo eitthvað sem verður að vera lokað. Ef hýsill sem hópurinn ætti aldrei að ná svarar líka hefurðu opnað meira en flutning og ættir að þrengja reglurnar. Hnútur sem framsendir allt til hvers sprota stenst fyrra prófið og fellur á því seinna.
Haltu lista fyrir afturköllun, því fjórum hlutum var breytt og þrír eru auðveldir að gleyma: ýttu leiðinni, leið hnútsins, valunum og eldveggjarreglunum. Afturkallaðu þau í öfugri röð, endurreistu SA og láttu einn notanda tengjast aftur. Hluta afturköllun skilur eftir leið sem vísar á göng sem passa ekki lengur, sem er erfiðara að lesa en upprunalega þögnin. OpenVPN 2.6 handbókin skrásetur push, route og iroute fyrir þína útgáfu.