Ẹ̀rọ àpótí ilé ń ṣí tunnel, ó sì dé ọ̀dọ̀ sáfà àpòpọ̀ láìsí ìsòro. Sáfà àpòpọ̀ lè dé ọ̀dọ̀ ohun-èlò ilé fún ìṣẹ́jú kan tàbí méjì lẹ́yìn tí àpótí ilé bá kẹ́yìn rán nǹkan kan, lẹ́yìn náà yóò dáwọ́ dúró. Kò sí nǹkan tí ó farahàn nínú àkọsílẹ̀ WireGuard, kò sí àṣìṣe ìfọwọ́sowọ́pọ̀ tí a ròyìn, àti pé pípadà bẹ̀rẹ̀ tunnel yóò tún un ṣe fún ìgbà díẹ̀. Àwòrán yẹn jẹ́ ìsopọ̀ tí ń pari, kì í ṣe tunnel tí ó ti bàjẹ́, ìtọ́sọ́nà tí ó wà nísàlẹ̀ yìí sì jẹ́rìí sí i kí a tó yí nǹkan kankan padà.

Jẹ́rìí sí i pé àwòrán náà jẹ́ ìparí nígbà àìṣiṣẹ́

Àlàyé tí ó yàtọ̀ ni àkókò. Bí ìsopọ̀ yíyípadà bá ń ṣiṣẹ́ lẹ́sẹ̀kẹsẹ̀ lẹ́yìn tí ẹlẹgbẹ́ ilé rán ìrìnàjò, tí ó sì kùnà lẹ́yìn àkókò ìdákẹ́jẹ́, ọ̀nà náà wà ní àlàáfíà ṣùgbọ́n ipò àárín kò sí. Bí kò bá ti ṣiṣẹ́ rárá, kódà lẹ́sẹ̀kẹsẹ̀ lẹ́yìn ìrìnàjò, èyí jẹ́ àyẹ̀wò tí kò tọ́.

sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer

Ṣe àwọn méjì àkọ́kọ́ lẹ́sẹ̀kẹsẹ̀ lẹ́yìn tí ẹlẹgbẹ́ ilé rán nǹkan kan, dúró fún ìṣẹ́jú márùn-ún kí o sì tún wọ́n ṣe. Àmì àkókò ìfọwọ́sowọ́pọ̀ tí ń sọ̀tún lẹ́yìn ìtòlẹ́sẹẹsẹ láìsí ibi-ìparí tuntun sọ fún ọ pé tunnel wà láàyè. Ohun tí ó yí padà ni agbára àwọn pákítì tí a kò béèrè fún láti dé láti ìta, èyí tí ó jẹ́ àbùdá ọ̀nà, kì í ṣe ti tunnel.

Lẹ́yìn náà ṣe ìgbìyànjú yíyípadà kí o sì wo àwọn kíkà ìgbékalẹ̀. Bí ẹ̀gbẹ́ àpòpọ̀ bá ń rán báìtì, tí ẹ̀gbẹ́ ilé kò sì gba ọ̀kan, pákítì náà ti kúrò ní àpòpọ̀, ó sì kú nínú ẹ̀rọ tí ń pa ipò mọ́ lójú ọ̀nà. Ìyẹn ni àmì tí ìwọ ń wá. Bí àwọn kíkà méjèèjì bá ń lọ, tunnel ti gbé pákítì náà dé, ohun-èlò náà sì ni ẹni tí a fura sí.

Fi keepalive sórí ẹlẹgbẹ́ tí ó wà lẹ́yìn router

Keepalive àìlópin ń pa ìsopọ̀ NAT mọ́ àti ipò firewall èyíkéyìí láàyè nípa rírán pákítì kékeré tí a fọwọ́ sí lẹ́yìn ìtòlẹ́sẹẹsẹ. Ètò náà jẹ́ ti ẹ̀rọ tí ó wà lẹ́yìn router, nínú àkọsílẹ̀ rẹ̀ fún ẹlẹgbẹ́ tí ó jìnnà, nítorí pé ẹ̀gbẹ́ yẹn ni pákítì rẹ̀ tí ń jáde ń dá ipò.

