O fi host relay kún, o fi àdírẹ́sì Nebula rẹ̀ sínú config, ṣùgbọ́n àwọn peer méjèèjì kò tíì sọ̀rọ̀. Èyí ń ṣẹlẹ̀ nítorí ọ̀nà relay nílò ìkéde mẹ́ta ọ̀tọ̀ọ̀tọ̀ láti bára wọn mu, àti pé ọ̀kan ṣoṣo nínú wọn ló wà lórí ẹ̀rọ tí o ṣe é dájú pé o ṣàtúnṣe. Mo ti lé èyí lẹ́yìn ní ìgbà méjì: nígbà kan host ìfiránṣẹ́ kò gba ipa relay rí, nígbà mìíràn a kọ àwọn ètò sí ẹ̀gbẹ́ tí kò tọ́ ti ìsopọ̀. Ìtẹ̀lé tó wà nísàlẹ̀ yóò yẹ̀wò ipa, ìkéde àti àṣẹ ní ìtẹ̀lé yẹn, àti pé ìgbésẹ̀ kọ̀ọ̀kan ní àṣẹ tí ó sọ fún ọ bóyá kí o tẹ̀síwájú.

Ṣe àwòrán àwọn ipa mẹ́ta kí o tó ṣàtúnṣe config

Nebula fún host kọ̀ọ̀kan ní iṣẹ́ kan, àwọn iṣẹ́ kò sì jogún. Ilé-ìmọ́lẹ̀ ń dáhùn àwọn ìbéèrè 'níbo ni peer yìí wà' kí àwọn host lè rí ara wọn. Relay ń fi ìṣàn náà ránṣẹ́ láàrín àwọn peer méjì tí kò ní ọ̀nà tààrà tó ń ṣiṣẹ́. Host lasan kò ṣe èyíkan nínú àwọn méjèèjì. Àwọn ètò mẹ́ta pàtàkì wà lórí ẹ̀rọ mẹ́ta ọ̀tọ̀ọ̀tọ̀, ìdí nìyẹn tí config alábàáṣepọ̀ tó dàbí pé ó pé lè fi àwọn peer méjèèjì sílẹ̀ ní ìdúró.

# on the discovery host
lighthouse:
  am_lighthouse: true
  hosts: []

# on every other host, point at the discovery host's Nebula address
lighthouse:
  hosts:
    - 10.42.0.1

Àmì kan ń ya àwọn ẹgbẹ́ ìkùnà méjì. Bí àwọn peer méjèèjì bá ń kọ ara wọn sínú àkójọ, tí log sì ń fi àwọn ìgbìyànjú ìfọwọ́sowọ́pọ̀ tí kò parí rí hàn, ìwádìí ń ṣiṣẹ́, àti pé NAT tàbí firewall ti dí ọ̀nà dátà. Bí peer kan kò bá kọ́ àdírẹ́sì ẹlòmíràn rí, ìṣòro wà nínú ilé-ìmọ́lẹ̀ tàbí àwòrán host tí ó dúró ṣinṣin, àwọn ètò relay kò sì lè tún èyí ṣe.

Jẹ́rìí sí config tí host kọ̀ọ̀kan gbé wọlé gan-an kí o tó ṣàtúnṣe ohunkóhun mìíràn. Ẹ̀ka tí ń ka ọ̀nà tó yàtọ̀ sí fáìlì tí o ṣàtúnṣe ni ìdí tó wọ́pọ̀ tí ó sì ń dójú ti 'ìyípadà kò ṣe ohunkóhun':

systemctl cat nebula | grep ExecStart
nebula -version
journalctl -u nebula -n 20 --no-pager

Ìlà ẹ̀dà ṣe pàtàkì nínú ẹgbẹ́ tí ó dàpọ̀. Ìtọ́jú relay, ìhùwàsí ìwẹ̀ àti àwọn kọ́kọ́rọ́ config tí a gbà kò dọ́gba láàrín àwọn ìtúsílẹ̀, nítorí náà má ṣe rò pé àgbéjáde àtijọ́ ló yé apá kan tí a kò kọ fún un. Pa àwọn host dọ́gba sí ìlà kékeré kan náà, lẹ́yìn náà ṣe nebula -test -config /etc/nebula/config.yml lórí host kọ̀ọ̀kan kí o sì fi àbájáde wé ara wọn kí o tó ṣe àtúnṣe ìrìnàjò tí kóòdù kò ṣe.

Mú ipa ìfiránṣẹ́ ṣiṣẹ́ lórí host relay

Ipa relay jẹ́ àsíá kan lórí host ìfiránṣẹ́, ó sì yàtọ̀ sí jíjẹ́ ilé-ìmọ́lẹ̀. Host tí a ti mú ìwádìí ṣiṣẹ́ tí a sì ti pa ìfiránṣẹ́ relay kúrò ṣì jẹ́ iṣẹ́ ìwádìí nìkan. Lórí relay:

relay:
  am_relay: true

