Client náà sọ pé ó ti so mọ́, àdírẹ́sì tunnel náà ń dáhùn ping, kò sì sí ohunkóhun lórí LAN ọ́fíìsì tí ń dáhùn. Mo máa ń rí èyí lẹ́yìn fẹ́rẹ̀ẹ́ gbogbo ìgbéga client, ìmọ̀lára àkọ́kọ́ ni láti ṣí firewall, èyí tí ó sábà jẹ́ ìgbésẹ̀ tí kò tọ́: tunnel náà wà ní àìléwu, ìmọ́lẹ̀ náà sì wà ní ọ̀kan nínú àwọn ìfòòro mẹ́ta tí packet gbọ́dọ̀ kọjá. Rìn ọ̀nà náà ní ìtòlẹ́sẹẹsẹ tí packet náà gbà, kọ́kọ́ ọ̀nà client, lẹ́yìn náà ìfiránṣẹ́ server, lẹ́yìn náà ìrìn àjò ìpadà, ìwọ yóò sì rí ẹni tí ó ni àṣìṣe náà láàárín ìṣẹ́jú mélòó kan.

Ìgbésẹ̀ kìíní: wo ìpinnu ìtọ́nisọ́nà client

Kí o tó fọwọ́ kan server, fi hàn pé client ń fi packet ránṣẹ́ sínú tunnel. Béèrè lọ́wọ́ kernel irú interface tí yóò lò fún host LAN kan pàtó, dípò kíkà gbogbo tábìlì:

ip route get 192.168.50.10

Bí ìdáhùn náà bá dárúkọ adapter ti ara rẹ àti ẹnubodè ọ́fíìsì, kò sí ìyípadà kankan ní ẹ̀gbẹ́ server tí ó lè ràn ọ́ lọ́wọ́. OpenVPN ń pín àwọn ọ̀nà nígbà tí server bá ti tì wọ́n nìkan, nítorí náà wá push "route 192.168.50.0 255.255.255.0" nínú ètò server, lẹ́yìn náà so client náà mọ́ pẹ̀lú. Ọ̀pọ̀ jùlọ àwọn client máa ń lo àwọn ọ̀nà tí a tì nígbà ìsopọ̀, kì í ṣe nígbà tí o bá tún gbé profáìlì wọ̀.

Lórí Windows ìbéèrè kan náà ní àṣẹ mìíràn. Find-NetRoute -RemoteIPAddress 192.168.50.10 ń tẹ̀wé interface àti ìfòòro tí ó kàn tí stack yóò yan, route print -4 sì fi hàn bóyá prefix tí a tì wà rárá.

Ìgbésẹ̀ kejì: jẹ́rìí pé server yóò fi packet ránṣẹ́ síwájú

Bí ọ̀nà client bá tọ́, packet yóò dé ọdọ server, server sì gbọ́dọ̀ gbà láti fi ránṣẹ́ síwájú. Yíyí kernel ni ẹnubodè àkọ́kọ́, sysctl net.ipv4.ip_forward sì gbọ́dọ̀ dá 1 padà. Síṣètò rẹ̀ pẹ̀lú echo 1 > /proc/sys/net/ipv4/ip_forward ń ṣiṣẹ́ títí di ìtúnbẹ̀rẹ̀ tí ó kàn, ìdí nìyẹn tí ẹ̀sùn kan náà fi ń padà wá lẹ́yìn àwọn ọ̀sẹ̀.

Kọ ọ́ sí ibi tí yóò ye ìtúnbẹ̀rẹ̀ kọjá:

echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/99-openvpn-forward.conf
sysctl --system

Ẹnubodè kejì ni tábìlì àlẹ̀mọ́. Host tí Docker wà lórí rẹ̀ sábà ní ìlànà FORWARD tí ó jẹ́ DROP, tunnel náà sì jogún ìpinnu yẹn. iptables -L FORWARD -v -n ń fi ìlànà àti àwọn olùka packet hàn; bí ìlànà bá jẹ́ DROP, ìfiránṣẹ́ síwájú nílò àṣẹ tí ó ṣe kedere fún ọ̀nà láti tunnel sí LAN àti ọ̀kan fún ìdáhùn.

Ìgbésẹ̀ kẹta: tẹ̀lé packet lọ sí LAN kí o sì wá ìdáhùn

