[2020.05.10] OpenWRT 系统隔离无线与有线网络 并实现特定无线设备访问有线网络(MAC 防火墙)

Author Avatar
柊 ゆり子 2020年05月10日
  • 在其它设备中阅读本文章
无线网络的本质决定了 — — 在无线信号覆盖范围内的任何人都可以对收集到的无线信号进行分析。如果网络协议本身不严密(有漏洞),那么攻击者就能加以利用。从这个角度(OSI 的“物理层”)而言,“无线网络”的【攻击面】要显著高于“有线网络”。
——编程随想

写在前面

为什么要给家里做网络隔离呢?其实还是为了满足我个人心里那丁点儿被害妄想。一般的家庭网络,如果没什么重要的设备,是不需要做网络隔离的,而且做了网络隔离还可能会影响手机与手机、手机与电脑之间的文件传输(QQ、ES 快传等功能)。当然,如果和我一样喜欢折腾,又担心内网中重要的资源被其他陌生设备,比如说父母用的蛤为手机偷窥(实际上蛤为有没有这么做我不知道)、被邻居借助某钥匙侵入,可以试一下像我这样在无线网与有线网中间插一道墙。隔离后的无线网设备,在未经授权的情况下只允许访问互联网。
我采用的方案是在 OpenWRT 中为无线设备重新分配一个新的内网网段,并根据无线设备的 MAC 地址允许个别设备与已有的有线网段通信。当然,这也不是绝对安全的,因为无线设备的 MAC 地址可以被伪造。但我家也不是开军火铺的,此方案我觉得已能防住 99% 的非法访问。

那么开始吧

登陆 Openwrt 的 LUCI 管理界面,备份当前配置后切换到【网络】→【接口】选项卡,添加新接口。该接口配置如下:

项目
新接口名称 WLAN
协议 静态地址
桥接接口 勾上
接口 未指定(暂时选这个,后面设置无线网时再绑定)

建立新接口后,编辑这个新建的接口:

选项卡 项目 备注
常规选项 IPv4 地址10.0.0.1/24 也可以输入其他的地址段,不要与已分配的有线网冲突即可
常规选项 IPv4 广播10.0.0.255 保持默认即可
常规选项 IPv6 分配长度 已禁用 我这里屏蔽了无线设备的 IPv6,避免给网络管理带来不必要的麻烦
高级设置 强制链路 勾上 增加稳定性
高级设置 重设 MAC 地址 找到 lan 口的 MAC 地址,改一下最后一位即可 避免与原有的 lan 接口冲突
DHCP 服务器 - IPv6 设置 路由通告服务、DHCPv6 服务、NDP 代理 为移动设备禁用 IPv6避免给网络管理带来不必要的麻烦
DHCP 服务器 其他选项 与原有 lan 接口设置一致即可 如果应用场景是商场或其他客流量大的场所,可以将【租期】缩短一些以避免 DHCP 可分配的 IP 池不足

修改完毕后保存,不需要立即应用。

切换到【网络】→【无线】选项卡,为 radio0 和 radio1(如果有)开启【隔离客户端】,以隔离无线网络中的设备互相通信。
同时,在两个无线网络的基本设置中,【网络】一栏修改为上一步建立的名为 WLAN的接口(如下图)。修改完成后记得保存,不需要立即应用。
捕获.JPG

切换到【网络】→【防火墙】选项卡,在【常规设置】下的 Zones 一栏添加新的 Zone ,配置如下:

项目
名称 WLAN
Inputaccept(DNS 查询需要)
Outputaccept
Forwardaccept
Covered networksWLAN
Allow forward to destination zoneswan

捕 2121 获.JPG
保存,这样即授予了无线设备对互联网和路由器的访问权限。关于限制无线设备管理路由器,下文会有提到。

这一步是授予信任的特定无线设备访问有线网络。同样在【防火墙】选项卡,切换到【Traffic Rules】,添加新的规则。规则如下:
【常规设置】

项目
名称 随意,找个好记点的名字,不能有中文以及标点
协议 勾上 TCP、UDP
Source zoneWLAN
目标区域(不知道为什么这里又汉化了)lan
Destination address填入允许访问的有线网络 IP,例如 NAS 的 IP,或者整个有线网络网段

【高级设置】

项目
Restrict to address familyIPv4 only
Source MAC address允许的无线设备 MAC 地址

为了防止不受信的无线设备管理路由器,需要阻止它们对路由器的 22 端口、80 端口、443 端口访问。继续来到【Custom Rules】选项卡,添加以下三条规则(以路由器在有线网络的 IP(网关)为192.168.2.1举例)

iptables -t filter -A input_WLAN_rule -p tcp -d 192.168.2.1 --dport 22 -j DROP
iptables -t filter -A input_WLAN_rule -p tcp -d 192.168.2.1 --dport 80 -j DROP
iptables -t filter -A input_WLAN_rule -p tcp -d 192.168.2.1 --dport 443 -j DROP

添加并保存后,还需钦定路由器的管理界面 仅对有线网络监听。否则在无线网络输入网关的地址(10.0.0.1)仍可以访问到路由器的管理界面。此时需要 SSH 登录路由器,修改uhttpd 的配置文件。命令:

root@OpenWrt:~# vi /etc/config/uhttpd

修改 list listen_httplist listen_https 两行,将0.0.0.0改为路由器在有线网络的 IP。(如图)保存,并重启 uhttpd

捕获 1111.JPG

最后确认一下给无线设备上网用的 DNS 服务。回到 LUCI 管理界面,【网络】 → 【DHCP/DNS】 → 【常规设置】:若勾选了【非全部地址】,需要在【监听接口】中新增br-WLAN这一项。
捕 ewqeqw 获.JPG

检查并确认无误后,保存并应用。恭喜你,有线网络与无线网络已成功隔离,不用担心有线网络中传输的数据被别有用心的人或大数据公司偷窥了。此时无线设备仅能获取到类似 10.0.0.X 的 IP 地址以及 10.0.0.1的网关地址,如下图。未授权的无线设备将仅允许向外访问互联网,192.168 开头的地址将会不可达。
Screenshot_20200510-203405.png

本文链接:https://blog.hiirachan.moe/archives/355.html
This blog is under a CC BY-NC-SA 3.0 Unported License

本站不提供任何可用于侵入、非法控制计算机信息系统的程序、工具
不提供非法定信道进行国际联网

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

    特厉害
    特厉害  2020-07-19, 03:33

    你竟然敢转载编程随想的话。

      柊 ゆり子
      柊 ゆり子  2020-07-20, 01:28

      有什么问题吗(o′┏▽┓`o) ← 无辜脸

    无用挂件
    无用挂件  2020-05-15, 20:34

    sdl tql awsl