Talleres Biela arregla coches desde hace treinta años y acaba de poner un hEX. Por ether1
le llega el operador, con una dirección pública fija (la del ejemplo, 203.0.113.77); en
ether2, el PC de la oficina; en ether3, el grabador de las cámaras; y en ether4, la
wifi para los clientes que esperan su coche. Las direcciones y la ruta por defecto ya están
puestas (eso fue el tema 2). Hoy toca lo que decide qué pasa con cada paquete: que la oficina
salga a internet, que el dueño vea las cámaras desde el móvil y que nadie de fuera, ni de la
wifi, llegue a donde no debe.
Dos tablas: NAT y filtro
Todo está en IP ▸ Firewall, y en dos pestañas:
- NAT (
/ip firewall nat) cambia direcciones: el origen de lo que sale (cadena srcnat) o el destino de lo que entra (cadena dstnat). - Filter Rules (
/ip firewall filter) decide si pasa:accept,drop(tirarlo sin contestar) oreject(tirarlo y avisar).
El filtro tiene tres cadenas, según adónde va el paquete:
- input: lo que va al propio router (Winbox, un ping a su dirección, su DNS).
- forward: lo que pasa a través del router (el PC de la oficina navegando, el móvil del dueño viendo las cámaras).
- output: lo que sale del propio router (su ping a 8.8.8.8).
Salir a internet: masquerade
El router ya sale a internet: tiene una dirección pública y su ruta por defecto. Pero el PC de la oficina tiene 192.168.88.10, una dirección privada: sus paquetes llegan a internet y la respuesta no sabe volver, porque esas direcciones no se encaminan por internet. La solución es que el router cambie el origen al salir por ether1 y ponga su dirección pública. Eso es masquerade (en srcnat):
IP ▸ Firewall ▸ NAT ▸ +, con Chain: srcnat y Out. Interface: ether1 en General y Action: masquerade en la pestaña Action.
[admin@R-Biela] > /ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade
Cuando vuelve la respuesta, el router se acuerda de a quién se la cambió y se la devuelve al PC. Masquerade coge la dirección que tenga ether1 en cada momento, así que vale también si el operador la da por DHCP. Si es fija, se puede usar src-nat con To Addresses (la pública).
Ejercicio
La oficina sale a internet
El router del taller ya tiene internet (prueba un ping a 8.8.8.8 desde él), pero el PC de la oficina no navega: sus paquetes salen con 192.168.88.10, una dirección privada, e internet no sabe volver a ella. Haz que el router los saque con su dirección pública.
Encendiendo el router…
Publicar un servicio: dst-nat
El dueño quiere ver las cámaras desde el móvil. Desde internet solo se llega a la dirección
pública del router, no al grabador (192.168.30.20, privada). Con dst-nat, lo que llegue a un
puerto del router se reenvía a un equipo de dentro: aquí, lo que entre por ether1 al 8080,
al 80 del grabador (su web).
[admin@R-Biela] > /ip firewall nat add chain=dstnat in-interface=ether1 protocol=tcp dst-port=8080 action=dst-nat to-addresses=192.168.30.20 to-ports=80
[admin@R-Biela] > /ip firewall nat print 0 chain=srcnat action=masquerade out-interface=ether1 1 chain=dstnat action=dst-nat to-addresses=192.168.30.20 to-ports=80 protocol=tcp in-interface=ether1 dst-port=8080
Los puertos (Dst. Port, To Ports) solo existen con tcp o udp: sin el protocolo, el router no deja ponerlos. Y sin Dst. Port, la regla se llevaría todos los puertos al grabador, también el de Winbox.
Si el equipo de dentro cambia de puerto (un grabador nuevo con su web en otro), no hace falta otra
regla: se cambia To Ports en la que hay. En Winbox, abriéndola; en la consola, con set:
/ip firewall nat set [ find dst-port=8080 ] to-ports=….
Ejercicio
Las cámaras, desde el móvil
El dueño quiere ver las cámaras desde el móvil cuando está fuera. El grabador (192.168.30.20) tiene su web en el puerto 80. Publícala en el puerto 8080 de la dirección pública del taller: lo que llegue ahí por ether1, al 80 del grabador.
Encendiendo el router…
Proteger el router: la cadena input
Ahora mismo, cualquiera en internet puede llamar a la puerta del router: Winbox (8291) contesta en la dirección pública. Lo primero es tirar lo que llegue al router por ether1. Pero cuidado: las respuestas a lo que pide el propio router (su ping, su DNS) también entran por ether1. Por eso, antes, una regla que acepte lo establecido: lo que es respuesta a algo que ya empezó (established) o tiene que ver con ello (related).
[admin@R-Biela] > /ip firewall filter add chain=input connection-state=established,related
[admin@R-Biela] > /ip firewall filter add chain=input in-interface=ether1 action=drop
[admin@R-Biela] > /ip firewall filter print 0 chain=input action=accept connection-state=established,related 1 chain=input action=drop in-interface=ether1
Sin action, la regla es accept. En Winbox, Connection State son casillas: marca established y related.
Ejercicio
El router, cerrado desde fuera
Desde internet, cualquiera puede llamar a la puerta del router: Winbox (8291) contesta en la dirección pública. Ciérralo en la cadena input, sin dejar al router sin internet (sus respuestas también entran por ether1) ni a la oficina sin Winbox.
Encendiendo el router…
Separar redes: la cadena forward
Los clientes de la wifi (ether4) llegan ahora mismo al PC de la oficina (ether2): el router encamina entre todas sus redes. Para que no, una regla en forward que tire lo que entra por ether4 y sale por ether2. Lo que va de la wifi a internet sale por ether1, así que sigue pasando.
[admin@R-Biela] > /ip firewall filter add chain=forward in-interface=ether4 out-interface=ether2 action=drop
Esa regla solo separa la wifi de la oficina: las cámaras están en otro puerto, y para ellas hace
falta otra igual (con su Out. Interface). O una sola que tire lo de la wifi que no vaya a
internet: out-interface=!ether1 (el «!», más abajo).
Ejercicio
La wifi de los clientes, aparte
Los clientes que esperan su coche usan la wifi de ether4 y, ahora mismo, llegan al PC de la oficina. Que la wifi no pueda entrar en la red de la oficina (ether2), pero siga teniendo internet.
Encendiendo el router…
Listas de direcciones y el «!»
Cuando una regla habla de un grupo de equipos («la oficina», «las cámaras»), mejor una lista de direcciones: IP ▸ Firewall ▸ Address Lists ▸ +, con su nombre y una dirección o una red. Varias filas con el mismo nombre son la misma lista.
[admin@R-Biela] > /ip firewall address-list add list=oficina address=192.168.88.0/24
[admin@R-Biela] > /ip firewall address-list print Columns: LIST, ADDRESS, CREATION-TIME # LIST ADDRESS CREATION-TIME 0 oficina 192.168.88.0/24 2026-10-08 09:00:00
Y el ! delante de un valor es lo contrario: src-address-list=!oficina casa con todo lo
que no está en la lista. En Winbox es la casilla ! que hay delante del campo. Así, «al
puerto de Winbox, solo la oficina» es una sola regla:
[admin@R-Biela] > /ip firewall filter add chain=input protocol=tcp dst-port=8291 src-address-list=!oficina action=drop
Ejercicio
Winbox, solo desde la oficina
Desde la wifi de los clientes también se llega a Winbox (192.168.50.1, puerto 8291). Haz una lista de direcciones, oficina, con la red de la oficina (192.168.88.0/24), y que al 8291 del router solo entre quien esté en ella.
Encendiendo el router…
El orden de las reglas
Una regla nueva va al final. Si tiene que ir antes, en Winbox se arrastra; en la consola,
move (los números son los del último print) o place-before al añadirla. move con un
solo número, sin destino, la manda al final de la lista. Si en forward
la 0 es «tirar lo que entra por ether1» y la 1 «aceptar lo establecido», esto sube la 1 delante de
la 0 y, tras otro print, mete una nueva delante de la que ahora es la 1:
[admin@R-Biela] > /ip firewall filter move 1 0
[admin@R-Biela] > /ip firewall filter add chain=forward connection-nat-state=dstnat place-before=1
connection-nat-state=dstnat casa con lo que ha pasado por un dst-nat: es la forma de dejar pasar lo que publicas (las cámaras) aunque debajo haya un «tirar todo lo que entra por ether1». Es lo mismo que trae RouterOS de fábrica en su firewall: aceptar lo establecido, y tirar lo que entra de fuera salvo lo que tiene dst-nat.
Ejercicio
La regla que nunca llega
Alguien puso en forward «tirar todo lo que entra por ether1» y, debajo, «aceptar lo establecido». Desde entonces la oficina no navega y las cámaras no se ven desde fuera. Sin quitar ni desactivar el drop, ordena las reglas (y deja pasar lo que publica el dst-nat).
Encendiendo el router…
Lo del tema, en la consola
| Para | En Winbox | En la consola |
|---|---|---|
| Salir a internet con la dirección del router | NAT ▸ + (srcnat, masquerade) | /ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade |
| Publicar un puerto | NAT ▸ + (dstnat, dst-nat) | /ip firewall nat add chain=dstnat … action=dst-nat to-addresses=… to-ports=… |
| Aceptar lo establecido | Filter Rules ▸ + (Connection State) | /ip firewall filter add chain=input connection-state=established,related |
| Tirar lo que entra de fuera | Filter Rules ▸ + (In. Interface, drop) | /ip firewall filter add chain=input in-interface=ether1 action=drop |
| Un grupo de direcciones | Address Lists ▸ + | /ip firewall address-list add list=… address=… |
| Lo contrario | La casilla ! | src-address-list=!oficina |
| Cambiar el orden | Arrastrar la regla | /ip firewall filter move 1 0 |