Àsíá yìí ń kéde èrò; kò dá ìrọ́wọ́tó. Relay gbọ́dọ̀ jẹ́ èyí tí a lè dé ọ̀dọ̀ láti ọ̀dọ̀ àwọn peer méjèèjì, èyí tí ó túmọ̀ sí àdírẹ́sì gbangba, UDP tí ń wọlé lórí ibùdókọ̀ Nebula tí ó ṣí nínú firewall host àti nínú ẹgbẹ́ ààbò cloud kankan, àti pé kò sí NAT ìlọ́po méjì níwájú rẹ̀. Yẹ̀wò socket tí ń gbọ́rọ̀, lẹ́yìn náà wo bí àwọn pákétì peer ṣe ń dé:

ss -lunp | grep nebula
tcpdump -ni any udp port 4242 and host 198.51.100.7

Ààlà méjì máa ń gba àkókò là nígbà tó yá. A kò lè dé relay nípasẹ̀ relay mìíràn, nítorí náà ẹ̀wọ̀n orúkọ relay nínú config kì í ṣe àkànpò fún fífún host ìfiránṣẹ́ ní ọ̀nà tó wúlò. Àti pé relay ń fi pákétì ránṣẹ́; kò fúnni ní àṣẹ, nítorí náà àwọn ìlànà ìwọlé ti ibi-àfojúsùn fúnra wọn ló ṣì ń pinnu bóyá a gbà ìṣàn tí a fi relay rán. Ipa àti àwọn ohun tí ó nílò wà nínú ìwé ìṣètò relay.

Kéde relay láti ibi-àfojúsùn, kì í ṣe láti ọ̀dọ̀ alábàáṣepọ̀

Èyí ni ìyípadà tí ń jẹ wákàtí púpọ̀ jù. Àkójọ relay jẹ́ ti host tí o ń gbìyànjú láti dé, nítorí pé ó ń sọ fún àwọn peer mìíràn àwọn relay tí a lè lò láti dé host yẹn. Fífi í sórí alábàáṣepọ̀ tí ó bẹ̀rẹ̀ ìsopọ̀ kò ṣe ohunkóhun fún ìtọ́sọ́nà tí alábàáṣepọ̀ nílò:

# on the DESTINATION host: relays others may use to reach me
relay:
  relays:
    - 10.42.0.5

Àwọn peer ń jábọ̀ àkójọ yẹn pẹ̀lú àwọn àdírẹ́sì wọn nígbà tí wọ́n bá forúkọsílẹ̀ sí ilé-ìmọ́lẹ̀, nítorí náà ìkéde ń tàn ká nípasẹ̀ ìwádìí kì í ṣe nípasẹ̀ pàṣípààrọ̀ tààrà. Bí ibi-àfojúsùn kò bá lè dé ilé-ìmọ́lẹ̀ kankan, àkójọ relay rẹ̀ kò ní tàn ká rí, relay tí a ṣètò dáadáa yóò sì wà ní ìdákẹ́jẹ́. Ìkùnà yẹn dàbí relay tí ó ti bàjẹ́ gan-an, kì í sì í ṣe bẹ́ẹ̀.

Fún ibi-àfojúsùn ní ọ̀nà ìbẹ̀rẹ̀ ní ìgbésẹ̀ kan náà. Àwòrán host tí ó dúró ṣinṣin ń so àdírẹ́sì Nebula mọ́ ibi-ìparí gbangba kí ìfọwọ́sowọ́pọ̀ àkọ́kọ́ lè ní ibi tí yóò lọ, ó sì nílò àkọsílẹ̀ kan fún relay bí ibi-àfojúsùn yóò gba ìṣàn tí a fi relay rán láti ọ̀dọ̀ àwọn host tí kò lè dé tààrà:

static_host_map:
  "10.42.0.5": ["203.0.113.10:4242"]

Jẹ́ kí peer tí ń sopọ̀ lè lo relay

Ẹ̀gbẹ́ tí ń bẹ̀rẹ̀ nílò àṣẹ tirẹ̀. relay.use_relays wà ní ṣíṣí ní àkọ́kọ́, nítorí náà ọ̀ràn tí ó yẹ kí a wá ni false tí ó ṣe kedere, tí a sábà máa ń dà kọ́ láti inú àwòkọ́ tí a kọ kí ẹ̀yà relay tó wà tàbí tí ó kù láti inú ìgbìyànjú ìṣáájú láti fi ipá mú àwọn ọ̀nà tààrà:

relay:
  use_relays: true

Àṣẹ ní ẹ̀gbẹ́ yìí kì í ṣe ẹnubodè kan ṣoṣo. Àwọn ìlànà ìwọlé ti ibi-àfojúsùn ṣì kan pákétì tí a fi relay rán, orísun tí wọ́n ń fi wé ni ìdánimọ̀ inú ọ̀nà àbẹ̀wò kì í ṣe àdírẹ́sì relay fúnra rẹ̀. Nígbà tí ìfọwọ́sowọ́pọ̀ tí a fi relay rán bá parí tí ohun èlò sì ṣì ń kùnà, ka log ibi-àfojúsùn fún orísun tí ó gbasilẹ̀ kí o tó tún ìlànà kan kọ.

