Firewall tí ó ń gba port VPN nìkan kì í ṣe ìlànà kan. Ó jẹ́ ìpinnu mẹ́ta ọ̀tọ̀ọ̀tọ̀ tí ó ń kan nọ́mbà port kan náà: ẹ̀wọ̀n ẹnu-ọ̀nà ń pinnu ohun tí ó lè dé ọ̀dọ̀ ìlànà àdúgbò, ẹ̀wọ̀n gbígbé lọ ń pinnu ohun tí ó lè kọjá láti inú ẹrọ ní orúkọ àwọn alábàákẹ́gbẹ́ tunnel, àti tábìlì NAT ń tún àdírẹ́sì orísun kọ nígbà tí ó ń jáde. Tí o bá ṣe ọ̀kan nínú wọn lọ́nà tí kò tọ́, èsì kì í sábà jẹ́ ìdánuṣe mímọ́. Ìwọ yóò rí ẹrọ tí ó ń gba alábàákẹ́gbẹ́ ṣùgbọ́n tí kò ń gbé ohunkóhun, tàbí ẹrọ tí ó dàbí ẹni tí ó ti dí títí ẹnìkan yóò fi ka ìtòlẹ́sẹẹsẹ ẹ̀wọ̀n.

Port kan ṣoṣo tí a kò lè dí

Olùgbọ́ VPN gbọdọ̀ gba àwọn ìsopọ̀ láti àwọn àdírẹ́sì tí o kò lè sọ ṣáájú, nítorí náà ó jẹ́ iṣẹ́ gbangba nípa ìtumọ̀. Èyí ni ìyàtọ̀ kan ṣoṣo tí àpẹẹrẹ náà dúró lé: port UDP kan fún OpenVPN, port UDP kan fún WireGuard, port TCP kan fún VPN SSL. Gbogbo ohun mìíràn wà lẹ́yìn tunnel, ìyẹn ni pé àwọn iṣẹ́ ohun èlò gbọdọ̀ so mọ́ àdírẹ́sì tunnel tàbí loopback, kì í ṣe gbogbo interface.

Bí ó ti wù kí ó rí, sísopọ̀ kì í ṣe ìmúṣẹ. Ìlànà tí a so mọ́ 0.0.0.0 wà ní àrúgbọ́n nìkan tí ìlànà kan bá gbà á, ìlànà àkọ́kọ́ sì ni àbá fún ìrìnàjò tí kò bá ìlànà kankan mu, kì í ṣe ìlànà tí ń darí port. Ìgbà tí a gbé ka orí ìkọ̀ rẹ ṣì jẹ́ ìgbà, àti yíyọ iṣẹ́ kúrò ní àdírẹ́sì gbangba jẹ́ ìmúdára tí ó dúró fúnra rẹ̀, kì í ṣe àròpo ẹ̀wọ̀n.

Ẹnu-ọ̀nà, gbígbé lọ àti NAT ń dáhùn àwọn ìbéèrè ọ̀tọ̀ọ̀tọ̀

Ìrìnàjò ẹnu-ọ̀nà wà fún ẹrọ fúnra rẹ̀, nítorí náà olùgbọ́ VPN àti ọ̀nà ìṣàkóso wà níbẹ̀. Ìrìnàjò gbígbé lọ ń kọjá lára ẹrọ, àwọn alábàákẹ́gbẹ́ tunnel sì nílò rẹ̀ pẹ̀lú net.ipv4.ip_forward=1. Ìṣètò àtijọ́ tí ó já ní ààbọ̀ ń gba ìṣàn jáde ṣùgbọ́n ó gbàgbé ìtọ́sọ́nà ìpadà, nítorí náà alábàákẹ́gbẹ́ parí ìfọwọ́sowọ́pọ̀ kí ó sì ma ṣe gbé ohunkóhun; ìlànà conntrack fún ìrìnàjò tí a ti fi ìdí rẹ̀ múlẹ̀ àti tí ó ní ìbáṣepọ̀ ń bo ìtọ́sọ́nà yẹn.

NAT ni ìbéèrè kẹta. Láìsí àtúntò ní postrouting, àwọn pákítì tí a gbé lọ ń jáde pẹ̀lú orísun àdáni tunnel, a sì ń sọ̀ wọ́n nù ní òkè, nítorí kò sí nẹ́tíwọ́kì kan lẹ́yìn ẹrọ tí ó mọ bí a ṣe ń darí àkójọpọ̀ padà. Àfọ̀mọ́ orísun nínú ìlànà yẹn gbọdọ̀ bá àkójọpọ̀ VPN mu, kì í ṣe àdírẹ́sì ẹrọ fúnra rẹ̀, bẹ́ẹ̀ sì ni fún ìlànà gbígbé lọ tí ó ń dárúkọ subnet àwọn alábàákẹ́gbẹ́.

IPv6 jẹ́ ìlànà kejì, kì í ṣe ìrònú tí ó wá lẹ́yìn. Ẹrọ tí ó ní ẹ̀wọ̀n IPv4 líle àti ìlànà ṣíṣí lórí ip6tables kò ti dí ohunkóhun; àwọn iṣẹ́ ṣì wà ní àrúgbọ́n nípasẹ̀ ìdílé kejì. Bóyá kí o ṣe àwòrán àkójọpọ̀ ìlànà pẹ̀lú ip6tables, tàbí kí o pa IPv6 mọ́nà lórí interface gbangba, kí o sì kọ èyí tí o yàn.

