In breve: una interface list è un gruppo di interfacce con un nome, per esempio WAN o LAN. Le regole del firewall, il neighbor discovery e il MAC server guardano la lista invece della singola porta: quando aggiungi una linea PPPoE, una LTE o una seconda WAN, la metti nella lista e le regole valgono subito anche per lei.
Che cos’è una interface list?
È un’etichetta che metti su più interfacce. Invece di scrivere ether1 in ogni regola, scrivi WAN, e decidi in un posto solo quali interfacce sono “WAN”. Il nome lo scegli tu: RouterOS non dà nessun significato speciale a WAN o LAN, sono solo nomi.
Le liste stanno in /interface list, le interfacce che ne fanno parte in /interface list member:
/interface list add name=WAN
/interface list add name=LAN
/interface list member add list=WAN interface=ether1
/interface list member add list=LAN interface=bridge
Una stessa interfaccia può stare in più liste. I nomi delle interfacce qui sono quelli del mio laboratorio: adattali ai tuoi.
Quali liste ci sono già sul router?
Ce ne sono quattro predefinite, che non crei e non cancelli (se ci provi, la risposta è cannot remove builtin): all (tutte le interfacce), none (nessuna), dynamic (le interfacce con il flag dinamico) e static (tutte le altre). Nel print le riconosci dal flag *, che vuol dire “lista di sistema”.
/interface list print
/interface list member print
La configurazione di default di MikroTik, quella con le regole commentate defconf, crea in più le liste WAN e LAN: la porta verso il provider in WAN, il bridge in LAN. Se resetti con no-defaults=yes quelle due liste non ci sono, e le crei a mano come nell’Hardening di base di un router MikroTik.
none serve più di quanto sembri: è il valore che spegne un servizio su tutte le interfacce, per esempio /tool mac-server set allowed-interface-list=none.
Come si compone una lista con include ed exclude?
Una lista può prendere i membri di altre liste con include e toglierne con exclude. Così costruisci “tutto tranne la WAN” senza elencare porta per porta:
/interface list add name=NON-WAN include=all exclude=WAN
L’ordine con cui RouterOS calcola la lista è fisso:
- aggiunge i membri delle liste in
include; - toglie i membri delle liste in
exclude; - aggiunge i membri statici, quelli che hai messo in
/interface list member.
Il terzo punto è la trappola: un membro statico entra anche se una lista in exclude lo avrebbe tolto. E i membri che arrivano da include ed exclude non compaiono in /interface list member print: lì vedi solo quelli statici.
Dove si usano le interface list?
Ovunque RouterOS deve decidere “su quali interfacce”. I posti che incontri subito:
- firewall:
in-interface-listeout-interface-listin filter, NAT, mangle e raw, anche con la negazione (in-interface-list=!LAN); - neighbor discovery:
/ip neighbor discovery-settings set discover-interface-list=LAN, il router si annuncia e vede i vicini solo lì; - MAC server:
/tool mac-server set allowed-interface-list=LANper il MAC Telnet e/tool mac-server mac-winbox set allowed-interface-list=LANper WinBox via MAC; - Detect Internet: controlla le interfacce di
detect-interface-liste mette da solo, come membri dinamici, quelle che risultano LAN, WAN o Internet nelle liste che indichi; - PPP: nel profilo PPP il parametro
interface-listaggiunge alla lista ogni interfaccia creata da quel profilo; - bridge: una lista può essere aggiunta come porta del bridge, e da RouterOS 7.17 anche nei campi
taggedeuntaggeddella tabella VLAN.
⚠️ Attenzione: Detect Internet può installare DHCP client, rotte di default e server DNS. Se lo accendi, controlla subito cosa ha cambiato nella configurazione.
Perché nel firewall conviene in-interface-list invece di in-interface?
Perché le regole parlano del ruolo dell’interfaccia, non del suo nome. Nel manuale in-interface-list “funziona come in-interface”, ma su un insieme. La differenza si vede il giorno in cui la rete cambia.
Prendi un router con la WAN su ether1 e il firewall dell’hardening. Il cliente aggiunge una linea in fibra con PPPoE. Con le liste fai una cosa sola:
/interface list member add list=WAN interface=pppoe-out1
Da quel momento il masquerade out-interface-list=WAN esce anche dalla fibra, e il drop in-interface-list=WAN connection-nat-state=!dstnat nel forward protegge la LAN anche da quel lato. Nessuna regola da riscrivere, nessuna da duplicare.
Con in-interface=ether1 avresti dovuto copiare ogni regola per pppoe-out1, poi per la LTE, poi per la terza linea. Più regole doppie vuol dire più occasioni per dimenticarne una. E la regola dimenticata è un buco.
Lo stesso vale per l’altro lato. Nell’howto WireGuard dal telefono l’interfaccia wg-casa entra nella lista LAN, e i telefoni passano dalle stesse regole della rete di casa.
Le liste non sostituiscono sempre in-interface. Quando devi distinguere una linea dall’altra, come nel bilanciamento con PCC su più connessioni internet, il mangle marca le connessioni per singola interfaccia. Lì serve il nome preciso.
Come entrano in una lista le interfacce che nascono e muoiono?
Dipende da chi crea l’interfaccia. Un client PPPoE configurato da te (pppoe-out1) esiste nella configurazione anche quando la linea è giù: lo aggiungi come membro una volta e resta lì.
Le interfacce dinamiche, invece, come quelle che un server PPPoE crea per ogni utente collegato, appaiono e spariscono da sole. Non puoi metterle a mano in /interface list member. Le strade sono due:
- il parametro
interface-listdel profilo PPP, che le mette nella lista quando nascono; - la lista predefinita
dynamic, da usare nelle regole o dentro uninclude.
/ppp profile set [find name=default] interface-list=LAN
Secondo il manuale, i membri aggiunti così compaiono con il flag D (dinamico) in /interface list member print.
Quali sono gli errori tipici?
La regola punta a una lista che non c’è
Copi un blocco di regole da un altro router e il nome non torna: WAN contro wan, oppure su un router resettato con no-defaults=yes le liste non esistono proprio. RouterOS rifiuta la regola con input does not match any value of interface-list, e se lo script prosegue ti ritrovi un firewall a metà. Prima le liste, poi le regole.
Hai cancellato una lista che una regola usava
Qui RouterOS non protesta: la lista sparisce e la regola resta, con un numero al posto del nome (per esempio in-interface-list=*2000015). Non è segnata come invalida, ma non corrisponde più a niente. Prima di cancellare una lista, cerca chi la usa:
/ip firewall filter print where in-interface-list=NOME or out-interface-list=NOME
/ip firewall nat print where in-interface-list=NOME or out-interface-list=NOME
La nuova porta WAN è rimasta fuori
Aggiungi la seconda linea, configuri l’indirizzo, la rotta funziona, ma non la metti in WAN. Il masquerade non la vede, quindi i client non navigano da lì. E il drop del forward non la protegge. Ogni volta che aggiungi una linea, il primo comando è il member add.
Hai messo la porta al posto del bridge
Il traffico che il router instrada entra dal bridge, non da ether2 che ne è una porta. Se in LAN metti ether2 invece di bridge, la regola in-interface-list=LAN non corrisponde e la LAN resta chiusa fuori dal router. Per la porta fisica dentro un bridge il firewall ha in-bridge-port, che funziona solo con use-ip-firewall attivo nel bridge.
Il neighbor discovery ragiona al contrario: lavora sulle singole porte. Se in lista c’è il bridge, partecipano tutte le sue porte; se vuoi il discovery solo su alcune, metti quelle porte e non il bridge. Il manuale lo dice chiaro: aggiungere il bridge non equivale ad aggiungere tutte le sue porte, e viceversa. I dettagli sono nel manuale MikroTik: Interface Lists e nel manuale MikroTik: Neighbor discovery.
In quali howto lo usi?
- Hardening di base di un router MikroTik con RouterOS 7: liste
WANeLAN, neighbor discovery, MAC server e firewall minimo; - Port knocking su MikroTik: tutte le bussate valgono solo con
in-interface-list=WAN; - VPN WireGuard dal telefono al MikroTik: l’interfaccia della VPN aggiunta alla lista
LAN.
Provato in laboratorio su una routerboard con RouterOS 7.24.5 (stable): liste predefinite e cannot remove builtin, lista con include=all exclude= e membro statico che rientra nonostante l’esclusione (contatori delle regole), porta del bridge in lista al posto del bridge (nessuna corrispondenza), regola rifiutata con una lista inesistente, lista cancellata mentre una regola la usava. PPPoE, profilo PPP e Detect Internet sono dalla documentazione.
Domande frequenti
Le liste WAN e LAN esistono già su un MikroTik?
Solo se il router ha la configurazione di default. Dopo un reset con no-defaults=yes le liste predefinite sono soltanto all, none, dynamic e static: WAN e LAN le crei tu con /interface list add.
Che differenza c’è fra in-interface e in-interface-list?
Funzionano allo stesso modo, ma in-interface-list guarda un gruppo di interfacce. Quando aggiungi una linea alla lista, tutte le regole che la usano valgono anche per lei senza modificarle.
Perché non vedo tutti i membri in /interface list member?
Perché lì compaiono i membri statici e quelli dinamici aggiunti da PPP o Detect Internet (flag D), ma non quelli che la lista prende da include ed exclude.
Nella lista LAN metto il bridge o le sue porte?
Per il firewall il bridge: il traffico instradato entra dal bridge, non dalla porta. Per limitare il neighbor discovery ad alcune porte, invece, metti le porte e non il bridge.



