我正在尝试为现有网络设计一个访客 wifi 网络,但当接入点包含在父网络内时,我不确定如何保护访客 wifi 接入点免受父网络的影响。
我尝试过搜索这个,但我只是从消费硬件中得到结果,说“点击这个配置”,并且通常假设主路由器也是 wifi 接入点本身,从而使逻辑隔离变得容易得多。
+----------+
| Internet |
+----+-----+
|
|
+-------+------+
| Linux Router | 10.0.0.0/24
+----------+ +--------------+
| | 10.0.0.1 | |
| +-------+------+ |
| Device A - 10.0.0.5 |
| |
| Linux Guest Wifi Router - 10.0.0.200 |
| + |
| | |
+----------------------------------------+
|
|
| Guest Subnet 10.0.1.0/24
+----+--------------------------+
| |
| Guest Device X - 10.0.1.5 |
| |
+-------------------------------+
主路由器是一个双 NIC(ext/int)Linux 盒(带 iptables 的 Debian 7),仅此而已。访客 wifi 接入点将是一个我订购的 rasp PI,我假设必要的配置将包含在访客 wifi 盒上。
但我不确定如何在 PI 上配置 iptables(nftables?)以确保父网络除了路由到互联网之外无法访问。
- “访客设备 X” 如何到达主路由器网关 (10.0.0.1),同时被拒绝访问设备 A (10.0.0.5)。
- 我如何知道主路由器不会将任何 10.0.0.5 请求发送回 10.0.0.0/24 子网?我是否需要在主路由器上设置 iptables 以与 wifi 路由器协同工作?
10.0.1.5 的预期结果:
- $ ping 10.0.0.5-目的地不可达/没有到主机的路由等。
- $ ping 8.8.8.8-确定
- $ ping 10.0.0.1-(假设可以?)
- $ ping 10.0.0.200-未知?
以下是替代潜在解决方案的讨论:
- 一个建议是在主路由器上设置第二个 IP,并让访客 wifi 路由到该 IP。所以我查阅了文档,发现了以下内容:
这将使事情看起来像这样:
Internet
|
Linux Router
(eth1 10.0.0.1) (eth1:1 10.0.1.1)
| |
Reg Network Guest Wifi Router (10.0.1.2)
(DHCP) |
Guest Device (10.0.?.?)
所以目前我还不确定一些事情
- 如何设置主路由器的路由表以防止流量从 10.0.1.1 到 10.0.0.0/24 子网?或者这是此时主路由器上的 iptables 规则?我不确定我是否明白这与在 10.0.0.0/24 上设置访客 wifi 路由器有何不同,因为主路由器仍然能够路由到该网络上的其他设备?)
- 我假设访客 wifi 路由器需要为访客设备提供 DHCP 服务器。但是访客设备会使用 10.0.1.0/24 子网并以 10.0.1.1 作为网关吗?或者我会为访客设备设置另一个子网 10.0.2.0/24?
答案1
回顾一下情况,以验证我是否理解正确:
访客 AP 作为私有 LAN 或 WLAN 的一部分连接到主路由器。除此之外,您需要一个独立于私有网络的访客网络,但必须使用私有网络才能连接到主路由器。
可能的解决方案简要概述:
确保此操作安全的唯一方法是让主路由器知道有两个网络,并用iptables
规则将它们正确分开。因此,您希望主路由器看到两个网络接口,一个接口为 10.0.0.0/24,用于专用网段,另一个接口为 10.0.0.1/24,用于访客网段。鉴于评论,我假设您知道如何使用该接口配置主路由器。
这意味着从访客 AP(RaspPi)到主路由器的连接应该使用某种隧道。最简单的方法是虚拟局域网,它会在您的私有 LAN 上“覆盖”多个虚拟 LAN(可能为多个)。
具体来说,在 RaspPi 和 Debian 盒子上添加一个虚拟网络接口,如下所示
ip link add link eth0 name eth0.55 type vlan id 55.
(选择 VLAN 标签),然后eth0.55
像普通网络接口一样使用和配置。一旦它工作正常,您就可以调整/etc/network/interfaces
它以使其自动启动。
编辑
对于防火墙,你需要制定iptables
一些规则来阻止接口之间eth0
相互eth0.55
通信,因此
#!/bin/bash
PRIVIF=eth0
GUESTIF=eth0.55
iptables -P FORWARD ACCEPT
iptables -F FORWARD
iptables -A FORWARD -i $PRIVIF -o $GUESTIF -j DROP
iptables -A FORWAD -i $GUESTIF -o $PRIVIF -j DROP
(未经测试)。或者使用默认转发策略 DROP 使其更加安全,然后枚举所有允许的转发,同时保留路由器的 NAT 功能(如果有的话)。
网上有很多关于防火墙的教程iptables
,只需选择您最喜欢的一个。