Friday, 13 June 2025
Mikrotik RouterBoard - Kid Control
[Kid Control](https://help.mikrotik.com/docs/spaces/ROS/pages/129531911/Kid+Control) is Mikrotik's name for a parental control layer offered in RouterOS. I'm currently using it as a defense-in-depth/belt-and-braces approach to ensure the kids' screen time isn't getting excessive, as unfortunately it seems Apple's Screen Time and/or app/device restrictions just cannot be relied upon.
They also give a quick *additional* level of restriction that can be called upon as a threat/persuasion to GET OFF THAT PHONE - "cutting off 'the wifi'" is a nuclear option I'll admit, but it can get results.
There were a few additional complications setting Kid Control up on my network however, as it's *entirely predicated upon the Mikrotik device being the default internet gateway for the kids' devices* - i.e. being the "ISP router". On my network, the RB2011 does not play that role; if we refer to a cut-down version of my network diagram, just showing the relevant "infrastructure":
```mermaid
architecture-beta
service internet(affinity:cloud)
group home(affinity:house)[Home]
group study[Study] in home
service ispr(affcircle:c-firewall) [ISP Router] in study
group mik(affcircle:c-router)[RB2011] in study
service gbe(affcircle:c-switch-blue)[GbE] in mik
service hun(affcircle:c-switch-green)[100Mbps] in mik
service studywifi(affcircle:c-wireless-green)[WiFi AP] in study
group closet[Closet] in home
group closetap(affcircle:c-switch) [ClosetAP] in closet
service closetswitch(affcircle:c-switch-blue)[Switch] in closetap
service closetwifi(affinity:wifi)[WiFi] in closetap
internet:B -- T:ispr
ispr:L -[GbE]- R:gbe
ispr:R -[GbE study to closet backbone]- L:closetswitch
gbe:L -- R:hun
junction huns in study
hun:L -- R:huns
huns:B -[100Mbps]- T:studywifi
```
Up until now, every networked device has been handed a DHCP lease (or been manually configured) with the "ISP Router"'s IP address as its Default Gateway. The change I have now made (after dogfooding with my own devices for a while) is that "kid-controllable" devices now get handed a slightly different DHCP lease (adjusted on a one-by-one basis from the RouterBoard web UI) that specifies the RB2011's own IP address as the default gateway:
Where `use-me-as-your-default-gateway` is just a __DHCP Option__ as follows:
And the RB2011 _itself_ has been configured with a default route to the ISP Router:
## Creating a blockable path through the RouterBoard
But unfortunately that's *not enough*. Out of the box, the RouterBoard simply *will not* forward packets from those specially-configured (aka "kid") devices. So some firewall configuration is needed. While this is all completely logical, and [beautifully explained in the Mikrotik documentation](https://help.mikrotik.com/docs/spaces/ROS/pages/250708066/Firewall), it took a while to figure out...
### Special addresses for the special devices
I've [long been a proponent](https://blog.themillhousegroup.com/2011/04/ultimate-ubuntu-build-server-guide-part_25.html) of using a `10.a.b.c`-style network for the extra degrees of freedom those `a`,`b` and `c` bytes give you. Now here's a case where it nicely pays off. Eagle-eyed readers will have already spotted that the `john-iphone` DHCP lease shown above was assigned the IP address `10.248.0.110` whereas other equipment on my network lives at `10.240.0.x`. That extra bit:
```
10.240d = 00001010 11110000
10.248d = 00001010 11111000
```
... combined with a bit-mask of `/13`, i.e. the leftmost 13 bits in `10.248`, give us a telltale for "kid" devices that need special treatment, namely:
### Allow their traffic to be forwarded across the router
Both these firewall rules are dead simple, but they need to be there, so I'm just showing them in the Firewall summary view as there is literally nothing else to them.
This first rule just says that if a packet arrives from one of those `10.248.0.0/13` devices, and it's *not destined for the Mikrotik itself* (i.e. the chain is `forward`, not `input`) then `accept` it rather than continuing firewall rule processing (which would eventually hit the last rule (not shown), that throws the packet away).
### Allow their traffic to be forwarded across the router
The second rule is more subtle but just as necessary. Without it, packets from kid devices addressed to the wider Internet will be forwarded "over" the Mikrotik, sent to the ISP Router due to the default route in the Mikrotik, head to the Internet due to the default route in the ISP Router, and response packets make their way back via the same path due to the magic of NAT - *except for the final hop* back to the original kid device, because the Mikrotik doesn't know what to do with the response.
So we configure a "Source-NAT" rule for our kid devices, that says that the RB2011 will "masquerade" on behalf of them; and thus it will know what to do with those response packets when they arrive back from the internet - send them back to the original kid device:
... And now that we've got packets flowing across the router, Kid Control rules can be layered on top to stop them again 😂
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Comments welcome - spam is not. Spam will be detected, deleted and the source IP blocked.