Wò àwọn ẹ̀gbẹ́ méjèèjì server lẹ́sẹẹsẹ. Gbà ní tunnel àti ní interface LAN, pẹ̀lú àlẹ̀mọ́ sí client kan àti host kan kí àbájáde lè wà ní òye:

tcpdump -ni tun0 host 192.168.50.10
tcpdump -ni eth0 host 192.168.50.10

Àwọn ìbéèrè tí ó farahàn lórí tun0 àti lẹ́ẹ̀kan sí i lórí eth0 pẹ̀lú orísun 10.8.0.x, tí ìdákẹ́jẹ́ sì tẹ̀lé, túmọ̀ sí pé packet náà dé, ìdáhùn náà sì lọ sí ibòmíì. Host LAN dáhùn ẹnubodè àìdádúró rẹ̀, ẹnubodè yẹn kò ní ọ̀nà fún àkójọ VPN, ìdáhùn náà sì kú lórí router LAN. Píping host LAN láti ọdọ server kò fi ohunkóhun hàn nípa ọ̀nà yìí, nítorí pé ọ̀nà yẹn kì í kọjá tunnel rárá.

Ìgbésẹ̀ kẹrin: yan láàárín ìtúmọ̀ àti ọ̀nà ìpadà

Ìtúnṣe méjì ń dí ihò náà, ìyàn náà sì ní àwọn àbájáde tí ó rékọjá bóyá ping ń ṣiṣẹ́. Ìtúmọ̀ orísun ń sọ server di olùránṣẹ́ tí ó hàn:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Fi ìlànà náà mọ́ àkójọ àti interface LAN, lẹ́yìn náà sọ ọ́ di títí láé, bí bẹ́ẹ̀ kọ́ àtúnlò firewall tí ó kàn yóò yọ ìtúnṣe rẹ kúrò ní ìdákẹ́jẹ́. Iye náà ni ìdánimọ̀: gbogbo client yóò dà bíi server VPN nínú àwọn àkọsílẹ̀ LAN àti àwọn ìlànà ànfààní, àti per-client policy becomes guesswork.

Ọ̀nà tí ó dúró ṣinṣin fún 10.8.0.0/24 lórí router LAN, tí ó ń tọ́ka sí server VPN, ń jẹ́ kí àwọn àdírẹ́sì client hàn, ó sì jẹ́ ìdáhùn tí ó dára jùlọ fún ìgbà pípẹ́ nígbà tí router yẹn jẹ́ tirẹ. Ọ̀pọ̀ ojú-ìwé ń ṣiṣẹ́ méjèèjì fún ìgbà díẹ̀, NAT fún ìtúnṣe lẹ́sẹẹsẹ àti ọ̀nà náà lẹ́yìn tí a bá kọ ìlànà firewall. Bí server bá jẹ́ alábàákẹ́gbẹ́ ojú-ìwé-sí-ojú-ìwé dípò àkójọ, ẹ̀gbẹ́ server pẹ̀lú nílò iroute fún subnet tí ó jìnnà, bí bẹ́ẹ̀ kọ́ ọ̀nà alábàákẹ́gbẹ́ wà ṣùgbọ́n a kì í so ìrìn àjò client mọ́ ọn.

Ìgbésẹ̀ karùn-ún: jẹ́rìí láti ọdọ client kí o sì kọ ohun tí ó yípadà

Pa ìyí náà ní ọdọ client, kì í ṣe ní ọdọ server. So mọ́ iṣẹ́ gidi kan lórí host LAN, lẹ́yìn náà jẹ́rìí pé àwọn olùka ìtúmọ̀ ti lọ pẹ̀lú iptables -t nat -L POSTROUTING -v -n, nítorí ìlànà tí kò ní packet jẹ́ ìlànà tí kò báramu rárá. conntrack -L -s 10.8.0.5 ń fi ṣíṣàn àti ipò rẹ̀ hàn nígbà tí o bá nílò ẹ̀rí pé a ń tẹ̀lé ọ̀nà ìpadà.

Fi àkọsílẹ̀ sílẹ̀ nínú ètò server: subnet wo, interface wo, ìlànà wo, àti bóyá router LAN ní ọ̀nà ìpadà. Ìgbà tí ìgbéga client bá pa ọ̀nà tí a tì rẹ́ nù lẹ́yìn náà, àkọsílẹ̀ yẹn yóò yí ìpàdé ìpaná padà di ìtúnṣe ìlà kan.

Àwọn àpilẹ̀kọ tó jọra