gpt4 book ai didi

linux - openwrt中几万条规则的ip规则

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:07 24 4
gpt4 key购买 nike

我正在设置我的 openwrt (Netgear R3800) 以通过以下 shell 脚本支持具有多个出站接口(interface)的策略路由。我将不同传出接口(interface)的 ip 列表放在文本文件中,并使用 ip 规则设置不同的 ip 表。

例如

ip route add default via $VPN1 dev $VPNDEV1 table 100
ip route add default via $VPN2 dev $VPNDEV2 table 200

for IPTO in `cat /root/routes/policy_ips1` ; do
ip rule add to $IPTO table 100
done

for IPTO in `cat /root/routes/policy_ips2` ; do
ip rule add to $IPTO table 200
done

该脚本大部分时间都有效,但有时不稳定。

由于 ip 列表(文件 policy_ips1、policy_ips2)相当大。像 10-20 千行,每行是一个子网,如“1.0.1.0/24”。我想知道这是否是一种有效的方法,因为会有数万条规则,路由器会为每个数据包查询路由策略数据库 RPDB。

另一个问题是,由于 RPDB 的优先级范围为 0 到 32767(引用:http://man7.org/linux/man-pages/man8/ip-rule.8.html),这是否意味着我不能添加超过 32765 条规则?使用 ip rule 有能力限制吗?路由器的计算能力(如路由器的cpu、ram)是否有任何限制?

最佳答案

[我不确定这个问题是否适合 SO,但是]

对于这种设置,我会使用 Netfilter(带有 ipsets)来标记数据包,并使用基于 fwmark 的规则来匹配 RPDB 中的数据包。喜欢

ipset create nets100 hash:net
ipset create nets200 hash:net

for IPTO in `cat /root/routes/policy_ips1` ; do
ipset add nets100 "$IPTO"
done

for IPTO in `cat /root/routes/policy_ips2` ; do
ipset add nets200 "$IPTO"
done

iptables -A PREROUTING -t mangle -m set --match-set nets100 src -j MARK --set-mark 100
iptables -A PREROUTING -t mangle -m set --match-set nets200 src -j MARK --set-mark 200

ip route add default via $VPN1 dev $VPNDEV1 table 100
ip route add default via $VPN2 dev $VPNDEV2 table 200

ip rule add fwmark 100 table 100
ip rule add fwmark 200 table 200

IPsets 可以轻松处理大量地址/网络,因此您有一个简单的 RPDB。虽然应该注意这会增加一些 Netfilter 处理数据包的开销,但在大型 RPDB 和 ipset 之间进行选择我会选择 ipset。

至于优先级,我会理解为“不超过32767条规则”。

关于linux - openwrt中几万条规则的ip规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38967847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com