Àwọn olùmúlò tí ó jìnnà kò dé ojú-ìkẹ́ẹ̀kejì nípasẹ̀ ibùdó VPN
Ìrìn kọjá ibùdó nílò ìwádìí mẹ́ta: ipa ọ̀nà olùmúlò, ipa ọ̀nà ìjáde ibùdó àti ipa ọ̀nà ìpadà ní ẹ̀gbẹ́ jíjìn, pẹ̀lú òfin ìgbékalẹ̀ kan tí ó ní ààlà.
Olùmúlò jíjìn kan so pọ̀ mọ́ ibùdó, ó dé olùpínpín fáìlì tó wà lórí LAN ti ibùdó fúnra rẹ̀, gbogbo nǹkan sì dàbí ẹni tó yá. Lẹ́yìn náà ó ṣí ìpínpín kan ní 10.20.0.50 ní ilé-iṣẹ́ àkọ́kọ́, tí ibùdó ń dé nípasẹ̀ ọ̀nà-ìsàlẹ̀ ojú-ìkẹ́ẹ̀kejì tí ó yàtọ̀, àkókò sì parí. Àwọn ọ̀nà-ìsàlẹ̀ méjèèjì wà ní ìmúṣẹ̀ àti àwọn kàǹtà méjèèjì ń pọ̀ sí, nítorí náà kò sí ọ̀nà-ìsàlẹ̀ tí ó bàjẹ́. Líla ibùdó kọjá ni ìpinnu ìtọ́sọ́nà mẹ́ta lórí ẹ̀rọ mẹ́ta, àti ọ̀nà-ìsàlẹ̀ kan ń gbé àwọn àkọ́sí tí a kọ́ ọ fún nìkan. Èyí ni ètò tí mo ń yẹ̀wò, àti pàtàkì tí ó fi hàn bóyá ìgbésẹ̀ kọ̀ọ̀kan tọ́.
Ìrìn kọjá nílò ìwádìí mẹ́ta, kì í ṣe ọ̀nà-ìsàlẹ̀ kan
Ẹ̀rọ kọ̀ọ̀kan ń ṣe ìbámu àkọ́sí tó gùn jùlọ tirẹ̀, ó sì gbàgbé rẹ̀. Kọ̀ǹpútà àgbáyé gbọ́dọ̀ fi 10.20.0.50 ránṣẹ́ sínú ọ̀nà-ìsàlẹ̀, kì í ṣe sí olùtọ́sọ́nà àdúgbò rẹ̀. Ibùdó gbọ́dọ̀ gba àpò tó dé lórí ẹnu-ọ̀nà ìwọlé jíjìn, kí ó sì fi í fún ẹnu-ọ̀nà ojú-ìkẹ́ẹ̀kejì. Ilé-iṣẹ́ àkọ́kọ́ gbọ́dọ̀ fi ìdáhùn fún àdírẹ́sì olùmúlò padà nípasẹ̀ ọ̀nà-ìsàlẹ̀ náà. Ọ̀kan nínú àwọn ìkùnà mẹ́ta náà yóò hàn bákan náà nínú aṣàwákiri: ìdákẹ́jẹ́.
Ìdí niyì tí dídán ọ̀nà-ìsàlẹ̀ kọ̀ọ̀kan wò lọ́nà ọ̀tọ̀ fi ń fi díẹ̀ hàn. Pípa ping sí àdírẹ́sì LAN ti ibùdó ń dán ìpinnu àkọ́kọ́ wò, pípa ping sí ibùdó láti ilé-iṣẹ́ àkọ́kọ́ ń dán èkẹta wò. Àpò tí ó kùnà ní orísun ẹgbẹ́ olùmúlò àti àfojúsùn ojú-ìkẹ́ẹ̀kejì, nítorí náà kọ́ àwọn àkọ́sí yẹn sílẹ̀ kọ́kọ́. Níbí ẹgbẹ́ náà ni 10.80.0.0/24, LAN ti ibùdó ni 10.10.0.0/24, ilé-iṣẹ́ àkọ́kọ́ sì ni 10.20.0.0/24.
Tì àkọ́sí jíjìn sí olùmúlò jíjìn
Lórí OpenVPN olùpínpín ìwọlé jíjìn, olùmúlò ń kọ́ àwọn ipa ọ̀nà ní àkókò ìsopọ̀. Láìsí push, olùmúlò tó ní ọ̀nà-ìsàlẹ̀ tí a pín ń fi 10.20.0.50 ránṣẹ́ sí ẹnu-ọ̀nà tirẹ̀, àpò kò sì wọ inú ọ̀nà-ìsàlẹ̀ rárá.
push "route 10.20.0.0 255.255.255.0"
Ipa ọ̀nà tí a tì ń wúlò nígbà tí olùmúlò bá so pọ̀, nítorí náà olùmúlò tó wà lórí ayélujára kò rí nǹkan kan títí tí yóò fi tún so pọ̀. Ṣàyẹ̀wò lórí olùmúlò: ip route get 10.20.0.50 ní Linux, route print ní Windows. Ojú-ìjáde gbọ́dọ̀ dárúkọ ẹnu-ọ̀nà ọ̀nà-ìsàlẹ̀.
push kò ràn ibùdó lọ́wọ́. Ó jẹ́ ìfiránṣẹ́ sí olùmúlò, kì í ṣe ipa ọ̀nà lórí olùpínpín àti kì í ṣe àṣẹ láti gbé lọ, nítorí náà ibùdó tó ní ìlà push pípé yóò ṣì ju ìṣàn náà sílẹ̀ ní ìgbésẹ̀ kan lẹ́yìn. Èyí ni ìdí tó wọ́pọ̀ tí àwọn ènìyàn fi parí pé push kùnà.
Fún ibùdó ní ipa ọ̀nà ìjáde gidi
Ibùdó nílò ìgbésẹ̀ tó kàn tirẹ̀ fún àkọ́sí ilé-iṣẹ́ àkọ́kọ́. Lórí ọ̀nà-ìsàlẹ̀ tí a tọ́sọ́nà, ìyẹn jẹ́ ipa ọ̀nà lasan nípasẹ̀ ẹnu-ọ̀nà ojú-ìkẹ́ẹ̀kejì, pàtàkì kan sì fi ipa ọ̀nà tí a yàn àti orísun tí a yàn hàn pẹ̀lú:
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
Níbi tí ẹsẹ̀ ojú-ìkẹ́ẹ̀kejì fúnra rẹ̀ jẹ́ OpenVPN, ipa ọ̀nà lè gbé inú àtúntò yẹn pẹ̀lú àdírẹ́sì ọ̀nà-ìsàlẹ̀ alábàákẹ́gbẹ́ gẹ́gẹ́ bí ẹnu-ọ̀nà: route 10.20.0.0 255.255.255.0 172.30.0.2. Ẹnu-ọ̀nà kì í ṣe àṣàyàn. Tí o bá fi í sílẹ̀, ìgbésẹ̀ tó kàn yóò bọ́ sínú àìpéni ipilẹ̀, tí ó yàtọ̀ láàrin olùmúlò onípo jíjìn kan àti ibùdó oníalábàákẹ́gbẹ́ púpọ̀.
IPsec tó dá lórí ìlànà yàtọ̀: kọ́nù ibùdó ń fi àpò ránṣẹ́ sí ẹnu-ọ̀nà LAN lasan, ìlànà sì ń mú un nígbà tí ó ń jáde, nítorí náà ipa ọ̀nà ọ̀nà-ìsàlẹ̀ yóò kùnà láti ṣe nǹkan kan tàbí yóò darí ìrìn kọjá ìlànà. Ṣọ́ra fún orísun nínú pàtàkì lókè, nítorí 10.10.0.1 dípò àdírẹ́sì ẹgbẹ́ túmọ̀ sí pé kọ́nù yàn àdírẹ́sì tí ẹ̀gbẹ́ jíjìn yóò kọ̀. iroute pẹ̀lú kì í ṣe ìdáhùn; ó sọ fún olùpínpín ẹni tí olùmúlò tó ní abẹ́-àwọ̀n lẹ́yìn ọ̀nà-ìsàlẹ̀ tirẹ̀, kì í ṣe ibi tí a ó fi ìrìn fún ojú-ìkẹ́ẹ̀ta ránṣẹ́.
Gùn ẹ̀gbẹ́ jíjìn dé ẹgbẹ́ olùmúlò
Ilé-iṣẹ́ àkọ́kọ́ ti bo LAN ti ibùdó, 10.10.0.0/24. Ẹgbẹ́ olùmúlò jẹ́ àkọ́sí kejì, ó sì gbọ́dọ̀ wà nínú àwọn olùyàn pẹ̀lú, bí bẹ́ẹ̀ kọ́ kò sí ìlànà tó bo ìdáhùn tí a darí sí 10.80.0.25. Alábàákẹ́gbẹ́ kọ̀ọ̀kan ń dárúkọ bákan náà pẹ̀lú àwọn àkójọ àkọ́sí láti ẹ̀gbẹ́ tirẹ̀:
# 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 ti ẹ̀rọ kan ni remote_ts ti èkejì. Dà á sílẹ̀ ibùdó sínú ilé-iṣẹ́ àkọ́kọ́, ẹgbẹ́ náà yóò yí padà, nítorí náà SA ọmọ kò ní dìde rárá.
Àtúntò àtijọ́ ipsec.conf ń lo leftsubnet tí a pín pẹ̀lú kọ́mà. Àjọṣepọ̀ ààbò tó ń ṣiṣẹ́ ń pa àwọn olùyàn tí ó ti ṣe ìdúnàádúrà mọ́, nítorí náà tún ọ̀nà-ìsàlẹ̀ gbé kalẹ̀ lẹ́yìn àtúnṣe. Olùyàn tí a yí ní 10:00 tí a sì dán wò pẹ̀lú SA tó dìde ní 09:40 yóò ṣì kùnà, nígbà tí fáìlì àtúntò ń hàn bí ẹni tó tọ́ ní gbogbo àkókò.
Lẹ́yìn náà ṣàyẹ̀wò ìgbésẹ̀ tó kẹ́yìn. ip route get 10.80.0.25 ní ìparí jíjìn gbọ́dọ̀ fi ọ̀nà-ìsàlẹ̀ hàn. Tí iṣẹ́ náà bá ń lo olùtọ́sọ́nà LAN gẹ́gẹ́ bí ẹnu-ọ̀nà àìpéni rẹ̀, olùtọ́sọ́nà yẹn pẹ̀lú nílò ipa ọ̀nà ìpadà, bí bẹ́ẹ̀ kọ́ ìdáhùn yóò kú níbẹ̀. Ṣíṣe tcpdump -ni eth1 host 10.80.0.25 lórí apá yẹn fi hàn bóyá ìdáhùn ti kúrò ní ìparí rárá.
Gba ìṣàn láàyè ní ibùdó
Ìgbékalẹ̀ gbọ́dọ̀ wà ní ṣíṣẹ́ àti ipa ọ̀nà gbọ́dọ̀ gba ààyè. Fi àwọn òfin mọ́ àwọn àkọ́sí méjì dípò gbígba gbogbo nǹkan láàrin àwọn ẹnu-ọ̀nà.
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
Àlẹ̀mọ́ ipa ọ̀nà ìpadà ni ìkùnà ìdákẹ́jẹ́ tó wà lẹ́gbẹ̀ẹ́ rẹ̀: nígbà tí ẹsẹ̀ méjèèjì bá wà lórí ẹnu-ọ̀nà ọ̀tọ̀ọ̀tọ̀, rp_filter=1 lè ju ìdáhùn sílẹ̀ nígbà tí kàǹtà òfin ìgbà láàyè kò yí rárá. Fi iptables -vnL FORWARD wé ṣáájú àti lẹ́yìn ìgbìyànjú. Òfin tí kò pọ̀ sí láé kò ní àṣeyọrí, nítorí náà wo ìpele kan nísàlẹ̀ dípò kíkọ ọ́ lẹ́ẹ̀kan sí i.
Tí ẹgbẹ́ kan ṣoṣo bá nílò ìrìn kọjá, fi ipa ọ̀nà sínú fáìlì olùmúlò kọ̀ọ̀kan lábẹ́ client-config-dir dípò fífi push àgbáyé gbòòrò. Source NAT lórí ibùdó tún yọ àìní ipa ọ̀nà ìpadà ní ẹ̀gbẹ́ jíjìn kúrò, ṣùgbọ́n ó fi àdírẹ́sì olùmúlò pamọ́, nítorí náà àwọn àkọsílẹ̀ ojú-ìkẹ́ẹ̀kejì àti àwọn òfin tó dá lórí àdírẹ́sì kò ní ìyàtọ̀ láàrin àwọn olùmúlò mọ́.
Ṣàyẹ̀wò láti ọ̀dọ̀ olùmúlò, lẹ́yìn náà yí padà ní ìtòlẹ́sẹẹsẹ òdìkejì
Dán ẹnu-ọ̀nà TCP wò, kì í ṣe ICMP nìkan, nítorí ping lè kọjá nígbà tí iṣẹ́ náà ṣì wà ní dídì. nc -vz 10.20.0.50 445 àti traceroute -n 10.20.0.50 láti ọ̀dọ̀ olùmúlò fi hàn bóyá ìgbésẹ̀ kejì ni àdírẹ́sì ọ̀nà-ìsàlẹ̀ ibùdó. Lórí ibùdó, tcpdump -ni tun0 host 10.20.0.50 àti àlẹ̀mọ́ kanna lórí ẹnu-ọ̀nà ojú-ìkẹ́ẹ̀kejì: ìbéèrè lórí méjèèjì láìsí ìdáhùn lórí ọ̀kankan ń gbé ìṣòro lọ sí ẹ̀gbẹ́ jíjìn.
Lẹ́yìn náà dán nǹkan tí ó gbọ́dọ̀ wà ní dídì wò. Tí ẹ̀rọ tí ẹgbẹ́ kò gbọ́dọ̀ dé ọ̀dọ̀ rẹ̀ rárá bá dáhùn pẹ̀lú, o ti ṣí ju ìrìn kọjá lọ, ó sì yẹ kí o dín àwọn òfin kù. Ibùdó tí ń gbé gbogbo nǹkan lọ sí gbogbo ẹ̀ka yóò ye ìdánwò àkọ́kọ́, yóò sì kùnà nínú èkejì.
Pa àkọsílẹ̀ ìyípadà mọ́, nítorí pé ohun mẹ́rin ti yí padà, mẹ́ta sì rọrùn láti gbàgbé: ipa ọ̀nà tí a tì, ipa ọ̀nà ibùdó, àwọn olùyàn àti àwọn òfin ògiri iná. Yí wọ́n padà ní ìtòlẹ́sẹẹsẹ òdìkejì, tún SA gbé kalẹ̀, kí o sì jẹ́ kí olùmúlò kan tún so pọ̀. Ìyípadà apá kan ń fi ipa ọ̀nà tó fi ọ̀nà-ìsàlẹ̀ tí kò bá a mu mọ́ hàn, ìyẹn sì ṣòro láti kà ju ìdákẹ́jẹ́ àkọ́kọ́ lọ. Ìwé ìtọ́ni OpenVPN 2.6 ń kọ push, route àti iroute sílẹ̀ fún ẹ̀yà rẹ.