Las dos trampas del cortafuegos
Esta página responde a por qué un agente que está en marcha puede seguir siendo
inalcanzable en un router con el cortafuegos por defecto de MikroTik, y qué
cambia install en ese cortafuegos para que no lo sea. Añade dos pertenencias
a listas y nada más; sin --expose no escribe ninguna regla de cortafuegos.
Dos reglas que descartan todo lo que envía un contenedor
Sección titulada «Dos reglas que descartan todo lo que envía un contenedor»El cortafuegos por defecto de MikroTik lleva dos reglas raw que descartan en silencio cada paquete que envía un contenedor:
drop the rest (in-interface-list=!LAN)casa con un paquete que entra por una interfaz fuera de la lista de interfacesLAN, y una veth nueva está fuera de ella.drop local if not from default IP range (src-address-list=!LANs)casa con una dirección de origen fuera de la address-listLANs, y la /30 del contenedor está fuera de ella.
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.
Lo que añade install
Sección titulada «Lo que añade install»install añade la veth a tu lista de interfaces LAN y la /30 del contenedor
a tu address-list LANs. Las dos son añadidos a listas que ya existen, las dos
llevan la etiqueta, y uninstall quita las dos por esa etiqueta más la lista y
el miembro. Con los valores por defecto, las dos escrituras son:
| Paso | Orden |
|---|---|
| pertenencia a interface-list | / |
| pertenencia a address-list | / |
Desliza en horizontal para ver todas las columnas
En RB5009UG+S+, RouterOS 7.24.2, estas dos pertenencias bastaron para que una máquina de la LAN llegara al agente directamente a través del router.
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.
Cuando tus listas tienen otros nombres
Sección titulada «Cuando tus listas tienen otros nombres»Pasa los nombres que usan tus reglas:
--iface-list(MIKROSCOPE_IFACE_LIST): la lista que usa tu regla de descartein-interface-list=!….--addr-list(MIKROSCOPE_ADDR_LIST): la lista que usa tu regladrop local if not from default IP range.
doctor comprueba las dos antes de que install escriba nada. Una lista de
interfaces que no existe se informa con la solución
/, o la opción. Una address-list sin entradas también
se informa; el texto de su solución dice que una lista vacía vale solo si no
existe esa regla, pero la comprobación sigue contando como ausente, y solo
--no-doctor la supera, saltándose con ella todas las demás comprobaciones.
uninstall, status y upgrade necesitan otra vez las mismas dos opciones,
porque los selectores se construyen a partir de ellas; con otros nombres,
upgrade no encuentra las pertenencias y se niega con
nothing to upgrade: run install first.
Cuando la pertenencia ya existe
Sección titulada «Cuando la pertenencia ya existe»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á después. Elige otro --veth u otro --subnet, o quita tu entrada
a mano si es tuya. uninstall nunca la toca.
Las reglas que añade --expose
Sección titulada «Las reglas que añade --expose»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, las dos
etiquetadas y las dos quitadas por
uninstall --expose --lan-address <la misma dirección> --token …: el selector
del dst-nat casa con la dirección LAN, y --expose se rechaza sin token aunque
ningún selector lo use. Qué abre eso y por qué
el token pasa a ser obligatorio está en
Lo que abre –expose; cómo usarlo está en
Llegar al agente.