Kí ni ìdí tí ẹ̀rọ VPN kan lórí LAN ọ́fíìsì fi ń pàdánù gbogbo ìdáhùn
Kọ̀mpútà èrò tó wà lórí LAN ọ́fíìsì àti nínú ọ̀nà abẹ́lẹ̀ kan nínú subnet kan náà máa ń dáhùn láti interface tí kò tọ́. Ìṣàyẹ̀wò ọ̀nà padà tí kò le kì í ṣàlàyé ìdákẹ́jẹ́ yìí.
Kọ̀mpútà kan jókòó lórí /24 ọ́fíìsì nípasẹ̀ Ethernet, ó sì tún darapọ̀ mọ́ server OpenVPN kan tó ń gbé inú /24 kan náà. Alábàáṣiṣẹ́ kan ń píng àdírẹ́sì ọ̀nà abẹ́lẹ̀; ìbéèrè dé ní kedere, kò sì sí ohun tó padà. Àkọsílẹ̀ ọ̀nà abẹ́lẹ̀ mọ́, ìṣàwárí ojú-ìwé sì ṣì ń ṣiṣẹ́, nítorí náà ọ̀nà abẹ́lẹ̀ ni afurufẹ́ tí kò tọ́. Ìjẹ́rìí orísun IPv4 lórí ẹ̀rọ tó ń gbà máa ń sọnù pákẹ́tì kí ohunkóhun tó kà á.
Sísọnù náà ṣẹlẹ̀ kí ohunkóhun tó ka pákẹ́tì
Ìjẹ́rìí orísun béèrè ìbéèrè kan nípa gbogbo pákẹ́tì tó ń wọlé: bí host yìí bá dáhùn orísun yẹn, ṣé ìdáhùn yóò jáde nípasẹ̀ interface tí pákẹ́tì ṣẹ̀ṣẹ̀ gbà wọlé? Nígbà tí ìdáhùn bá jẹ́ rárá, kérnẹ́lì máa ń sọnù pákẹ́tì nígbà tó bá dé. Kò sí sọ́kẹ́tì tàbí ọ̀nà gbígbé jáde tó ń rí i rí, nítorí náà gbígbà kan lórí ọ̀nà abẹ́lẹ̀ ṣì ń kọ ìbéèrè kan tí ohun-èlò kò gbà rí.
Ẹ̀rọ ìbánisọ̀rọ̀ níbí ń di 10.66.0.9 mú lórí ọ̀nà abẹ́lẹ̀ rẹ̀, server OpenVPN sì ń dáhùn ní 192.168.80.10 nínú àkọ́kọ́ ọ́fíìsì. Alábàáṣiṣẹ́ kan ní 192.168.80.25 ń píng àdírẹ́sì ọ̀nà abẹ́lẹ̀, nítorí náà ìbéèrè kọjá LAN, server darí rẹ̀ sínú ọ̀nà abẹ́lẹ̀, ó sì dé interface ọ̀nà abẹ́lẹ̀ ẹ̀rọ ìbánisọ̀rọ̀ pẹ̀lú àdírẹ́sì orísun ọ́fíìsì. Nínú tábìlì ìtọ́sọ́nà ẹ̀rọ yẹn, àkọ́kọ́ ọ́fíìsì jẹ́ ti ẹ̀rọ Ethernet, kì í ṣe ti ọ̀nà abẹ́lẹ̀. Ìjẹ́rìí fi interface àbọ̀wé wé ọ̀nà, ó rí àìbáramu ó sì sọnù pákẹ́tì, nítorí náà alábàáṣiṣẹ́ rí àdánù pátápátá nígbà tí ẹ̀gbẹ́ méjèèjì ń jábọ̀ ọ̀nà abẹ́lẹ̀ tó yá.
Ìtọ́sọ́nà dígí ní irú kanna: nígbà tí ẹ̀rọ ìbánisọ̀rọ̀ bá bẹ̀rẹ̀ sí í lọ sí ọ́fíìsì, àwọn ìdáhùn lè sọnù ní ẹ̀gbẹ́ ọ́fíìsì fún ìdí kanna. Àtúnṣe tí a ṣàyẹ̀wò ní ẹ̀gbẹ́ kan ṣoṣo máa ń padà bọ̀ gẹ́gẹ́ bí tikẹ́tì kejì.
Fi ipò tó ń ṣiṣẹ́ hàn kí o tó fọwọ́ kan sysctl kankan
Ka àwọn iye tó ń ṣiṣẹ́ dípò gbígbẹ́kẹ̀lé àkọ́kọ́ pínpín, nítorí ètò interface kọ̀ọ̀kan jẹ́ ìdajì ìpinnu. Ipò tó ń ṣiṣẹ́ ni èyí tó ga jù nínú iye interface àti iye all, nítorí náà òdo lórí interface ọ̀nà abẹ́lẹ̀ kò túmọ̀ sí nkankan nígbà tí all jẹ́ ọ̀kan. Ìpinnu ipò líle jẹ́ ìpinnu ìtọ́sọ́nà, nítorí náà ṣe ìwá tí kérnẹ́lì ń ṣe kí o sì fi ìdáhùn rẹ̀ wé interface tí pákẹ́tì gbà wọlé ní ti gidi.
tcpdump -ni tun0 icmp and host 192.168.80.25
ip route get 192.168.80.25
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.tun0.rp_filter
Lẹ́yìn náà tún píng ṣe nígbà tí o ń wo olùka àṣìṣe. Nọ́mbà tó ń gòkè lẹ́gbẹ̀ẹ́ ìbéèrè tí gbígbà ti ń fi hàn ni àmì sísọnù yìí, kì í ṣe ti ọ̀nà tó sọnù. Tan àkọsílẹ̀ pákẹ́tì Mars nígbà tí o wà níbẹ̀, kí kérnẹ́lì lè dárúkọ orísun àti interface tó kọ̀. Papọ̀ wọ́n yọ àdìpọ̀, odi iná àti iroute tó sọnù kúrò nínú àwọn àlàyé.
Kọ ìlà ìpìlẹ̀ kí o tó yí ohunkóhun padà: iye méjèèjì, ẹ̀rọ tí ìwá yàn àti olùka tí o ń wo. Àkọsílẹ̀ yẹn ni yóò sọ fún ọ lẹ́yìn náà bóyá àyípadà ṣe ohun tí o rò.
Kí ni ipò rp_filter kọ̀ọ̀kan gbà ní ti gidi
Kérnẹ́lì fi iye mẹ́ta hàn fún interface kọ̀ọ̀kan, wọn kì í sì í ṣe àwọ̀ mẹ́ta ti òfin kan. Òdo pa ìṣàyẹ̀wò náà. Ọ̀kan le, ó sì béèrè kí orísun gbà padà jáde nípasẹ̀ interface àbọ̀wé. Èjì rọ, ó sì kàn béèrè kí ọ̀nà kan tó lọ sí orísun wà nínú tábìlì, ibi kankan tó bá tọ́ka sí.
| Value | Name | Accepts | Still rejects |
|---|---|---|---|
| 0 | off | any source at all | nothing on this check |
| 1 | strict | a source routed back out the arrival interface | a source whose route points elsewhere |
| 2 | loose | a source with any route in the table | a source with no route at all |
Ìlà tó ṣe pàtàkì níbí ni èyí tó rọ, àti ohun tí ó ṣì ń kọ̀. Orísun irọ́ tí a lè tọ́sọ́nà káríayé nínú tábìlì rẹ máa ń kọjá, nígbà tí orísun tí kò ní ọ̀nà rárá ṣì ń di kíkọ̀. Lórí kọ̀mpútà èrò, èyí jẹ́ àyọ̀nuda hẹẹkẹẹkẹ́; lórí róútà tó ń gbé ìrìnàjò àwọn ẹlòmíràn jáde, ó gbòòrò. Ìpò náà jẹ́ ti host, nítorí náà nọ́mbà kan náà gbé ìwúwo ọ̀tọ̀ọ̀tọ̀ ní ibi méjèèjì.
Ìlà wo ni ètò yìí nílò wá láti inú tábìlì, kì í ṣe láti inú àṣà. Pákẹ́tì náà tọ́, orísun rẹ̀ sì lè tọ́sọ́nà, nítorí náà èyí tó rọ gbà á, èyí tó le kò gbà. Kò sí nkankan nínú ọ̀ràn yìí tó béèrè òdo, pípa òdo yàn yóò sì yọ ìṣàyẹ̀wò kan tí kò náwó níbí.
Yan àyípadà tó kéré jù tó ń yọ àìdánimọ̀ kúrò
Ìpò rírọ ni àyípadà tó kéré jù tó bámu, ó sì jẹ́ ìdínkù gidi nínú ìlíle, kì í ṣe yíyí padà tí kò léwu. Àṣàyàn tó dára jù wà nígbàkigbà tí ètò bá gbà á: yọ àpapọ̀ kúrò, àìdánimọ̀ yóò sì pòórá.
Níbi tí a kò fi nílò àkọ́kọ́ ọ́fíìsì àyàfi nípasẹ̀ Ethernet, yọ ọ́ kúrò nínú àwọn ọ̀nà tí profáìsì ń fà, àdírẹ́sì yóò sì di èyí tí a lè dé nípasẹ̀ ọ̀nà kan. Nígbà tí àwọn ọ̀nà méjèèjì gbọ́dọ̀ wà papọ̀ ní ti gidi, fi orísun àti ẹ̀rọ múlẹ̀ pẹ̀lú òfin ìlànà dípò jíjẹ́ kí ìjẹ́rìí rọ lórí gbogbo interface. Èyí pa ìṣàfọ̀ tó le mọ́ fún ohun gbogbo mìíràn lórí ẹ̀rọ, ó sì kọ ìyàtọ̀ náà sílẹ̀ níbi tí ẹlẹ́rọ̀ tó kàn yóò ti wá a.
Ọ̀nà yóò jẹ́ èyí tí o yàn, kọ ọ́ sínú sysctl drop-in, kì í ṣe sínú àṣẹ tó ń ṣiṣẹ́. Ṣètò àwọn kọ́kọ́rọ́ all àti default papọ̀, kí ìsopọ̀ padà má baà lè dá ipò líle padà ní ìdákẹ́jẹ́.
# /etc/sysctl.d/99-rp-filter.conf
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
sysctl --system
Kí ni ìpò rírọ ń fi sílẹ̀, àti níbo
Ìpò rírọ ṣì ń kọ̀ orísun tí kò ọ̀nà kankan lè dé, ó sì dáwọ́ kíkọ̀ orísun irọ́ tó ṣẹlẹ̀ pé ó lè tọ́sọ́nà. Lórí kọ̀mpútà èrò, èyí jẹ́ àyọ̀nuda hẹẹkẹẹkẹ́. Lórí ẹ̀rọ tó ń gbé ìrìnàjò tí kì í ṣe tirẹ̀ jáde, àṣàyàn kan náà gbòòrò púpọ̀. Nítorí náà ètò kan náà gbé ìtumọ̀ méjì tó yàtọ̀ gbáà lórí ibi tó ń ṣiṣẹ́.
Pípa ìṣàyẹ̀wò pátápátá lórí host tó ń gbé ìrìnàjò àwọn ẹlòmíràn jáde ni àtúnṣe kan ṣoṣo tí a gbọ́dọ̀ yẹra fún. Òdo sọnù ìjẹ́rìí tí ìpò rírọ ń fi ìṣọ́ra pa mọ́. Bí host bá ń gbé jáde fún àwọn ẹlòmíràn, gbèjà fún àṣàyàn òfin ìlànà láti apá tó kọjá dípò.
Fi àkọsílẹ̀ sílẹ̀ tó dárúkọ interface méjèèjì, àkọ́kọ́ tó ń papọ̀ àti ìdánwò gbára tó ń ṣàṣeyọrí báyìí. Èyí wúlò fún ẹlẹ́rọ̀ tó kàn ju ìlà kan tó sọ pé a ṣàtúnṣe ìṣàfọ̀.