Obsidean_VM/01-Documentation/VPN - Zerotier - Wireguard/Configurazione ZeroTier con...

5.2 KiB


Configurazione Attuale in ZeroTier Central

  • Rete ZeroTier: Configurata con routing
  • Rotta configurata: 172.16.0.0/16 via 10.147.18.24
  • Home Assistant: IP ZeroTier 10.147.18.24
  • Impostazioni nodo Home Assistant: "Allow Ethernet Bridging" abilitato !Pasted image 20250501184158.png

Aggiungere questa ruta o due o tre tipo 172.16.==1==.0/24 via 10.147.18.24 + 172.16.==17==.0/24 via 10.147.18.24 !Pasted image 20250501184305.png

Considerazioni sulle Subnet

La subnet 172.16.0.0/16 è molto ampia (65.536 indirizzi IP). Per una rete domestica, questo potrebbe essere eccessivo e presenta alcuni svantaggi:

  • Sicurezza: Espone potenzialmente un intervallo molto più ampio di indirizzi rispetto a quelli necessari
  • Prestazioni: Le tabelle di routing con subnet più specifiche funzionano in modo più efficiente
  • Organizzazione: È più difficile gestire uno spazio di indirizzi così grande

Alternative consigliate:

  • 172.16.x.0/24: Dove "x" sarebbe un numero specifico per la rete locale (come 172.16.1.0/24). Questo fornirebbe 256 indirizzi, sufficienti per la maggior parte delle reti domestiche.
  • 172.16.0.0/20: Se sono realmente necessari più indirizzi, questo fornirebbe 4.096 IP, che è comunque molto più specifico di /16.
  • Aggiungere questa ruta o due o tre tipo 172.16.==1==.0/24 via 10.147.18.24 + 172.16.==17==.0/24 via 10.147.18.24

Configurazione Necessaria su Home Assistant

1. Abilitare l'IP Forwarding

echo 1 > /proc/sys/net/ipv4/ip_forward
  • Questo nel tuo caso già e aposto.

Per renderlo permanente, modificare /etc/sysctl.conf e aggiungere:

net.ipv4.ip_forward=1

2. Identificare le Interfacce di Rete

Prima di configurare le regole NAT e firewall, è necessario identificare le interfacce di rete corrette:

# Mostra tutte le interfacce di rete
ip addr show

In questo output:

  • L'interfaccia ZeroTier avrà un nome come zt0, zt1 o ztxxxxx (dove xxxxx è parte dell'ID di rete)
  • L'interfaccia di rete locale potrebbe NON essere eth0. Nei sistemi moderni, potrebbe essere chiamata:
    • enp3s0, enp0s25, ens33 o simili (per Ethernet cablata)
    • wlan0 o wlp3s0 (per WiFi)
    • br0 o hassio (se c'è un bridge di rete configurato)
    • docker0 (se Docker è installato)

È importante identificare correttamente l'interfaccia che connette Home Assistant alla rete locale (quella che ha l'indirizzo IP della rete locale, es. 172.16.x.x).

3. Regole NAT

# Attivare MASQUERADE per consentire ai pacchetti dalla rete ZeroTier di uscire verso la rete locale
iptables -t nat -A POSTROUTING -s 10.147.18.0/24 -d 172.16.0.0/16 -j MASQUERADE

# Se si desidera anche l'accesso a Internet, aggiungere (sostituire enp3s0 con l'interfaccia di rete locale reale):
iptables -t nat -A POSTROUTING -s 10.147.18.0/24 -o enp3s0 -j MASQUERADE

# Per essere più specifici con l'interfaccia ZeroTier (sostituire zt0 con l'interfaccia ZeroTier reale):
iptables -t nat -A POSTROUTING -i zt0 -o enp3s0 -j MASQUERADE

non me ricordo se era enp3s0 pero me ricordo che non era eth0

4. Regole Firewall

# Consentire il traffico di inoltro dalla rete ZeroTier alla rete locale
# (sostituire zt0 con l'interfaccia ZeroTier reale, enp3s0 con l'interfaccia di rete locale)
iptables -A FORWARD -i zt0 -o enp3s0 -s 10.147.18.0/24 -d 172.16.0.0/16 -j ACCEPT

# Consentire il traffico di ritorno
# (sostituire enp3s0 con l'interfaccia di rete locale, zt0 con l'interfaccia ZeroTier)
iptables -A FORWARD -i enp3s0 -o zt0 -s 172.16.0.0/16 -d 10.147.18.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT

5. Salvare le Regole per la Persistenza dopo il Riavvio

# Su sistemi basati su Debian
iptables-save > /etc/iptables/rules.v4

# Oppure per Home Assistant OS, potrebbe essere necessario:
iptables-save > /config/scripts/iptables-rules

Per rendere queste regole permanenti in Home Assistant, puoi creare un file in /config/scripts/apply-iptables.sh:

#!/bin/bash
# Script per applicare le regole iptables all'avvio

# Abilitare l'IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# Ripristinare le regole salvate
iptables-restore < /config/scripts/iptables-rules

exit 0

Quindi rendilo eseguibile:

chmod +x /config/scripts/apply-iptables.sh

E configuralo per l'esecuzione all'avvio in Home Assistant aggiungendo in configuration.yaml:

shell_command:
  apply_iptables: bash /config/scripts/apply-iptables.sh

automation:
  - alias: Apply iptables at startup
    trigger:
      platform: homeassistant
      event: start
    action:
      service: shell_command.apply_iptables

5. Script di Avvio

Creare uno script per applicare queste regole dopo il riavvio. Può essere aggiunto alla configurazione di Home Assistant per l'esecuzione automatica.

Note Importanti:

  • Regolare 10.147.18.0/24 in base alla subnet effettiva della rete ZeroTier
  • Modificare eth0 con l'interfaccia di rete reale che Home Assistant utilizza per connettersi alla rete locale
  • Si consiglia di utilizzare una subnet più specifica per la rete locale (ad esempio 172.16.1.0/24 invece di 172.16.0.0/16)
  • Potrebbe essere necessario adattare le regole in base alla configurazione specifica della rete