Bí o bá tan OpenVPN client tí ó ní tunnel kikun lórí ẹ̀rọ tí o ń wọlé sí nípasẹ̀ SSH, ó lè gé igba náà láàárín ìṣẹ́jú kan, ẹ̀rọ náà kò sì ṣe àṣìṣe kankan. Tunnel kò yí bí àwọn packet ṣe dé ọ̀dọ̀ server padà; ó yí bí àwọn ìdáhùn ṣe jáde. Ní kété tí ọ̀nà àìlẹ́tọ̀ọ́ bá tọ́ka sí tun0, ìdáhùn sí SSH client rẹ wọ inú nẹ́tíwọ́kì olùpèsè, tí kò ní ọ̀nà ìpadà sí àdírẹ́sì rẹ. Ìsopọ̀ náà di àrépọ, ìgbìyànjú tó kàn yóò kùnà ní àkókò, daemon sì ń gbọ́ ní port 22 ní gbogbo àkókò.

Ka tábìlì ìdarí kí o tó ka log VPN. Log yóò sọ pé tunnel ti gòkè, ó sì tọ̀nà. Ìbéèrè ni pé irú interface wo ni a ń fi ọ̀kọ̀ọ̀kan ìdáhùn ránṣẹ́ sí, ìyẹn sì jẹ́ ìwádìí fún ọ̀kọ̀ọ̀kan packet nínú tábìlì tí tunnel ṣẹ̀ṣẹ̀ kọ padà.

Ìdí tí ìdáhùn fi ń jáde ní ẹnu-ọ̀nà tí kò tọ́

Àwọn packet tí ń wọlé ṣì ń dé lórí interface ti ara, nítorí pé VPN client kò lè yí bí internet ṣe dé àdírẹ́sì gbogbo ènìyàn ti server rẹ padà. Àwọn ìdáhùn jẹ́ ìpinnu ọ̀tọ̀: fún ọ̀kọ̀ọ̀kan packet, kernel ń wá ibi tí ó ń lọ, àti lẹ́yìn --redirect-gateway àkọsílẹ̀ àìlẹ́tọ̀ọ́ sọ pé tunnel. Ẹ̀nà ìjáde olùpèsè rí ibi tí òun kò ń ṣe ìránṣẹ́ fún, ó sì ń sọ packet náà nù.

Ààbò ti OpenVPN fúnra rẹ̀ bo ibi kan gan-an. Ìwé ìtọ́sọ́nà 2.6 ṣàlàyé --redirect-gateway gẹ́gẹ́ bí ọ̀nà ìtẹ̀síwájú: ó ń fi ọ̀nà host kún fún peer VPN nípasẹ̀ gateway tí a lò kí tunnel tó wà, kí traffic tí a ti fi àmì ṣe kò lè yí padà sínú ara rẹ̀, lẹ́yìn náà ó ń rọ́pò ọ̀nà àìlẹ́tọ̀ọ́. Ọ̀nà host yẹn wà fún peer nìkan. SSH client rẹ jẹ́ àdírẹ́sì internet mìíràn lásán, kò sì gba ìyọkúrò kankan.

Ó yẹ kí a yọ àṣìṣe prefix kan kúrò ní ìbẹ̀rẹ̀. ip route add -net 0.0.0.0 gw 10.8.0.1 dev tun0 tí kò ní gígùn ń bá àdírẹ́sì kan ṣoṣo 0.0.0.0 mu, kì í bá internet mu; ó gbọ́dọ̀ jẹ́ 0.0.0.0/0. Bí gbígbà àìlẹ́tọ̀ọ́ bá sì ba ìrìnàjò tunnel fúnra rẹ̀ jẹ́, fi ibi ìparí kún gẹ́gẹ́ bí ọ̀nà host nípasẹ̀ interface ti ara, ní lílo àdírẹ́sì gidi olùpèsè.

