A ZeroTier One egy népszerű virtuális hálózati megoldás, amely lehetővé teszi a különböző eszközök közötti biztonságos kommunikációt. Ha több különálló ZeroTier hálózatot szeretnél egyetlen „mester” hálózathoz kapcsolni, akkor megfelelő routing beállításokra van szükséged. Ebben a cikkben bemutatjuk, hogyan lehet ezt Docker környezetben megoldani.
Miért lehet szükség több ZeroTier hálózat összekapcsolására?
A ZeroTier rendszere alapvetően különálló hálózatokat hoz létre, ahol minden hálózat saját IP-címtartományt használ. Ha azonban szeretnénk, hogy egy „mester” csoport rálásson az összes többi hálózatra, akkor szükség van egy megfelelő routing megoldásra. Az alábbiakban bemutatjuk egy gyakorlati példán keresztül, hogyan lehet ezt megvalósítani egy Debian VPS-en futó Docker környezetben.
Kiindulási konfiguráció
A példában három ZeroTier hálózatot hoztunk létre:
- Csoport 1: 10.100.1.0/24
- Csoport 2: 10.100.2.0/24
- Mester csoport: 10.100.250.0/24
A cél az, hogy a mester csoport (10.100.250.0/24) elérje az összes többi hálózatot, azaz a 10.100.0.0/16 tartományt.
Első próbálkozás: külön Docker konténer
A ZeroTier fórum egyik felhasználója azt javasolta, hogy hozzunk létre egy dedikált Docker konténert, amely minden hálózatra csatlakozik egyszerre, és ott konfiguráljuk a routingot:
- Node 1: 10.100.1.250/32
- Node 2: 10.100.2.250/32
- Master Node: 10.100.250.250/32
Azonban ez a megoldás nem működött megfelelően, mert hiába állítottuk be a route-okat, nem tudtuk pingelni a többi hálózatot.
Végleges megoldás: központi szerver csatlakozása minden ZeroTier hálózathoz
A megoldás végül sokkal egyszerűbb lett: nem kell külön Docker konténert létrehozni, hanem egyszerűen a központi ZeroTier szerveren kell kiadni a megfelelő parancsokat.
1. A központi szerver csatlakoztatása az összes hálózathoz
Először csatlakoztatjuk a központi szervert minden egyes ZeroTier hálózathoz. Ehhez a következő parancsokat futtatjuk le:
zerotier-cli join [HÁLÓZAT_AZONOSÍTÓ_CSOPORT1] zerotier-cli join [HÁLÓZAT_AZONOSÍTÓ_CSOPORT2] ... zerotier-cli join [HÁLÓZAT_AZONOSÍTÓ_MESTER_CSOPORT]
Ezután minden ZeroTier hálózatban hozzárendelünk egy fix IP-címet a központi szerverhez:
- Csoport 1: 10.100.1.1
- Csoport 2: 10.100.2.1
- Mester csoport: 10.100.250.1
2. Routing beállítása minden hálózatban
Most beállítjuk a route-okat úgy, hogy minden ZeroTier hálózat a központi szerveren keresztül kommunikáljon:
- Csoport 1: route add 10.100.250.0/24 gw 10.100.1.1
- Csoport 2: route add 10.100.250.0/24 gw 10.100.2.1
- Mester csoport: route add 10.100.0.0/16 gw 10.100.250.1
3. IP forwarding engedélyezése
Az IPv4 forwardingot is engedélyezni kell, hogy a csomagok megfelelően továbbítódjanak. Ehhez szerkeszd a /etc/sysctl.conf
fájlt, és győződj meg róla, hogy az alábbi sor szerepel benne:
net.ipv4.ip_forward = 1
Majd aktiváld a változtatást a következő paranccsal:
sysctl -p
4. Tesztelés és ellenőrzés
Most már érdemes tesztelni a konfigurációt. Pingeld a hálózatok IP-címeit a központi szerverről, és ellenőrizd, hogy minden hálózat megfelelően elérhető-e.
Összegzés
Ha több ZeroTier hálózatot szeretnél összevonni és központi hozzáférést biztosítani, a legjobb megoldás az, hogy a központi szervert csatlakoztatod minden hálózathoz, majd a megfelelő route-okat beállítod. Ezzel a módszerrel stabil és jól működő ZeroTier hálózatot alakíthatsz ki, amelyben egyetlen központi mester hálózat képes az összes többi csoportot elérni.
Ez a megoldás nemcsak egyszerűbb, mint egy külön Docker konténer létrehozása, hanem kevesebb hibalehetőséget is rejt magában. Próbáld ki, és élvezd a gyors és hatékony ZeroTier routingot!