Listas del firewall
install añade la veth a una lista de interfaces y la /30 del contenedor a una address-list, para
que las reglas raw de descarte de un cortafuegos MikroTik dejen pasar las respuestas del agente.
Nombra las listas que usan tus reglas con --iface-list y --addr-list, o none cuando ninguna
regla las necesita. Sin --expose, install no escribe ninguna regla de cortafuegos.
Reglas raw de descarte
Sección titulada «Reglas raw de descarte»La guía Building Advanced Firewall
de MikroTik añade reglas raw comentadas defconf:. Dos de ellas descartan en silencio cada paquete
que envía un contenedor nuevo:
| Regla | Descarta un paquete que | Un contenedor nuevo cae porque | Qué lo deja pasar |
|---|---|---|---|
drop the rest, in-interface-list=!LAN |
entra por una interfaz fuera de la lista LAN |
su veth no está en ninguna lista | la veth en LAN: --iface-list |
drop local if not from default IP range, src-address-list=!LANs |
viene de una dirección fuera de la address-list LANs |
su /30 no está en ninguna address-list | la /30 en LANs: --addr-list |
la misma regla escrita src-address=!192.168.88.0/24 |
viene de una dirección fuera de ese rango | su /30 está fuera del rango | ninguna lista: añade antes una regla de aceptación para in-interface=<veth>, o elige una --subnet dentro del rango |
Desliza en horizontal para ver todas las columnas
El descarte es silencioso. Desde tu máquina el agente no responde, y eso se ve igual que un
contenedor que no está en marcha; por eso el sondeo tras install pregunta al router si el
contenedor está en marcha antes de sugerir nada más (Acceso por
red).
Otras reglas de descarte en raw, input o forward pueden descartar el tráfico del contenedor en
otro punto. install no añade nada para ellas más allá de las dos pertenencias; la
comprobación de trampas de doctor las lee y nombra la regla.
Pertenencias a listas
Sección titulada «Pertenencias a listas»Con las listas por defecto, install escribe estas dos entradas:
| Paso | Orden | Se omite con |
|---|---|---|
| pertenencia a interface-list | /interface/ |
--iface-list none |
| pertenencia a address-list | /ip/ |
--addr-list none |
Desliza en horizontal para ver todas las columnas
- Las dos llevan la etiqueta.
uninstallquita cada una por la etiqueta, la lista y el miembro. - La lista de interfaces tiene que existir. La address-list no: su primera entrada la crea, y
uninstallquita la entrada. - Con las dos pertenencias, una máquina de la LAN llega al agente directamente a través del router (verificado).
Una pertenencia no se limita a mikroscope. Cualquier otra regla de tu router que case con la lista de
interfaces LAN o con la address-list LANs casa también con el tráfico del contenedor, mientras
esté instalado. Lee tus propias reglas teniéndolo en cuenta.
Nombres de lista propios
Sección titulada «Nombres de lista propios»Pasa las listas que usan tus reglas de descarte:
| Opción | Variable | Por defecto | Admite | Nombra |
|---|---|---|---|---|
--iface-list |
MIKROSCOPE_IFACE_LIST |
LAN |
^[A-Za-z0-9][A-Za-z0-9_. o none; no las listas integradas de RouterOS all, dynamic ni static |
la lista que usa tu regla de descarte in-interface-list=!… |
--addr-list |
MIKROSCOPE_ADDR_LIST |
LANs |
^[A-Za-z0-9][A-Za-z0-9_. o none |
la lista que usa tu regla drop local if not from default IP range |
Desliza en horizontal para ver todas las columnas
mikroscope install --iface-list MYLAN --addr-list MYNETSUna lista de interfaces integrada no admite miembros, así que --iface-list static se detiene antes
de la primera conexión:
mikroscope: iface-list "static" is a RouterOS built-in list, which takes no member: name the list your firewall's in-interface-list=!… drop rule uses, or none to join no liststatus, upgrade y uninstall leen las listas de la instalación que hay en el router, así que no
necesitan ninguna opción de listas. Una opción de listas que contradice la instalación se rechaza,
nombrando los dos valores (Forma de la
instalación).
Sin pertenencia
Sección titulada «Sin pertenencia»Un router sin ninguna regla que descarte por lista no necesita ninguna de las dos pertenencias. Omítelas:
mikroscope install --iface-list none --addr-list nonedoctor te dice cuándo es así: su comprobación de trampas termina con
they would pass with no list membership as well, y una lista de interfaces que falta se informa con
--iface-list none como primera solución:
MISSING interface list LAN exists (found=0) fix: --iface-list none: no firewall rule here needs the veth in an interface list. Or create it: `/interface/list/add name=LAN`Comprobación de trampas
Sección titulada «Comprobación de trampas»doctor, solo o dentro de install, comprueba las listas y después sigue las respuestas del agente
a través de tu cortafuegos:
| Comprobación, tal como se imprime | Pasa cuando | La solución que nombra |
|---|---|---|
| interface list <list> exists | existe la lista --iface-list (por defecto LAN). Con --iface-list none doctor imprime interface list the veth joins y lo da por bueno: no se escribe ninguna pertenencia | --iface-list none si ninguna regla del cortafuegos necesita la veth en una lista (doctor lo ofrece primero en ese caso); si no, /interface/, o pasa la lista que usa tu regla de descarte in-interface-list=!… |
| address list <list> | siempre: install añade la /30 a la lista --addr-list (por defecto LANs), lo que la crea si falta, y uninstall retira la entrada. Con --addr-list none doctor imprime address list the /30 joins. Si alguna regla necesita esa pertenencia lo responde la fila siguiente | ninguno |
| no firewall rule drops the agent's replies | doctor lee todas las reglas activas de las cadenas por las que pasan las respuestas del agente, /ip/firewall/raw prerouting y /ip/firewall/filter forward e input, y recorre cada una como RouterOS, gana la primera que coincide, con las respuestas en las listas a las que se une el plan: ninguna regla las descarta. Un aviso cuando una regla podría hacerlo, porque filtra por algo que doctor no evalúa (un destino, una marca, un límite de tasa), y cuando las respuestas a un equipo de la LAN pasan pero una regla podría descartar las que van al propio router (filter input), que necesita el transporte por relay | las --iface-list y --addr-list que dejan pasar las respuestas; cuando ninguna lista lo consigue (una regla src-address=!<rango>, por ejemplo), añade antes de esa regla una de aceptación para in-interface=<veth>, o elige una --subnet dentro del rango |
Desliza en horizontal para ver todas las columnas
La comprobación de trampas lee todas las reglas activas de /ip/firewall/raw prerouting y de
/ip/firewall/filter forward e input, y recorre cada cadena como RouterOS, por orden, gana la
primera que coincide. Las respuestas que sigue entran por la veth, desde la dirección y el puerto
del agente, en las listas a las que se une el plan.
| Imprime | Significa | Haz |
|---|---|---|
ok … no rule drops them |
las respuestas pasan con las pertenencias del plan | nada |
ok … they would pass with no list membership as well |
ninguna regla necesita una pertenencia | --iface-list none --addr-list none, si no quieres ninguna pertenencia |
MISSING … drops them, solución install with --iface-list … --addr-list … |
una regla descarta las respuestas, y otras listas que nombran las reglas las dejan pasar | instala con las listas que nombra la solución |
MISSING … drops them, solución … add an accept rule for in-interface=<veth> before it |
ninguna lista de las que nombran las reglas deja pasar las respuestas, como con una regla src-address=!<rango> |
añade esa regla de aceptación, o elige una --subnet dentro del rango que nombra la solución |
WARN … may drop them |
la regla filtra por algo que doctor no evalúa: un destino, una marca, un límite de tasa |
si el agente no responde tras install, mira primero esa regla |
WARN … may drop the ones to the router itself |
las respuestas a una máquina de la LAN pasan, y una regla de filter input podría descartar las que van al router |
usa el transporte directo; el relay podría no llegar al agente |
Desliza en horizontal para ver todas las columnas
doctor nombra una regla por su tabla, cadena y número, sus condiciones y su comentario, como en
/ip/firewall/raw rule 0 (chain=prerouting action=drop, …) "…". Nunca propone una lista en la que
esté el enlace de subida del router, y da por hecho que una address-list distinta de la del plan no
tiene ninguna entrada para la /30.
Recorre una regla tal como la aplica RouterOS, que no siempre es como se lee. RouterOS salta una regla que marca como inválida, y una regla que nombra una lista de interfaces que se quitó sigue siendo válida, con el id de la lista en lugar de su nombre, y coincide como si la lista estuviera vacía (Exposición del router).
Exposición del router
Sección titulada «Exposición del router»Dos avisos son sobre el router y no sobre la instalación. No cambian el estado de salida de
doctor ni si install sigue adelante, pero un router cuyo cortafuegos no hace lo que parece hacer
lleva tráfico que nunca debió llevar, y entonces todos los paneles miden ese tráfico:
| Comprobación, tal como se imprime | Pasa cuando | La solución que nombra |
|---|---|---|
| no firewall rule doctor reads is invalid or names a deleted list | un aviso: ninguna regla de raw prerouting ni de filter forward e input está marcada como inválida, que RouterOS salta como si no existiera (nombra una interfaz que se quitó o no está lista, y about dice cuál), y ninguna nombra una lista de interfaces que se quitó, que RouterOS guarda como el id de la lista (in-interface-list=!*2000010) y aplica como una lista vacía. Una regla cambiada un momento antes se lee inválida, sin motivo, hasta que RouterOS la aplica | corrige o quita lo que nombra una regla inválida; vuelve a poner por nombre una lista borrada, porque crear una lista con el mismo nombre no repara la regla. Sin motivo, ejecuta doctor otra vez |
| the router does not answer DNS from its uplink | un aviso: allow-remote-requests de /ip/dns está apagado, o una regla de raw prerouting o de filter input descarta una consulta UDP al puerto 53 que entra por la interfaz de la ruta por defecto activa, recorrida como en la comprobación de trampas, gana la primera que coincide. Un aviso de que las consultas podrían pasar cuando una regla filtra por algo que doctor no evalúa, una lista de direcciones de origen por ejemplo. IPv6 no se lee | una regla de descarte para el puerto 53 UDP y TCP en el enlace de subida antes de cualquier aceptación que lo coja, o /ip/dns/set allow-remote-requests=no si ningún equipo de la LAN usa el router como resolvedor |
Desliza en horizontal para ver todas las columnas
- Una regla que no hace nada, o que hace demasiado. Una regla inválida, que nombra una interfaz
que se quitó o no está lista, se salta: una regla de descarte inválida no descarta nada. Una regla
cuya lista de interfaces se quitó se lee
in-interface-list=!*2000010y coincide como si la lista estuviera vacía, así que un descarte!LANque se quede así descarta todo paquete que llega a la cadena input, incluidos el SSH y el Winbox del propio router desde la LAN. Crear una lista con el mismo nombre no la repara: vuelve a poner por nombre la lista de la regla. - Un resolvedor abierto. Con
allow-remote-requests=yesen/ip/dns, el router responde DNS en cualquier interfaz por la que su cortafuegos deje entrar consultas.doctorsigue una consulta UDP al puerto 53 que entra por la interfaz de la ruta por defecto activa a través de raw prerouting y filter input; cuando ninguna regla la descarta, el router responde DNS para Internet, y los ataques de reflexión que lo encuentran llenan su tabla de conexiones y su CPU. El descartein-interface-list=!LANde la cadena input de la configuración por defecto los para.
Los dos se comprobaron contra RouterOS en el laboratorio (Probado en).
Pertenencias existentes
Sección titulada «Pertenencias existentes»Si la veth ya está en la lista de interfaces, o la /30 ya está en la address-list, y esa entrada no
lleva la etiqueta de mikroscope, install se detiene en ese paso y lo nombra: el efecto existe, pero
mikroscope no lo creó y no lo quitará. Elige otro --veth u otro --subnet, o quita tu entrada a
mano si es tuya. uninstall nunca la toca.
Reglas de exposición
Sección titulada «Reglas de exposición»Solo --expose escribe reglas de cortafuegos: un dst-nat en la dirección LAN del router y un accept
en forward colocado antes del primer drop de forward, los dos etiquetados. uninstall los quita con
el resto de la instalación, porque lee en el router que la instalación estaba expuesta. Exponer en
la LAN tiene las dos reglas y quién llega al agente a través de
ellas.