Fi àdírẹ́sì SSH client rẹ mú fún àtúnṣe lẹ́sẹ̀kẹsẹ̀

Àtúnṣe tó yára jùlọ ni ọ̀nà host fún àdírẹ́sì client rẹ nípasẹ̀ gateway tí server lò kí tunnel tó wà. Ní ẹ̀gbẹ́ rẹ, wá àdírẹ́sì tí server yóò rí, lẹ́yìn náà ka tábìlì server kí o lè mọ gateway àtijọ́:

curl -s https://ifconfig.co
ip route

Lórí server, fi ìyọkúrò kún kí client tó bẹ̀rẹ̀. Àwọn àdírẹ́sì níbí jẹ́ àwòrán; ìrísí ni ó ṣe pàtàkì:

sudo ip route add 80.128.240.55 via 192.168.178.1

Èyí ni àtúnṣe tí a lò nínú ọ̀ràn tí a ròyìn, ó sì ń ṣiṣẹ́ lẹ́sẹ̀kẹsẹ̀. Ó tún jẹ́ aláìléwu ní ọ̀nà méjì tí a lè fojú rí: ọ̀nà náà ń pòórá nígbà ìtúnúntò, ó sì di aṣìṣe ní àkókò tí ISP rẹ bá fún ọ ní àdírẹ́sì mìíràn. Kà á gẹ́gẹ́ bí ìgbésẹ̀ pàjáwìrì kí o sì mọ̀ọ́mọ̀ jẹ́ kí ó dúró, nípasẹ̀ ẹ̀ka nẹ́tíwọ́kì tàbí ìkọ̀ dispatcher, tàbí gbà pé ó jẹ́ ìgbà díẹ̀ kí o sì kọ ọ̀nà ìmúpadà.

Má jẹ́ kí client gba ọ̀nà àìlẹ́tọ̀ọ́

Àṣàyàn tó mó jùlọ ni kí tunnel má ṣe rọ́pò ọ̀nà àìlẹ́tọ̀ọ́ rárá. route-nopull, ní lílò pẹ̀lú --client tàbí --pull, ń gba àwọn àṣàyàn tí a tì jáde àyàfi àwọn ọ̀nà, block-outside-dns àti àwọn àṣàyàn irú DHCP bí server DNS, nítorí náà ìwọ ń fi àwọn prefix tí o nílò kún. Irinṣẹ́ tó dín jùlọ ni àlẹ̀mọ́ fífà, tí ó ń sọ ìtọ́nisọ́nà kan tó ní ìṣòro nù, tí ó sì ń pa ìyókù mọ́:

route-nopull
pull-filter ignore "redirect-gateway"

Lo ọ̀kan tàbí èkejì, kì í ṣe méjèèjì, kí o sì mọ̀ kedere ohun tí ó ń yí padà. Láìsí ọ̀nà àìlẹ́tọ̀ọ́ nípasẹ̀ tunnel, server kò ní ṣe àyẹ̀wò internet nípasẹ̀ olùpèsè mọ́; ó kìkì ń dé ibi tí o ti darí ní kedere. Bí tunnel kikun bá jẹ́ gbogbo èròǹgbà ètò náà, èyí ni yíyí tí kò tọ́, ọ̀nà host tó wà lókè ni ó tọ́.

Pín ọ̀nà ìpadà ní ìbámu pẹ̀lú orísun tàbí ìsopọ̀

Nígbà tí àdírẹ́sì tí ń wọlé bá dúró ṣinṣin, ìlànà orísun ń pa àwọn ìdáhùn mọ́ ní àdúgbò láìfi ọwọ́ kan àwọn ọ̀nà tunnel fúnra rẹ̀. Fún àdírẹ́sì interface ti ara ní tábìlì tirẹ̀ tí ó ní prefix LAN àti àìlẹ́tọ̀ọ́ ti ara, lẹ́yìn náà yan tábìlì yẹn fún traffic tí ó ń ti ibẹ̀ wá:

