我有以下简单的情况:通过两个不同的以太网网卡建立两个互联网连接,eth0和eth1以及两个不同的无线网卡上的两个 AP(当然,我使用 hostapd),wlan0和WLAN1. 两张 wifi 卡位于不同的子网(192.168.53.0/24、10.0.15.0/24),两张以太网卡位于不同的子网(192.168.1.0/24、10.10.2.0/24)。
我希望将转发完全分开,换句话说:
wlan0 --> eth0
wlan1 --> eth1
我知道如何将应用程序绑定到不同的接口,以及如何使用策略路由。我不知道是否可以使用 iptables 进行上述转发,或者我绝对需要使用策略路由来实现这一点。
答案1
您需要策略路由。
普通路由将仅根据目标地址选择下一跳地址或接口,而不会考虑其他因素。也就是说,所有发往同一地址的数据包都将使用相同的路由。
一旦您使用其他因素(例如入站接口)来影响路由决策,那么根据定义,您就是在执行策略路由。
netfilter/iptables 确实有一个提供“ROUTE”目标的插件仅使用 netfilter 进行 PBR,但与典型的基于规则的 iproute2 方法相比,它的采用、维护和测试都较差。正如 netfilter 维护人员所说,
“只要有可能,您就应该将 MARK 目标与 iproute2 一起使用,而不是使用此 [iptables] ROUTE 目标。”