;

林师傅的贼窝 每天都被折磨的想死

Routeros从入门到放弃——防火墙篇

前言

正如简介所说的, 这篇文章将介绍RouterOS的防火墙等相关配置, 还会介绍数据包在ros内的流程, 通过这个系列, 最终可以搭出放弃一个非常专业的网络, 其中包含对外服务网络、家庭自用网络(分科学和国内版)、访客网络

基本配置

给网桥设置IP

前文所说的, routeros的网桥在拓扑上可以理解为创建了一个管理多个物理端口的交换机, 为了routeros的流量可以进入这个交换机, routerOS还会创建一个逻辑端口, 我们可以给这个端口配置PVID, 设置IP等, 如果给这个端口设置了IP地址, 那么这个交换机就具备了三层交换的功能, 原理可以回顾前文讲的三层交换机跨VLAN转发的工作机制。

routeros网桥机制

当给网桥设置好IP之后, 这个网桥就就可以设置IP防火墙设置了, DHCP等设置我就不讲了, 十分基础, 且网上的教程也很多, 我就简单扔一张图片了

DHCP设置
首先我们会划分4个VLAN, VLAN10作为服务器资源网络, VLAN20则是科学上网需要代理的网络, VLAN30则是不需要科学上网的网络, VLAN40则是访客网络。
目标网络拓扑
其中VLAN20和VLAN30是平级的, 别问我为什么改个网关就能从科学上网变正常上网的事我要创建两个VLAN, 我就是觉得换个网口换个WIFI比改网关快。那么VLAN20和VLAN30都应该有权限访问VLAN10的服务器资源, 并且为了安全, VLAN20和VLAN30之间是相互隔离的, VLAN40则只能上网不允许访问任何内网资源, 最后VLAN10作为服务器资源暴露服务在公网上, 也不应该对其他内网有访问权限, 只能被动的等待访问。

firewall高能配置讲解

首先随便加入一个VLAN, 测试能否连通外网, 这个怎么弄不讲了, 关于routerOS的PPPOE拨号教程一大堆, 唯一要注意的就是最后要在NAT那里设置pppoe端口的源地址伪装。

firewall过滤规则

回顾一下VLAN40的要求, 访客网络, 只能连外网, 不允许访问局域网任何资源, 那么从routerOS中的流量传播路径来分析是这样的

VLAN40设备数据来到VLAN40的端口, 进入routerOS之后被标记VLAN40的标签, 如果是VLAN40的设备, 则可以在自己的VLAN中找到, 此处我省略了arp广播机制, 还是要结合前面的VLAN篇知识理解, routerOS就可以很轻松的正确转发流量。但是如果VLAN40要访问别的网段的流量, 则会发给VLAN40的网关也就是Bridge40(192.168.40.1), 此时Bridge40会判断是什么网段, routerOS毕竟是路由器, 不禁止都是默认会转发到对应的端口的, 所以此时我们需要在firewall中设置转发规则, 匹配到就丢包, 其余的则允许默认转发。

  1. VLAN40访问别的VLAN

假设VLAN40想访问VLAN10的服务器资源, 这是不允许的, 我们可以设置192.168.40.0/24->192.168.10.0/24这个规则, 匹配到就drop数据包, 那么这个流量在网关Bridge40这里本来按照路由表, 发往192.168.10.0/24的流量都要转发到Bridge10(192.168.10.1)这里的, 但是匹配中丢包规则了, 在流量进入Bridge40, 对应Input链, 要进行路由转发到192.168.10.1时, 对应forward链, 就会把这个数据包丢掉, 这样VLAN40就访问不到VLAN10了

  1. VLAN40想访问公网

与之前相同, 这个数据包会来到Bridge40(192.168.40.1)这里, 同样会根据路由表, 路由表有一条默认路由, 即0.0.0.0/0->pppoe, 即任意流量都会到pppoe口, pppoe口相当于整个routeros的出口网关。肯定有人问, 既然是任意目标地址, 为什么访问VLAN10的时候不会匹配到这条规则啊? 因为VLAN10的路由规则更详细啊, 192.168.10.0/24, 掩码24比0.0.0.0/0精确不知道多少, 当然先走精确的; 但如果一样精确呢, 就会按照跳数进行路由, 跳数越低就先执行这条规则, 这种一般是宽带多拨的会遇到, 一般人不需要太了解, 我好像把路由表讲了呢, 我好棒呀

那么在匹配完路由表之后, routerOS就会把流量转发到pppoe口, 因为没有匹配到过滤规则, 就会默认放行, 于是VLAN40的流量就可以顺利到达公网, 愉快的上网冲浪了。

那么此时针对VLAN10的设置也和VLAN40相同, 因为这个网段内的设备也不允许主动访问内网, 但是他们要可以上网

而VLAN20和VLAN30的配置其实只需要把转发给VLAN10(192.168.10.0/24)的规则给去掉就行了, 其他照旧禁止, 就可以做到互相隔离VLAN网段, 但是允许访问VLAN10的内网资源了。 不过需要注意的是很多服务是不允许跨网段访问的, 因此在NAT里需要设置从Bridge10网关出来的流量做源地址伪装。其实到这里, 一个专业的企业网络已经初具雏形了, 接下来我们整点骚的

mangle标签

mangle标签是routeros中极其灵活的玩法, 它可以在各个链条上将这个流量标记, 然后就可以执行各种骚操作, 比如我在VLAN10网段部署了我的超级代理服务器, VLAN20网段需要科学上网, 我就通过mangle标记来自VLAN20的流量, 并通过标记路由让这部分流量去查一张专门的路由表, 让这部分流量路由到192.168.10.3这个代理服务器去。

其次, 熟悉我的朋友知道我还有递归权威DNS服务, sing-box劫持了DNS请求之后, 会根据规则将这个请求转发给bind监听的端口或者由节点进行查询, 我将利用这个feature让VLAN30的设备不再通过IPV6连接VLAN10的资源, 而是通过mangle标签标记VLAN30的DNS请求, 劫持到192.168.10.3, 之后就是由sing-box分流到bind监听的5335端口, 获得权威DNS解析的结果——192.168.10.4进行直连。不要问我为什么要搞这么麻烦, 你问就说明信仰不够, 意志不够坚定, 其实是我根本没开VLAN20和VLAN30的IPV6, 即便开了, 因为处于不同VLAN, 也没办法直连的, 不如直接用V4榨干路由器性能

操作图

防火墙配置

结尾

好了, 其实现在你已经得到了一个非常专业的家庭网络了, 如果你有公网IPV4, 相信看到这里你对routeros的理解也足够你做内网穿透了, 但是我没有啊!!!!!所以我不得不启用routeros孤儿的IPV6, 因为之前对IPV6了解不多, 踩了一堆坑, 后面再说

RouterOS Firewall

RouterOS从入门到放弃