ip rule add from 192.168.1.11 table 128
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1

Èyí ń ṣiṣẹ́ nítorí pé àwọn ìdáhùn sí ìsopọ̀ SSH tí ń wọlé ti inú àdírẹ́sì tí client so mọ́ wá. Ọ̀ràn tí a ròyìn nínú èyí tí gbogbo iṣẹ́ tí ń wọlé gbọ́dọ̀ máa ṣiṣẹ́ lò gan-an irú ìrísí yìí. Nígbà tí àdírẹ́sì tí ń wọlé bá ń ṣẹ́gun tàbí ọ̀nà jẹ́ alágbèéká, fi àmì sí ìsopọ̀ náà dípò: fi àmì conntrack sí packet àkọ́kọ́ tí ó ti interface ti ara wá, da àkọ́wé rẹ̀ sórí àwọn packet ìdáhùn nínú OUTPUT, kí o sì darí àwọn packet tí a fi àmì sí nípasẹ̀ tábìlì tí ó tọ́ka sí gateway ti ara.

iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
ip route add default via 192.168.1.1 dev eth0 table 3412
ip rule add fwmark 4321 table 3412

Pa àmì ìsopọ̀, àmì firewall àti nọ́mbà tábìlì mọ́ ọ̀tọ̀ọ̀tọ̀ nígbà ìdánwò. Lílò nọ́mbà kan fún ipa méjì ń dá ìlànà tí ó dàbí ẹni pé ó tọ́, tí ó sì ń kọlu àwọn packet tí kò tọ́. Àkọsílẹ̀ àìlẹ́tọ̀ọ́ ti tábìlì tún nílò via pẹ̀lú gateway LAN lórí ìsopọ̀ Ethernet lasan; dev eth0 òró ń ṣiṣẹ́ nìkan nígbà tí interface jẹ́ kókó-sí-kókó tàbí tí a bá yanjú ìfò mìíràn ní ọ̀nà mìíràn. Ẹ̀rọ Jessie tí a ròyìn wà lórí ìsopọ̀ tí ìrísí òró ti ṣiṣẹ́, èyí kì í ṣe ìlànà ìpínlẹ̀ tí a lè dà.

Ṣàyẹ̀wò láìti ara rẹ pa mọ́ síta

Má ṣe ìdánwò nípasẹ̀ gígé ìsopọ̀. Jẹ́ kí igba àkọ́kọ́ wà ní ṣíṣí, gbé tunnel sókè, kí o sì béèrè lọ́wọ́ kernel ọ̀nà wo ni àdírẹ́sì rẹ fúnra rẹ̀ yóò gbà:

ip route get 80.128.240.55

Ìdáhùn yẹ kí ó dárúkọ interface ti ara àti gateway àtijọ́, kì í ṣe tunnel. Lẹ́yìn náà ṣí ìsopọ̀ SSH kejì; ìyẹn ni ìdánwò gidi, nítorí pé igba àtijọ́ lè wà láàyè lórí ipò tí ìsopọ̀ tuntun kò lè tún ṣe. Bí èkejì bá di àrépọ nígbà tí àkọ́kọ́ ṣì ń dáhùn, ìlànà náà kò bá traffic pàtàkì mu rí, àwọn àmì tàbí àdírẹ́sì orísun ni ibi tí o gbọ́dọ̀ wò.

Pa console tí kò sí nínú band mọ́ ní àárọ̀ pẹ̀lú ní gbogbo ìdánilẹ́kọ̀ọ́. Server tí ọ̀nà àbáwọlé rẹ̀ kan ṣoṣo ni tunnel tí o ṣẹ̀ṣẹ̀ já ni a kò lè tún nípasẹ̀ tunnel yẹn, bí o bá sì kọ àwọn nọ́mbà tábìlì àti prefix tí o fi kún, ìpadàsẹ́yìn yóò rọrùn.

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