[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25

Dà á pọ̀ mọ́ abala ẹlẹgbẹ́ tí ó wà. Fífi bulọ́ọ̀kì kejì kún pẹ̀lú bọ́tìnì gbangba kan náà kì í ṣe ọ̀nà tí ó tọ́ láti fi àwọn àṣàyàn kún, wg-quick kò sì ní dà wọ́n pọ̀ fún ọ. 25 sẹ́kọ̀ọ́ndù tí a kọ sílẹ̀ jẹ́ àpẹẹrẹ tí a yàn kí ó lè wà nísàlẹ̀ àwọn àkókò ìdúró UDP tí ó wọ́pọ̀, kì í ṣe iye tí ó ní ìtumọ̀ pàtó.

Fífi ìtọ́sọ́nà kan náà sórí ẹ̀gbẹ́ àpòpọ̀ kò ràn ọ́ lọ́wọ́ nínú ìsòro yìí. Àwọn pákítì ẹlẹgbẹ́ yẹn ti ń bọ̀ láti àdírẹ́sì gbangba, nítorí náà kò sí ìsopọ̀ tí a ó pa mọ́ ní ọ̀nà tí ó ṣe pàtàkì. Ó ń fi ìrìnàjò kún, kò sì yí nǹkan kankan padà.

Ka àwọn aago dípò kí o máa fojú dí àkókò

Keepalive ń ṣiṣẹ́ nítorí pé wọ́n máa ń dé ní àkókò tí ó pọ̀ ju bí ipò yóò ti parí. Èyí máa ń sọ àkókò ìdúró di nọ́mbà tí ìwọ nílò gan-an, àti lórí Linux a lè kà á lórí ẹ̀rọ tí ń ṣe ìtumọ̀:

sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820

Iye àkọ́kọ́ ni àkókò ìdúró fún ṣíṣàn UDP tí a rí ní ọ̀nà kan ṣoṣo, èkejì sì ń gbé ṣiṣẹ́ lẹ́yìn tí a bá ti kíyè sí àwọn ìdáhùn. Àwọn méjèèjì sábà kúrú, ìsopọ̀ tí ó dákẹ́ yóò tẹ̀lé èyí tí ó kan ṣíṣàn rẹ.

Fi nọ́mbà yẹn wé àkókò rẹ. Keepalive 25 sẹ́kọ̀ọ́ndù lábẹ́ àkókò ìdúró 30 sẹ́kọ̀ọ́ndù ń ṣiṣẹ́; keepalive kan náà lábẹ́ àkókò ìdúró 15 sẹ́kọ̀ọ́ndù kò ṣiṣẹ́. Bí o ti ṣe ìgbìyànjú mélòó mélòó kò ní yí ìṣirò yẹn padà. Àwọn router olùgbàádìí kan àti àwọn olùpèsè fọ́nù máa ń lo iye tí ó kúrú gan-an ju àpilẹ̀kọ Linux, ìdí nìyẹn tí ìṣètò tí ó ṣiṣẹ́ lórí nẹ́tíwọ́kì kan fi kùnà lórí òmíràn.

ObservationWhat it meansReasonable response
Works after traffic, dies when idleMapping or firewall state expiringLower the keepalive interval
Never works, even immediatelyNo return route, listener or firewallStop tuning keepalive
Works for hours, then dies onceCarrier-side translation or address changeCheck the endpoint and logs together

Ṣàyẹ̀wò olùgbọ́ àti firewall lọ́tọ̀ọ̀tọ̀

Ìsopọ̀ tí ó wà láàyè jẹ́ dandan, kò sì tó. Ohun-èlò tí ó wà lórí àpótí ilé gbọ́dọ̀ gbọ́ ní àdírẹ́sì tí ó tọ́, firewall ti ẹ̀rọ-ìgbàlejò sì gbọ́dọ̀ gba pákítì náà lẹ́yìn tí a bá ti yọ ìkọ̀kọ̀ kúrò.

sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health

Bí sokẹ́ẹ̀tì bá so mọ́ àdírẹ́sì ẹ̀rọ-ìsopọ̀ ti ara nìkan, kì í ṣe àdírẹ́sì tunnel, a máa ń ju àwọn pákítì tí ó dé lórí tunnel nù kí a tó béèrè lọ́wọ́ firewall. Ìkùnà yẹn dà bí ìsòro ìsopọ̀ láti ẹ̀gbẹ́ àpòpọ̀, ó sì ń yè kúrò lẹ́yìn gbogbo àtúnṣe keepalive.

Àyẹ̀wò àkójọ tí a gbà láàyè ṣe pàtàkì bákan náà ní ọ̀nà kejì. Ẹlẹgbẹ́ àpòpọ̀ gbọ́dọ̀ gba àdírẹ́sì tunnel ilé gẹ́gẹ́ bí orísun bí ó bá fẹ́ dáhùn, ẹlẹgbẹ́ ilé sì gbọ́dọ̀ gba àdírẹ́sì àpòpọ̀ gẹ́gẹ́ bí ibi-ìlọ. Àwọn pákítì keepalive jẹ́ ìrìnàjò tí a fọwọ́ sí, wọ́n sì ń lo àwọn ìlànà kan náà, ìdí nìyẹn tí keepalive tí ó dà bí ẹni pé ó ń ṣiṣẹ́ lè wà pẹ̀lú ohun-èlò tí kò ṣiṣẹ́.

Gbé ìyípadà náà jáde kí o sì mọ àwọn ààlà rẹ̀

Lo ètò náà, tún ẹ̀rọ-ìsopọ̀ bẹ̀rẹ̀ bí ìyẹn bá jẹ́ ọ̀nà ìmúdójúìwọ̀n rẹ, lẹ́yìn náà tún ìdánwò àìṣiṣẹ́ ṣe dípò ìdánwò lẹ́sẹ̀kẹsẹ̀. Dúró pẹ́ ju àkókò ìdúró tí o kà tẹ́lẹ̀ lọ, ṣe ìbéèrè yíyípadà kí o sì jẹ́rìí pé àwọn kíkà ti lọ ní ẹ̀gbẹ́ méjèèjì.

Kọ àkókò àti àkókò ìdúró tí a wọ̀n sí ẹ̀gbẹ́ rẹ̀. Ìyípadà kan ní ọjọ́ iwájú nínú firmware router, tàbí gbígbé lọ sí ìsopọ̀ fọ́nù, lè yí àkókò ìdúró padà. Àkọsílẹ̀ náà ni ohun tí ó jẹ́ kí ẹnìkan lè tún iye náà yọ jáde dípò kíkópí rẹ̀. Nọ́mbà méjì lórí ìlà kan máa ń gba ìwádìí odindi là nígbà tí ó yá.

Keepalive àìlópin ń dáàbò bo ipò. Wọn kì í ṣí ibùdókọ̀ kan, wọn kì í fi àkọsílẹ̀ kún àkójọ tí a gbà láàyè, wọn kì í sì jẹ́ kí olùgbọ́ kan farahàn. Nígbà tí ìsopọ̀ yíyípadà kò bá ṣiṣẹ́ rárá, ẹ̀bi wà nínú ọ̀kan nínú àwọn mẹ́ta yẹn, àti ìbẹ̀rẹ̀ kíákíá WireGuard ń ṣàpèjúwe ètò keepalive nínú àwọn ọ̀rọ̀ dín kan náà.

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