iptables 转发和路由

iptables 转发和路由

其实这个问题是关于openwrt和 库瓦AP,但我想在其他linux发行版中也是一样的。

我有两个接口,一个“wan”和一个“wlan”接口。

默认情况下是否有任何过滤器限制哪些数据包从 wlan 接口转发到 wan?

特别是如果路由器上的 wlan 接口是 192.168.1.1,并且连接到此接口的某人在其计算机上输入 172.16.1.1 作为 IP。那么他的数据包是否会被转发?路由决策仅由目标 IP 决定还是受源 IP 影响?

我认为问题在于 172.16.1.1 机器的答案不会返回。 iptables 转发规则能否使接口表现得像交换机一样?

如果我想要转发 172.16.x,我可以在此物理接口上设置一个别名。还有别的办法吗?

默认库瓦防火墙脚本只是说

iptables -A FORWARD -i $WIFI -o $WAN -j ACCEPT

我禁用了伪装。

是否可以通过这种方式“分离”网络并依赖于此?有没有办法让某人使用非 192.168.1.x 地址转发他的数据包?

出现此问题的原因是,WAN 接口后面是 WLAN 用户无法访问的机器。这些机器依赖于源 IP 地址。

答案1

是的,默认情况下有一个过滤器:默认情况下根本不转发任何数据包。这显然已经被关闭了。

还有第二个可以启用的过滤器:反向路径过滤器。如果启用,进入接口的数据包会根据路由表检查其源地址,以确保响应会从同一接口发出。如果不是,则丢弃该数据包。这是在./proc/sys/net/ipv4/conf/{all,default,devname}/rp_filter

除此之外,默认情况下路由仅基于目标 IP 完成。

至于你的第三个问题...如果你有一台机器配置为 172.16.1.1/24,并尝试将其默认网关设置为 192.168.1.1,你可能会收到一个错误:默认网关不可访问(有没有通往它的路线)。如果您让它接受并使用它(例如,通过向其添加路由),那么它会将数据包发送到您的路由器。如果反向路径过滤器关闭,那么您的路由器将接受并路由数据包。任何回复都可能毫无用处:

  1. 他们甚至可能无法回到您的路由器。其他路由器知道将 192.168.1.0/24 的数据包发送到您的路由器,但不知道 172.16.1.0/24。假设您设置了路线来实现这一点,那么......

  2. 您的路由器不知道将 172.16.1.0/24 的数据包发送到哪里。实际上,它可能认为是这样,并将它们发送到默认网关。如果您在路由器上设置一条路线将它们发送回盒子......

  3. 那么它可能会起作用。

替代方法是将另一个 IP 地址添加到您的 WLAN 接口。路由器在其路由的每个子网上至少有一个 IP 地址是很正常的。您不需要别名接口来执行此操作,只需使用ip:添加第二个 IP 即可ip addr add 172.16.1.254/24 dev wlan。通常在单路由器子网上,第一个可用的 IP 是路由器,但这只是为了方便;这不是技术要求。

iptables适用于流经该盒子的所有 IP 流量。这包括本地生成的流量和转发的流量。

您可以使用brctl支持来实际桥接 wan 和 wlan(将它们变成交换机),但听起来您不想这样做。您可以使用ebtables(not iptables) 来过滤桥。

相关内容