Handshake WireGuard ń ṣiṣẹ́ ṣùgbọ́n kò sí íńtánẹ́ẹ̀tì: tẹ̀lé pákẹ́tì náà
Handshake kìkì ń fi kọ́kọ́rọ́ àti ìwọlé hàn. Tẹ̀lé pákẹ́tì kan láti AllowedIPs nípasẹ̀ ìfiránṣẹ́, NAT àti ọ̀nà ìpadà láti rí ibi tí ó dúró.
Ihò náà ń ṣiṣẹ́, wg show ń ròyìn handshake tuntun, o lè ping àdírẹ́sì ihò olupin, kò sì sí ohun tó ń dáhùn ní ẹ̀yìn rẹ̀. Ìrònú àkọ́kọ́ ni láti tún kọ́kọ́rọ́ ṣe tàbí pín ìṣètò náà pẹ̀lú. Ìyẹn ń yí apá ọ̀nà náà padà gan-an tí a ti fi hàn pé ó ń ṣiṣẹ́.
Handshake tó parí ń sọ pé ẹ̀gbẹ́ méjèèjì gbà lórí kọ́kọ́rọ́, UDP dé ibi ìparí, àti pé ìtọ́sọ́nà crypto gba pákẹ́tì náà. Kò sọ nǹkan kan nípa bóyá pákẹ́tì náà lè kúrò ní olupin lẹ́yìn náà.
Nítorí náà tẹ̀lé pákẹ́tì kan dípò ṣíṣe àfojúsùn. Ibùdó mẹ́rin ló wà tí ó lè kú sí, ọ̀kọ̀ọ̀kan sì ń fi àmì ọ̀tọ̀ọ̀tọ̀ sílẹ̀.
Kí ni handshake ń fi hàn ní ti gidi
WireGuard jẹ́ gbólóhùn UDP tó ń dá ìpàdé kalẹ̀ pẹ̀lú handshake Noise, lẹ́yìn náà ó ń ṣe ìkọ̀kọ̀ pákẹ́tì fún ẹlẹgbẹ́ kan. Nígbà tí wg show bá fi handshake tí ó jẹ́ ìṣẹ́jú àáyá mélòó kan àti kíkà ìfiránṣẹ́ tó ń pọ̀ síi hàn, ibi ìparí, àwọn kọ́kọ́rọ́ àti kọ́kọ́rọ́ gbangba ẹlẹgbẹ́ náà dára.
Ohun tí kò fi hàn ni pé oníbàárà rẹ ń fi ìrájá tó ń lọ sí íńtánẹ́ẹ̀tì sínú ojú-ìpadà rárá, pé olupin ṣetán láti fi í ránṣẹ́, tàbí pé ìdáhùn lè rí ọ̀nà ìpadà. Àwọn ìpinnu ìtọ́sọ́nà kérẹ́nẹ́lì àti firewall ni wọ́n, a sì ń ṣe wọ́n ní ẹ̀yìn ihò náà.
Ìdí niyì tí ping sí àdírẹ́sì ihò olupin fi jẹ́ àdánwò ẹlẹ́tàn tó bẹ́ẹ̀. Pákẹ́tì yẹn a darí rẹ̀ sí olupin fúnra rẹ̀, nítorí náà ó parí níbílẹ̀. Kò nílò ìfiránṣẹ́ rí, kò nílò ìtumọ̀ rí, kò sì nílò ọ̀nà ìpadà láti íńtánẹ́ẹ̀tì rí.
AllowedIPs jẹ́ ìpinnu ìtọ́sọ́nà
Lórí oníbàárà, AllowedIPs ń ṣe iṣẹ́ méjì. Ó jẹ́ tábìlì ìtọ́sọ́nà kọ́kọ́rọ́ crypto tó ń pinnu àwọn àdírẹ́sì ibi tí a ń lọ tó ń wọ ihò ẹlẹgbẹ́ yìí, ó sì jẹ́ àkójọ àwọn àdírẹ́sì orísun tí ẹlẹgbẹ́ yóò gbà lọ́wọ́ rẹ. Tí ìṣètò oníbàárà bá kàn ṣe àkójọ 10.8.0.0/24, àwọn ibi gbangba kì í wọ ojú-ìpadà rí, ọ̀nà àkọ́kọ́ déédé rẹ sì ń gbé wọn lọ sí ẹ̀yìn ihò náà. Nígbà náà ihò náà ń ṣiṣẹ́ dáradára kò sì ṣe ohunkóhun tí o fẹ́.
Wo ohun tí oníbàárà fi sórí ẹ̀rọ ní ti gidi, kì í ṣe ohun tí fáìlì ìṣètò sọ:
wg show wg0 allowed-ipsip route get 1.1.1.1
Àṣẹ kejì ni olùpinnu. Tí ìdáhùn bá dárúkọ ojú-ìpadà ara rẹ àti ẹnubodè déédé, a kò fi pákẹ́tì náà sínú ihò, kò sì sí ìyípadà ní ẹ̀gbẹ́ olupin tó máa tún un ṣe. Fi 0.0.0.0/0 kún fún IPv4 àti ::/0 fún IPv6 lọ́tọ̀ọ̀tọ̀; ìlànà tó ń mú gbogbo rẹ̀ fún ìdílé kan ń fi èkejì sílẹ̀ lórí ọ̀nà ìpilẹ̀ rẹ̀, èyí sì ni ìdí tó wọ́pọ̀ tí ihò IPv4 fi ń ṣiṣẹ́ tí wíwá IPv6 sì ń dúró.
Ibi tí pákẹ́tì ń kú lórí ẹnubodè
Tí ọ̀nà bá tọ́ tí pákẹ́tì kò sì lọ síbikí, ó dé ọ̀dọ̀ olupin ó sì dúró níbẹ̀. Àyẹ̀wò mẹ́rin ń bo ọ̀pọ̀ jùlọ ẹnubodè.
Ìfiránṣẹ́. sysctl net.ipv4.ip_forward tó ń dá 0 padà ni ìdáhùn àtẹnudẹ́nu, ọ̀pọ̀ pínpín sì ṣì wà ní 0 ní àkọ́kọ́. Ó gbọdọ̀ jẹ́ 1, kí a sì gbé e kalẹ̀ títí láé nínú fáìlì sysctl, kì í ṣe pẹ̀lú àṣẹ tó ń pòórá nígbà ìtúnbẹ̀rẹ̀. Ìfiránṣẹ́ IPv6 jẹ́ ìyípadà ọ̀tọ̀.
Ìlànà àyẹ̀wò. Ẹ̀wọ̀n FORWARD pẹ̀lú ìlànà drop àkọ́kọ́ yóò ju ìrájá ihò náà nù nígbà tí yóò gba ìrájá tó ń lọ sí agbàlejò fúnra rẹ̀, èyí sì bá àmì náà mu gbágbá. Ka àkójọ ìlànà alààyè, kì í ṣe fáìlì tí a fi pamọ́: nft list ruleset tàbí iptables -S.
Ìtumọ̀ tàbí ìtọ́sọ́nà. Àwọn oníbàárà tó ń lo àdírẹ́sì ihò àdáni nílò NAT orísun lórí ojú-ìpadà ìjáde olupin, tàbí ìpilẹ̀ tí a tọ́sọ́nà tí nẹ́tíwọ́kì òkè mọ bí a ṣe ń dá a padà. Yíyàn láàárín méjèèjì ń tẹ̀lé ètò àdírẹ́sì. Fífi MASQUERADE kún nẹ́tíwọ́kì tó ti ń tọ́sọ́nà ìpilẹ̀ rẹ padà kò léwu ṣùgbọ́n kò ní ìtumọ̀, pípàá rẹ̀ mọ́ níbi tí kò sí ọ̀nà ń fi àwọn ìdáhùn sílẹ̀ tí a darí sí ìpín àdáni tí a kò lè tọ́sọ́nà.
Ọ̀nà ìpadà. Nínú àwọn àpẹẹrẹ tí a tọ́sọ́nà, olùdarí òkè nílò ọ̀nà tó ń tọ́ka sí olupin rẹ. Nẹ́tíwọ́kì olùpèsẹ̀ lè dè é pẹ̀lú: àwọn àwọsánmà mélòó kan ń mú àyẹ̀wò orísun àti ibi ìlọ ṣiṣẹ́ lórí ìṣẹ̀dá, tó ń fi àwọn pákẹ́tì tí orísun wọn kì í ṣe àdírẹ́sì ìṣẹ̀dá fúnra rẹ̀ sílẹ̀ ní ìdákẹ́jẹ́ títí a ó fi pa àyẹ̀wò yẹn.
DNS ń kùnà lọ́nà mìíràn ju ìtọ́sọ́nà lọ
Pákẹ́tì sí àdírẹ́sì tí a mọ̀ àti wíwá orúkọ jẹ́ ìkùnà méjì ọ̀tọ̀ọ̀tọ̀, àwọn ìfiránṣẹ́ àṣìṣe sì ń ṣi lọ́nà ìdàkejì. Tí ping 1.1.1.1 bá ń ṣiṣẹ́ tí aṣàwákiri kò sì lè gbé ohunkóhun, ọ̀nà náà dára ìyọnnú orúkọ kò dára. Tí ping fúnra rẹ̀ bá kùnà, DNS kò ṣe pàtàkì, o sì ti padà sí apá tó ṣáájú.
wg-quick lè gbé resolver kalẹ̀ láti ìlà DNS = nínú ìṣètò, systemd-resolved sì ní ìwà tirẹ̀ fún ọ̀kọ̀ọ̀kan ìsopọ̀. VPN tó ń fi àdírẹ́sì tí a kò lè dé bí kò ṣe nínú ihò bo resolver yóò mú gbogbo wíwá kùnà ní àkókò tí ihò náà bá ṣubú, èyí tó dàbí pé ihò náà ń ba íńtánẹ́ẹ̀tì jẹ́.
| Symptom | Layer to inspect |
|---|---|
| Tunnel address pings, nothing else does | Client route, then gateway forwarding |
| Public IP pings, hostnames fail | Resolver selection and reachability |
| Handshake completes, no reply ever | FORWARD policy or missing NAT on the server |
| Small requests work, large transfers stall | MTU and TCP MSS clamping |
Ìtò tó ń mú ẹ̀rí wá
Ṣe àyẹ̀wò ẹ̀gbẹ́ oníbàárà kọ́kọ́, nítorí àṣẹ kan ni ó sì ń yọ ìdajì àwọn ṣíṣe kúrò. Lẹ́yìn náà jẹ́rìí bóyá a ṣe olupin fún ìjáde sí íńtánẹ́ẹ̀tì rárá; ẹnubodè tí a kọ́ fún àwọlé àdáni kì í bàjẹ́ nígbà tí àwọn ibi gbangba bá kùnà.
Lórí olupin, wo ojú-ìpadà nígbà tí o ń fi ping ránṣẹ́ láti oníbàárà: tcpdump -ni wg0 icmp yẹ kó fi ìbéèrè hàn, tcpdump -ni eth0 icmp sì yẹ kó fi hàn pé ó ń jáde, yálà a ti túmọ̀ rẹ̀ tàbí bẹ́ẹ̀ kọ́. Tí ó bá farahàn lórí èkínní tí kò sì farahàn lórí èkejì rí, ìdúró náà wà níbílẹ̀ lórí olupin. Tí ó bá jáde tí kò sì sí ìdáhùn tó padà, ìṣòro náà wà ní òkè, ìyẹn sì jẹ́ ìjíròrò mìíràn.
Níkẹyìn, jẹ́ kí àtúnṣe náà ye ìtúnbẹ̀rẹ̀. Ìfiránṣẹ́ wà nínú fáìlì sysctl, àwọn ìlànà firewall wà nínú iṣẹ́ tó ń gbé wọn wọlé, àwọn ọ̀nà oníbàárà sì wà nínú ìṣètò tó ń gbé ojú-ìpadà ró, kì í ṣe nínú shell tí ìwọ yóò gbàgbé. Tún so pọ̀, tún àwọn àdánwò méjì kan náà ṣe, kí o sì jẹ́rìí pé àwọn kíkà ń lọ.