Setup IoT networking on RouterOS

Setup IoT networking on RouterOS
Photo by Jordan Harrison / Unsplash

之前在OpenWRT中设置了一个IoT网络,给家里的IoT设备使用,有一定访问限制,比如只能访问WAN而无法访问内网其他设备,于是单独设置了一个内网网段和内网其他网段隔离开了。后来换了RouterOS并没有重新设置,IoT设备都处于断网状态,有时用起来还有点麻烦,于是又设置上了IoT网络。

主路由已经做了虚拟化(PVE),一共有4个网口,其中1连接了LAN(加入到了PVE的默认bridge),2是WAN口(从PVE中使用PCI-E直通到了RouterOS虚拟机),3将作为IoT网口,单独连接一个无线AP给IoT设备使用,4是PVE管理口。

配置RouterOS每个人都不太一样,因为每个人可能定义不同的Lists,这些Lists会用在firewall等地方,所以以下操作并不是都需要。

/interface/list
add interface=ether2 list=LAN

#必须:dhcp要求interface必须有ip
/ip/address
add address=10.0.0.1/8 interface=ether2 network=10.0.0.0

#必须:dhcp分配的ip段
/ip pool
add name=iot ranges=10.0.0.3-10.0.0.253

#必须:dhcp server
/ip/dhcp-server
add address-pool=iot bootp-support=none interface=ether2 lease-time=12h name=iot-dhcp

#必须:会通过dhcp设置gateway和dns,主要是gateway,否则无法访问外网,也可以通过设置dhcp option指定gateway,但还是这样方便一些
/ip/dhcp-server/network
add address=10.0.0.0/8 comment=iot dns-server=10.0.0.1 gateway=10.0.0.1

/ip firewall address-list
add address=10.0.0.0/8 comment=iot list=local_subnet_ipv4
add address=10.0.0.1 comment="iot network dns" list=local_dns_ipv4

#必须:ether2的流量如果访问“非WAN”会被阻止,暂时没有阻止访问路由器本身
/ip firewall filter
add action=drop chain=forward comment="drop all from IoT to not WAN" in-interface=ether2 log=yes log-prefix="[IoT access not WAN]" \
    out-interface-list=!WAN

连接上IoT网络后,访问一下非RouterOS的其他服务,就可以在logs中看到[IoT access not WAN]前缀的日志了。