Ìpìlẹ̀ tí a lè kà ní ẹ̀ẹ̀kan

Bẹ̀rẹ̀ ní ìkọ̀, lẹ́yìn náà ṣàfikún kìkì ohun tí ẹrọ nílò. Ní àkọ́kọ́ loopback àti àwọn ìdáhùn, lẹ́yìn náà ọ̀nà ìṣàkóso, lẹ́yìn náà olùgbọ́ tunnel, lẹ́yìn náà ìlànà gbígbé lọ fún àwọn alábàákẹ́gbẹ́:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -m conntrack --ctstate NEW -j ACCEPT
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Àwọn orúkọ interface, port àti àkójọpọ̀ jẹ́ ibi ìdúró; kà wọ́n láti ọ̀dọ̀ sáfà dípò dídà wọ́n. Pípa èsì mọ́ ṣe pàtàkì bí kíkọ ọ́, nítorí àkójọpọ̀ ìlànà tí ó ń gbé nínú ìrántí nìkan yóò pòórá ní ìgbà àtúnbẹ̀rẹ̀ tí ó ń bọ̀, yóò sì tún ẹrọ ṣí ní ìdákẹ́jẹ́ẹ́. Jẹ́ kí ó dúró pẹ̀lú ẹ̀rọ ìpínkiri, kí o sì pa ẹ̀dà mọ́ ní òde ẹrọ fún ọjọ́ tí ẹrọ kò ní gbé.

Dídí port tí ó gbẹ̀yìn láìpàdánù ẹrọ

Ìdẹkùn wà nínú àpẹẹrẹ náà. Tí SSH bá wà nípasẹ̀ tunnel nìkan, iṣẹ́ VPN tí ó kùnà yóò gbé SSH pẹ̀lú, ọ̀nà ìpadà kan ṣoṣo sì lè jẹ́ console tí o kò tí ì ṣí rí. Kí o tó dí port gbangba tí ó gbẹ̀yìn, jẹ́rìí pé console yẹn wà àti pé o lè lò ó ní ti gidi, tàbí pa ọ̀nà ìṣàkóso tóóró kan mọ́ tí kò sinmi lórí tunnel: SSH láti àdírẹ́sì àfojúsùn, kọ́kọ́rọ́ nìkan, ìjẹ́rìí ọ̀rọ̀ ìkọ̀kọ̀ tí a pa.

Lo ìyípadà náà láti inú ìpàdé tí a ti fi ìdí rẹ̀ múlẹ̀ tẹ́lẹ̀, kì í ṣe nípasẹ̀ ìsopọ̀ tí o fẹ́ ṣe àyọkúrò. Ṣètò ìpadàsẹ́yìn kí àṣìṣe lè parí dípò kí ó di ayérayé, bíi iṣẹ́ systemd-run --on-active=10min tí ó ń mú àkójọpọ̀ ìlànà tẹ́lẹ̀ padà, kí o sì pa ìpàdé SSH kejì mọ́ ní ṣíṣí nígbà tí o ń dán èyí àkọ́kọ́ wò. Lẹ́yìn náà ṣàyẹ̀wò pé iṣẹ́ ìpadàsẹ́yìn náà ń bẹ̀rẹ̀ ní ti gidi, nítorí ìmúpadà tí a kò dán wò dà bí kò sí ìmúpadà.

Ṣàyẹ̀wò ọ̀nà, kì í ṣe script

Ka àwọn ìlànà tí a gbé wọlé, kì í ṣe fáìlì tí ó yẹ kí ó gbé wọ́n wọlé. Láti ọ̀dọ̀ ẹrọ òde tí a fún ní àṣẹ, jẹ́rìí pé àwọn port tí a ní lọ́kàn nìkan ń dáhùn; láti inú tunnel, jẹ́rìí pé àwọn iṣẹ́ tí o fẹ́ ṣe jáde wà ní àrúgbọ́n. Ìlànà ìkọ̀ àkọ́kọ́ tí ó tún dí ìrìnàjò tunnel yóò dà bí ìtìpamọ́ tí ń ṣiṣẹ́ títí ẹnìkan yóò fi gbìyànjú láti lò ó.

iptables -S
iptables -t nat -S
ss -lntup
ip -4 addr show

Kọ port tí a gbà, àkójọpọ̀ alábàákẹ́gbẹ́, interface tunnel, orísun ìṣàkóso àti ìlànà console lẹ́gbẹ̀ẹ́ ìṣètò. Ìyípadà tí ó kàn àkójọpọ̀ tàbí orúkọ interface gbọdọ̀ bá mu nínú àyọkúrò àti ìlànà NAT pẹ̀lú, bí bẹ́ẹ̀ kọ́ ẹrọ yóò padà sí ipò tí ó ṣí ní ààbọ̀ láìsí ẹnìkan tí ó ṣàkíyèsí.

Ìwà kan níye lórí àkójọpọ̀ ìlànà: lẹ́yìn gbogbo ìyípadà, fi ọ̀nà gbígbé lọ hàn pẹ̀lú ìbéèrè alábàákẹ́gbẹ́ àti ọ̀nà ìmúpadà pẹ̀lú ìpàdé kejì. Ìtìpamọ́ tí o kò lò jẹ́ àròsọ nìkan.

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