ip6tables: come gestire il prefisso che cambia periodicamente?


4

Il mio ISP mi fornisce IPv6 nativo (purtroppo DS-Lite per v4) e sto utilizzando SLAAC per i client nella mia rete locale dietro un router a banda larga.

Come non mi fido del router (che è configurato dal mio ISP su TR-691) che ho impostato ip6tables regole su ogni cliente, ad es. limitando l'accesso SSH alle stazioni nella stessa sottorete:

$ ip6tables -A services -s 2a02:8071:28c2:5400::/64 -p tcp --dport 22 -j ACCEPT

Il problema ora è che il prefisso cambia periodicamente, ca. una volta al mese.

C'è un ip6tables affermazione che corrisponde dinamicamente al prefisso (es) corrente di una determinata interfaccia?

O come gestiresti il ​​prefisso che cambia? Ho pensato di scrivere uno script di init che prima determina il prefisso attuale tramite Router-Solicitation e quindi genera le regole ip6tables appropriate. Ma questo suona sporco in qualche modo ...


Se i tuoi sistemi si trovano tutti sulla stessa rete, perché non utilizzare semplicemente gli indirizzi locali del collegamento (fe80 :: / 64) per la comunicazione? O forse registrati per un account elettrico di uragano. Ti danno un'assegnazione statica. Potresti usare quello spazio oltre allo spazio che ricevi dal tuo ISP.
Zoredache

@ AndréDaniel, come pensi che lo spazio dell'indirizzo HE induca la latenza sulle connessioni tra i dispositivi sulla rete interna? Non hai nemmeno bisogno di avere il tunnel HE abilitato. Ho appena menzionato HE, dato che è un modo per ottenere un'assegnazione pubblica gratuita di IPv6 che potresti usare per la tua rete interna.
Zoredache

@Zoredache sì mi dispiace averti frainteso, stavo pensando di usare il tunnel HE per sostituire l'IPv6 fornito dall'ISP e usarlo per le connessioni esterne.

1
Forse usare un cron job per verificare se il prefisso è cambiato ogni ora e cambiare la regola se è così?

3
O generare un prefisso ULA per uso interno. Di solito è più semplice degli indirizzi locali di collegamento.
Sander Steffann

Risposte:


2

In teoria, il modo giusto per gestirlo è con DHCP Prefix Delegation e DNS dinamico.

Quindi, funzionerebbe così:

1) l'istanza di linux del router richiede un indirizzo IPv6 e una delega del prefisso IPv6 dall'ISP sull'interfaccia A

2) assegna uno / 64 dal prefisso delegato all'interfaccia B, che ha tutte le altre macchine. Pubblicizza questo prefisso tramite pacchetti RA e / o tramite il daemon del server DHCP di tua scelta

3) i client afferrano gli indirizzi IPv6 e si registrano nel DNS locale tramite il nome host, oppure rispondono alle richieste mDNS per quel nome se stanno eseguendo bonjour, Avahi, ecc.

4) regole del firewall e praticamente qualsiasi altra configurazione relativa alla rete si basa su nomi host, non su indirizzi IP. Questo è il modo IPv6: i nomi DNS sono buoni, gli indirizzi letterali sono cattivi perché sono difficili da ricordare e da digitare.

Il problema principale che troverai è che iptables e ip6tables supportano solo le regole basate su hostname risolvendo i nomi degli host una volta durante l'installazione della regola. Quindi probabilmente dovrai scrivere degli script per reinstallare le regole ogni volta che cambia il prefisso. Peggio ancora, se un host è offline o non risolvibile da mDNS o DDNS al momento dell'installazione della regola, le cose si romperanno silenziosamente.

In breve, le tabelle ip (6) sono semplicemente rotte per ogni caso in cui gli indirizzi IP cambiano, anche su IPv4. Ciò significa che è rotto per qualsiasi rete di dimensioni ragionevoli, almeno su un sistema che funge da router.

Un sacco di prodotti firewall commerciali gestiscono questo caso d'uso molto meglio (anche se molti sono basati su Linux, come SonicWall). Sospetto che si limitino a riscrivere gli FQDN periodicamente in base a TTL e ad aggiornare IPtables o i loro moduli del kernel di rete personalizzati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.