Àwọn ètò ìrékọjá NAT ń bára gbogbo èyí ṣiṣẹ́. punchy.punch ń ràn àwọn peer méjì lọ́wọ́ láti ṣí ọ̀nà tààrà, nígbà tí ó bá sì ṣàṣeyọrí kò sí ìṣàn relay láti wò; ìyẹn ni àṣeyọrí, kì í ṣe relay tí ó sọnù. Ẹgbẹ́ tí ń ṣiṣẹ́ lẹ́ẹ̀kọ̀ọ̀kan sábà máa ń túmọ̀ sí pé ìwẹ̀ ń ṣàṣeyọrí nígbà mìíràn, nítorí náà dán ẹgbẹ́ yẹn wò ní ọ̀pọ̀ ìgbà dípò kíkó ipinnu jáde láti ìgbìyànjú kan.

Fi ẹgbẹ́ tí ó kùnà jẹ́rìí, lẹ́yìn náà tún gbé e wọlé

Dán àwọn host méjì tí ó kùnà gan-an wò pẹ̀lú ohun èlò tí wọ́n nílò. ping tí ó ṣàṣeyọrí láti ibùdókọ̀ iṣẹ́ rẹ sí iṣẹ́ relay fúnra rẹ̀ kò fi ohunkóhun hàn nípa ìfiránṣẹ́ láàrín àwọn peer méjì mìíràn, èyí sì ni èyí tí ó wọ́pọ̀ jù nínú gbogbo ìtọ́sọ́nà yìí.

journalctl -u nebula -f | grep -iE "relay|handshake"
ping -c 3 10.42.0.9

Tún gbé e wọlé dípò àtúnbẹ̀rẹ̀, kí o sì jẹ́rìí pé ìlànà tí ń ṣiṣẹ́ ti gba fáìlì tí o ṣàtúnṣe. Àtúnbẹ̀rẹ̀ ń ya gbogbo ọ̀nà àbẹ̀wò kuro ó sì ń jẹ́ kí àdánwò tó kàn nira láti kà, nígbà tí SIGHUP ń pa ìlànà mọ́ tí ó sì ń fipá mú u láti tún config kà:

sudo systemctl kill -s HUP nebula
# same signal when nebula runs in the foreground
kill -HUP $(pidof nebula)

systemctl reload ń ṣiṣẹ́ nígbà tí ẹ̀ka àdúgbò bá ṣàlàyé ExecReload nìkan, ẹ̀ka tí ó wá pẹ̀lú iṣẹ́ náà kò ṣe bẹ́ẹ̀, nítorí náà ìgbésẹ̀ tí ó ṣàṣeyọrí lórí ìgbékalẹ̀ deede ni systemctl kill -s HUP. Lẹ́yìn títún gbé e wọlé, ka log fún ọ̀nà config tí ìlànà ṣí, kí o lè mọ̀ pé a ka fáìlì tuntun, kì í ṣe èyí tí o rò.

Àwọn ètò relay àti ìwẹ̀ NAT méjèèjì ń ní ipa lórí ọ̀nà; kò sí èyí tí ó ní ipa lórí ìdánimọ̀. Bí ẹgbẹ́ náà bá ṣì ń kùnà nínú ìfọwọ́sowọ́pọ̀ lẹ́yìn tí a ti jẹ́rìí am_relay, relays àti use_relays nínú config tí ń ṣiṣẹ́, yẹ̀wò pé àwọn host méjèèjì ń fi àwọn ẹ̀rí tí a gbé jáde fún àwọn orúkọ tí a fi ṣètò wọ́n hàn àti pé CA jẹ́ ọ̀kan náà ní ẹ̀gbẹ́ méjèèjì. Jẹ́ kí ẹ̀rí àti config firewall dúró ṣinṣin nígbà tí o ń yí ètò ìrìnàjò kan padà ní ẹ̀ẹ̀kan, nítorí àtúnṣe ẹ̀rí àti àtúnṣe relay tí wọ́n bá ṣẹlẹ̀ nínú àdánwò kan kò sọ fún ọ èyí tí ó gbé ìfọwọ́sowọ́pọ̀ lọ. Àìbáramu orúkọ tàbí CA ń kùnà ní ibi kan náà tí relay tí a kò rí rí ń kùnà, nítorí náà àyẹ̀wò ìdájú yìí wà nínú ìgbésẹ̀ kan náà.

Lẹ́yìn náà jẹ́rìí pé ìkéde kọ̀ọ̀kan wà nínú fáìlì tí ó jẹ́ tirẹ̀:

  • am_relay: true lórí host ìfiránṣẹ́, àti pé host yẹn dé ọ̀dọ̀ rẹ̀ nípasẹ̀ UDP láti ẹ̀gbẹ́ méjèèjì.
  • relays: tí ń dárúkọ àdírẹ́sì Nebula ti host yẹn lórí ibi-àfojúsùn.
  • use_relays: true lórí peer tí ó bẹ̀rẹ̀ ìsopọ̀.
  • Àwọn ìlànà ìwọlé lórí ibi-àfojúsùn ṣì ń gbà orísun gidi láàyè lẹ́yìn tí ọ̀nà bá yí padà.

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