ip route / ip rule /iptables 配置策略路由

  

一,路由策略(使用ip rule命令操作路由策略数据库)

基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小,应用或IP源地址等属性来选择转发路径。

ip rule命令:

Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 删除; llist 列表)
 
SELECTOR := [ from PREFIX 数据包源地址] [ to PREFIX 数据包目的地址] [ tos TOS 服务类型]
            [ dev STRING 物理接口] [ pref NUMBER ] [fwmark MARK iptables 标签]
 
ACTION := [ table TABLE_ID 指定所使用的路由表] [ nat ADDRESS 网络地址转换]
          [ prohibit 丢弃该表| reject 拒绝该包| unreachable 丢弃该包]
 
[ flowid CLASSID ]
 
TABLE_ID := [ local | main | default | new | NUMBER ]

#例子1:通过路由表 inr.ruhep 路由来自源地址为192.203.80/24的数据包
ip rule add from 192.203.80/24 table inr.ruhep prio 220 
 
#例子2:把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144,并通过表1进行路由
ip rule add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320

在 Linux 系统启动时,内核会为路由策略数据库配置三条缺省的规则:

0:匹配任何条件,查询路由表local(ID 255),该表local是一个特殊的路由表,包含对于本地和广播地址的优先级控制路由。rule 0非常特殊,不能被删除或者覆盖。

32766:匹配任何条件,查询路由表main(ID 254),该表是一个通常的表,包含所有的无策略路由。系统管理员可以删除或者使用另外的规则覆盖这条规则。

32767:匹配任何条件,查询路由表default(ID 253),该表是一个空表,它是后续处理保留。对于前面的策略没有匹配到的数据包,系统使用这个策略进行处理,这个规则也可以删除。

注:不要混淆路由表和策略:规则指向路由表,多个规则可以引用一个路由表,而且某些路由表可以策略指向它。如果系统管理员删除了指向某个路由表的所有规则,这个表没有用了,但是仍然存在,直到里面的所有路由都被删除,它才会消失。

linux 系统中,可以自定义从 1-252个路由表,其中,linux系统维护了4个路由表:

0#表: 系统保留表

253#表: defulte table 没特别指定的默认路由都放在改表

254#表: main table 没指明路由表的所有路由放在该表

255#表: locale table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改

路由表的查看可有以下二种方法:

ip route show table table_number
ip route show table table_name

路由表序号和表名的对应关系在 /etc/iproute2/rt_tables文件中,可以手动编辑,路由表添加完毕及时生效,实例如下:

#实例1:在一号表中添加默认路由为192.168.1.1
ip route add default via 192.168.1.1 table 1 
 
#实例2:在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2
ip route add 192.168.0.0/24 via 192.168.1.2 table 1

二,路由表(使用ip route命令操作静态路由表)

所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据--路由表,供路由选择时使用,表中包含的信息决定了数据转发的策略。

三, ip rule,ip route,iptables 三者之间的关系

iptables:iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter。

route iptables 关系 iptables ip段_源地址

注:图中 “路由判断” 就是使用ip rule,ip route设置的规则,其中ip route配置的路由表服务于ip rule配置的规则。

以一例子来说明:公司内网要求192.168.0.100 以内的使用 10.0.0.1 网关上网 (电信),其他IP使用 20.0.0.1 (网通)上网。

1,首先要在网关服务器上添加一个默认路由,当然这个指向是绝大多数的IP的出口网关:ip route add default gw 20.0.0.1

2,之后通过 ip route 添加一个路由表:ip route add table 3 via 10.0.0.1 dev ethX (ethx 是 10.0.0.1 所在的网卡, 3 是路由表的编号)

3,之后添加 ip rule 规则:ip rule add fwmark 3 table 3 (fwmark 3 是标记,table 3 是路由表3 上边。 意思就是凡事标记了 3 的数据使用 table3 路由表)

4,之后使用 iptables 给相应的数据打上标记:iptables -A PREROUTING -t mangle -i eth0 -s 192.168.0.1 - 192.168.0.100 -j MARK --set-mark 3

 

================

ip route / ip rule /iptables 配置策略路由

来源 https://www.jianshu.com/p/5c70b536816b

ip rule:

进行路由时,根据路由规则来进行匹配,按优先级(pref)从低到高匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的

路由规则的添加


ip rule add from 192.168.1.10/32 table 1 pref 100

如果pref值不指定,则将在已有规则最小序号前插入

PS: 创建完路由规则若需立即生效须执行


ip route flush cache

     

From -- 源地址
        To -- 目的地址(这里是选择规则时使用,查找路由表时也使用)
          Tos -- IP包头的TOS(type of sevice)域Linux高级路由-
         Dev -- 物理接口
         Fwmark -- iptables标签

 

采取的动作除了指定路由表外,还可以指定下面的动作:
         Table 指明所使用的表
          Nat 透明网关

             Prohibit 丢弃该包,并发送 COMM.ADM.PROHIITED的ICMP信息 
            Reject 单纯丢弃该包
             Unreachable丢弃该包, 并发送 NET UNREACHABLE的ICMP信息

 

Usage: ip rule [ list | add | del ]SELECTOR ACTION
         SELECTOR := [ from PREFIX ] [ toPREFIX ] [ tos TOS ][ dev STRING ] [ pref NUMBER ]
         ACTION := [ table TABLE_ID ] [ natADDRESS ][ prohibit | reject | unreachable ]
                  [ flowid CLASSID ]
         TABLE_ID := [ local | main | default| new | NUMBER ]

详解看

linux策略路由,路由策略(高级路由设置,多出口)

FROM http://rfyiamcool.blog.51cto.com/1030776/768562

功能说明:

由Linux实现流量分割,


1, 到202.96.209.133的数据从Linux路由器的eth2到路由器A,再到202.96.209.133。
2, 到Internet其他地方的数据从Linux路由器的eth1到路由器B,再到Internet。

实现方法:

打开Linux的路由功能:


echo 1 >/proc/sys/net/ipv4/ip_forward

首先添加一条规则,指定从172.16.16.2来的数据查找路由表5:


ip ru add from 172.16.16.2 lookup 5

1,实现第一个功能

(1),在路由表5中添加一条路由,到202.96.209.133的数据经过192.168.1.1:


# ip ro add 202.96.209.133 via 192.168.1.1 table 5

(2),这样就完成了路由的设置,因为172.16.16.2是私有地址,所以在Linux路由器的出口eth2处应该对其进行NAT的设置,如下:


# iptables -t nat -A POSTROUTING -s 172.16.16.2 -d 202.96.209.133 -j SNAT --to 192.168.1.3

(3),刷新路由缓存:


# ip ro flush cache

2, 实现第二个功能(在第一个的基础上)

(1),在路由表5中添加默认路由:


# ip ro add default via 10.10.10.2 table 5

(2),在Linux路由器的出口eth1处进行NAT设置:


# iptables -t nat -A POSTROUTING -s 172.16.16.2 -j SNAT --to 10.10.10.1

(3),刷新路由缓存:


# ip ro flush cache

注意:如果路由缓存不刷新的话,路由命令不能马上生效!

脚本如下:


#!/bin/sh  
echo 1 >/proc/sys/net/ipv4/ip_forward  
ip ru add from 172.16.16.2 lookup 5  
ip ro add 202.96.209.133 via 192.168.1.1 table 5  
iptables -t nat -A POSTROUTING -s 172.16.16.2 -d 202.96.209.133 -j SNAT --to 192.168.1.3  
ip ro add default via 10.10.10.2 table 5  
iptables -t nat -A POSTROUTING -s 172.16.16.2 -j SNAT --to 10.10.10.1  
ip ro flush cache

你也可以将上面脚本中的几行iptables命令合为一行如下:


#iptables -t nat -A POSTROUTING -s 172.16.16.2 -j MASQUERADE

那么脚本如下:


#!/bin/sh
echo 1 >/proc/sys/net/ipv4/ip_forward
ip ru add from 172.16.16.2 lookup 5
ip ro add 202.96.209.133 via 192.168.1.1 table 5
ip ro add default via 10.10.10.2 table 5
iptables -t nat -A POSTROUTING -s 172.16.16.2 -j MASQUERADE
ip ro flush cache

可以使用tracert命令进行测试。不同点在于路由的第二跳,到202.96.209.133时,第二跳为:192.168.1.1,到其他地方时第二跳为:10.10.10.2。

注意:linux路由器是不能上网的,因为没有为他自己指定专门的路由或默认路由。为Linux路由器指定路由的命令如下:


ip ro add default via 192.168.1.1
ip ro flush cache

文章2:


实验名称:Linux下实现基于源地址的策略路由
操作系统:RedHat 7.2
所使用的内核:2.4.18
必须的模块: iproute2,iptables

功能描述:首先你必须明白策略路由和路由策略是两个不同的概念,策略路由是根据IP包中的源地址,端口号等来实现的;而路由策略可以理解为路由表中的一系列路由动作。

普通的路由是根据IP包中的目的地址来判断的,如:如果数据包是到http://linux.networksbase.com的,那么发送到网关192.168.1.1,如果到其他地方发送到192.168.2.1。
但很多时候我们需要对数据包的源地址也要作出判断,如:网络中有几条出口线路,那么优先权高的人走速率快的链路,其他人走速率慢的链路,这个时候就需要策略路由。

描述:实验中有两个局域网:LAN 1和LAN 2,我们要实现如下功能:


1,LAN 1中的192.168.2.25和192.168.2.128从路由器A上网;
2,LAN 1中的其他用户从路由器B上网;
3,LAN 2中的所有用户从路由器A上网

实现:

首先你要打开Linux服务器的路由功能,命令如下:


echo 1> /proc/sys/net/ipv4/ip_forward

然后设置LAN 1和LAN 2的IP伪装:


iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -j MASQUERADE

1,设置192.168.2.25和192.168.2.128的路由:


ip rule add from 192.168.2.25 lookup 5
ip rule add from 192.168.2.128 lookup 5

这两句话的意思是将来自192.168.2.25和192.168.2.128的数据查找路由表5


ip route add default via 192.168.0.1 table 5

定义路由表5的路由策略。

2,设置LAN 1中其他用户的路由:


ip rule add from 192.168.2.0/24 lookup 6

这句话的意思是让来自192.168.2.0的数据查找路由表6


ip route add default via 192.168.1.1 table 6

定义路由表6的路由策略。

3,设置LAN 2的路由:


ip rule add from 172.16.3.0/24 lookup 6

这句话的意思是让来自LAN 2的数据查找路由表6


ip route add default via 192.168.1.1 table 6(这条命令上面已经用过了!)

4,刷新路由:


ip route flush cache

5,脚本如下:


#!/bin/sh  
echo 1> /proc/sys/net/ipv4/ip_forward  
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE  
iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -j MASQUERADE  
ip rule add from 192.168.2.25 lookup 5  
ip rule add from 192.168.2.128 lookup 5  
ip route add default via 192.168.0.1 table 5  
ip rule add from 192.168.2.0/24 lookup 6  
ip rule add from 172.16.3.0/24 lookup 6  
ip route add default via 192.168.1.1 table 6  
ip route flush cache

6,更明显一些,我们可以将上面脚本中的iptables命令行替换为下面的行


iptables -t nat -A POSTROUTING -s 192.168.2.25/24 -j SNAT --to 192.168.0.51
iptables -t nat -A POSTROUTING -s 192.168.2.128/24 -j SNAT --to 192.168.0.51
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 192.168.1.51
iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -j SNAT --to 192.168.0.51

那么新脚本如下:


#!/bin/sh  
echo 1> /proc/sys/net/ipv4/ip_forward  
iptables -t nat -A POSTROUTING -s 192.168.2.25/24 -j SNAT --to 192.168.0.51  
iptables -t nat -A POSTROUTING -s 192.168.2.128/24 -j SNAT --to 192.168.0.51  
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 192.168.1.51  
iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -j SNAT --to 192.168.0.51  
ip rule add from 192.168.2.25 lookup 5  
ip rule add from 192.168.2.128 lookup 5  
ip route add default via 192.168.0.1 table 5  
ip rule add from 192.168.2.0/24 lookup 6  
ip rule add from 172.16.3.0/24 lookup 6  
ip route add default via 192.168.1.1 table 6  
ip route flush cache

 

最后编辑于 :2017.12.07 07:04:37

 

================

 

root@gl-ar300m:~# 
root@gl-ar300m:~# ifconfig 
br-lan    Link encap:Ethernet  HWaddr 00:03:7F:11:23:C6  
          inet addr:192.168.11.1  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::203:7fff:fe11:23c6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:461 errors:0 dropped:0 overruns:0 frame:0
          TX packets:282 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51234 (50.0 KiB)  TX bytes:42087 (41.1 KiB)

br-lan:0  Link encap:Ethernet  HWaddr 00:03:7F:11:23:C6  
          inet addr:192.168.111.254  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0      Link encap:Ethernet  HWaddr 94:83:C4:2B:31:28  
          inet addr:192.168.211.108  Bcast:192.168.211.255  Mask:255.255.255.0
          inet6 addr: fe80::9683:c4ff:fe2b:3128/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1492  Metric:1
          RX packets:47 errors:0 dropped:0 overruns:0 frame:0
          TX packets:251 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6471 (6.3 KiB)  TX bytes:22815 (22.2 KiB)
          Interrupt:4 

eth1      Link encap:Ethernet  HWaddr 00:03:7F:11:23:C6  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:464 errors:0 dropped:3 overruns:0 frame:0
          TX packets:277 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:57868 (56.5 KiB)  TX bytes:41529 (40.5 KiB)
          Interrupt:5 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:82 errors:0 dropped:0 overruns:0 frame:0
          TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:5282 (5.1 KiB)  TX bytes:5282 (5.1 KiB)

wlan0     Link encap:Ethernet  HWaddr 94:83:C4:2B:31:28  
          inet6 addr: fe80::9683:c4ff:fe2b:3128/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:123 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:17266 (16.8 KiB)

wwan0     Link encap:Ethernet  HWaddr FA:52:E6:62:B9:B8  
          inet addr:100.64.32.73  Mask:255.255.255.252
          inet6 addr: fe80::f852:e6ff:fe62:b9b8/64 Scope:Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:78 errors:0 dropped:0 overruns:0 frame:0
          TX packets:97 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7836 (7.6 KiB)  TX bytes:12815 (12.5 KiB)

root@gl-ar300m:~# 
root@gl-ar300m:~# ps | grep mwan
 5778 root      1292 S    /bin/sh /usr/sbin/mwan3track lte1 wwan0 2 1 2 5 3 3 100.64.0.1 10.0.0.1 4.2.2.1 114.114.114
23128 root      1292 S    /bin/sh /usr/sbin/mwan3track wan eth0 2 1 2 5 3 3 100.64.0.1 10.0.0.1 4.2.2.1 114.114.114.1
23796 root      1284 S    grep mwan
root@gl-ar300m:~# 
root@gl-ar300m:~# mwan3 status
Interface status:
 interface wan is offline and tracking is active
 interface lte1 is online and tracking is active
 interface lte2 is unknown and tracking is down

Current ipv4 policies:
lte_p_wan_s:
 lte1 (100%)


Current ipv6 policies:
lte_p_wan_s:
 default


Directly connected ipv4 networks:
 127.0.0.0
 192.168.11.0
 192.168.211.0
 100.64.32.72
 192.168.211.0/24
 192.168.111.0
 192.168.11.0/24
 192.168.11.1
 100.64.32.72/30
 192.168.111.254
 192.168.111.255
 127.0.0.1
 192.168.11.255
 192.168.211.255
 192.168.211.108
 100.64.32.75
 192.168.111.0/24
 224.0.0.0/3
 127.255.255.255
 100.64.32.73
 127.0.0.0/8

Directly connected ipv6 networks:
 fe80::/64

Active ipv4 user rules:
   12   936 - lte_p_wan_s  all  --  *      *       0.0.0.0/0            0.0.0.0/0            

Active ipv6 user rules:
    0     0 - lte_p_wan_s  all      *      *       ::/0                 ::/0                 

root@gl-ar300m:~# 
root@gl-ar300m:~# 
root@gl-ar300m:~# mwan3 interfaces
Interface status:
 interface wan is offline and tracking is active
 interface lte1 is online and tracking is active
 interface lte2 is unknown and tracking is down

root@gl-ar300m:~# 
root@gl-ar300m:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         100.64.32.74    0.0.0.0         UG    41     0        0 wwan0
0.0.0.0         192.168.211.1   0.0.0.0         UG    43     0        0 eth0
100.64.32.72    0.0.0.0         255.255.255.252 U     41     0        0 wwan0
192.168.11.0    0.0.0.0         255.255.255.0   U     0      0        0 br-lan
192.168.111.0   0.0.0.0         255.255.255.0   U     0      0        0 br-lan
192.168.211.0   0.0.0.0         255.255.255.0   U     43     0        0 eth0
root@gl-ar300m:~# 
root@gl-ar300m:~# ip rule show
0:	from all lookup local 
1001:	from all iif eth0 lookup main 
1002:	from all iif wwan0 lookup main 
2001:	from all fwmark 0x100/0xff00 lookup 1 
2002:	from all fwmark 0x200/0xff00 lookup 2 
2253:	from all fwmark 0xfd00/0xff00 blackhole
2254:	from all fwmark 0xfe00/0xff00 unreachable
32766:	from all lookup main 
32767:	from all lookup default 
root@gl-ar300m:~# 
root@gl-ar300m:~# ip route show table 255
broadcast 100.64.32.72 dev wwan0  proto kernel  scope link  src 100.64.32.73 
local 100.64.32.73 dev wwan0  proto kernel  scope host  src 100.64.32.73 
broadcast 100.64.32.75 dev wwan0  proto kernel  scope link  src 100.64.32.73 
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.11.0 dev br-lan  proto kernel  scope link  src 192.168.11.1 
local 192.168.11.1 dev br-lan  proto kernel  scope host  src 192.168.11.1 
broadcast 192.168.11.255 dev br-lan  proto kernel  scope link  src 192.168.11.1 
broadcast 192.168.111.0 dev br-lan  proto kernel  scope link  src 192.168.111.254 
local 192.168.111.254 dev br-lan  proto kernel  scope host  src 192.168.111.254 
broadcast 192.168.111.255 dev br-lan  proto kernel  scope link  src 192.168.111.254 
broadcast 192.168.211.0 dev eth0  proto kernel  scope link  src 192.168.211.108 
local 192.168.211.108 dev eth0  proto kernel  scope host  src 192.168.211.108 
broadcast 192.168.211.255 dev eth0  proto kernel  scope link  src 192.168.211.108 
root@gl-ar300m:~# 
root@gl-ar300m:~# ip route show table 254
default via 100.64.32.74 dev wwan0  proto static  src 100.64.32.73  metric 41 
default via 192.168.211.1 dev eth0  proto static  src 192.168.211.108  metric 43 
100.64.32.72/30 dev wwan0  proto static  scope link  metric 41 
192.168.11.0/24 dev br-lan  proto kernel  scope link  src 192.168.11.1 
192.168.111.0/24 dev br-lan  proto kernel  scope link  src 192.168.111.254 
192.168.211.0/24 dev eth0  proto static  scope link  metric 43 
root@gl-ar300m:~# 
root@gl-ar300m:~# ip route show table 253
root@gl-ar300m:~# 
root@gl-ar300m:~# ip route show table 3
root@gl-ar300m:~# 
root@gl-ar300m:~# ip route show table 2
default via 100.64.32.74 dev wwan0 
root@gl-ar300m:~# 
root@gl-ar300m:~# ip route show table 1
default via 192.168.211.1 dev eth0 
root@gl-ar300m:~# 
root@gl-ar300m:~# ip route show table 0
default via 192.168.211.1 dev eth0  table 1 
default via 100.64.32.74 dev wwan0  table 2 
default via 100.64.32.74 dev wwan0  proto static  src 100.64.32.73  metric 41 
default via 192.168.211.1 dev eth0  proto static  src 192.168.211.108  metric 43 
100.64.32.72/30 dev wwan0  proto static  scope link  metric 41 
192.168.11.0/24 dev br-lan  proto kernel  scope link  src 192.168.11.1 
192.168.111.0/24 dev br-lan  proto kernel  scope link  src 192.168.111.254 
192.168.211.0/24 dev eth0  proto static  scope link  metric 43 
broadcast 100.64.32.72 dev wwan0  table local  proto kernel  scope link  src 100.64.32.73 
local 100.64.32.73 dev wwan0  table local  proto kernel  scope host  src 100.64.32.73 
broadcast 100.64.32.75 dev wwan0  table local  proto kernel  scope link  src 100.64.32.73 
broadcast 127.0.0.0 dev lo  table local  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  table local  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  table local  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  table local  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.11.0 dev br-lan  table local  proto kernel  scope link  src 192.168.11.1 
local 192.168.11.1 dev br-lan  table local  proto kernel  scope host  src 192.168.11.1 
broadcast 192.168.11.255 dev br-lan  table local  proto kernel  scope link  src 192.168.11.1 
broadcast 192.168.111.0 dev br-lan  table local  proto kernel  scope link  src 192.168.111.254 
local 192.168.111.254 dev br-lan  table local  proto kernel  scope host  src 192.168.111.254 
broadcast 192.168.111.255 dev br-lan  table local  proto kernel  scope link  src 192.168.111.254 
broadcast 192.168.211.0 dev eth0  table local  proto kernel  scope link  src 192.168.211.108 
local 192.168.211.108 dev eth0  table local  proto kernel  scope host  src 192.168.211.108 
broadcast 192.168.211.255 dev eth0  table local  proto kernel  scope link  src 192.168.211.108 
fe80::/64 dev br-lan  proto kernel  metric 256  pref medium
fe80::/64 dev wlan0  proto kernel  metric 256  pref medium
fe80::/64 dev wwan0  proto kernel  metric 256  pref medium
fe80::/64 dev eth0  proto kernel  metric 256  pref medium
unreachable default dev lo  proto kernel  metric 4294967295  error -128 pref medium
local ::1 dev lo  table local  proto none  metric 0  pref medium
local fe80:: dev lo  table local  proto none  metric 0  pref medium
local fe80:: dev lo  table local  proto none  metric 0  pref medium
local fe80:: dev lo  table local  proto none  metric 0  pref medium
local fe80:: dev lo  table local  proto none  metric 0  pref medium
local fe80::203:7fff:fe11:23c6 dev lo  table local  proto none  metric 0  pref medium
local fe80::9683:c4ff:fe2b:3128 dev lo  table local  proto none  metric 0  pref medium
local fe80::9683:c4ff:fe2b:3128 dev lo  table local  proto none  metric 0  pref medium
local fe80::f852:e6ff:fe62:b9b8 dev lo  table local  proto none  metric 0  pref medium
ff00::/8 dev br-lan  table local  metric 256  pref medium
ff00::/8 dev wlan0  table local  metric 256  pref medium
ff00::/8 dev wwan0  table local  metric 256  pref medium
ff00::/8 dev eth0  table local  metric 256  pref medium
unreachable default dev lo  proto kernel  metric 4294967295  error -128 pref medium
root@gl-ar300m:~# 
root@gl-ar300m:~# ipset --list
Name: local
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 1048
References: 0
Members:
192.88.99.0/24
10.0.0.0/8
100.64.0.0/10
172.16.0.0/12
192.168.0.0/16
224.0.0.0/3
192.0.2.0/24
203.0.113.0/24
127.0.0.0/8
192.0.0.0/24
0.0.0.0/8
198.18.0.0/15
198.51.100.0/24

Name: mwan3_connected_v4
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 1496
References: 1
Members:
192.168.211.0
100.64.32.72/30
100.64.32.75
192.168.11.255
192.168.11.1
127.0.0.0/8
192.168.111.0/24
127.255.255.255
192.168.11.0
192.168.211.0/24
192.168.111.254
100.64.32.73
192.168.211.108
192.168.111.0
192.168.111.255
192.168.211.255
100.64.32.72
224.0.0.0/3
127.0.0.0
192.168.11.0/24
127.0.0.1

Name: mwan3_connected_v6
Type: hash:net
Revision: 6
Header: family inet6 hashsize 1024 maxelem 65536
Size in memory: 1192
References: 1
Members:
fe80::/64

Name: mwan3_connected
Type: list:set
Revision: 3
Header: size 8
Size in memory: 92
References: 4
Members:
mwan3_connected_v4
mwan3_connected_v6

root@gl-ar300m:~# 
root@gl-ar300m:~# iptables -S -t mangle
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N mwan3_connected
-N mwan3_hook
-N mwan3_iface_in_lte1
-N mwan3_iface_in_wan
-N mwan3_iface_out_lte1
-N mwan3_iface_out_wan
-N mwan3_ifaces_in
-N mwan3_ifaces_out
-N mwan3_policy_lte_p_wan_s
-N mwan3_rules
-A PREROUTING -j mwan3_hook
-A FORWARD -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "!fw3: Zone wan MTU fixing" -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "!fw3: Zone wan MTU fixing" -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -o wwan0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "!fw3: Zone lte1 MTU fixing" -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i wwan0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "!fw3: Zone lte1 MTU fixing" -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -o wwan1 -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "!fw3: Zone lte2 MTU fixing" -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i wwan1 -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "!fw3: Zone lte2 MTU fixing" -j TCPMSS --clamp-mss-to-pmtu
-A OUTPUT -j mwan3_hook
-A mwan3_connected -m set --match-set mwan3_connected dst -j MARK --set-xmark 0xff00/0xff00
-A mwan3_hook -j CONNMARK --restore-mark --nfmask 0xff00 --ctmask 0xff00
-A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_ifaces_in
-A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_connected
-A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_ifaces_out
-A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_rules
-A mwan3_hook -j CONNMARK --save-mark --nfmask 0xff00 --ctmask 0xff00
-A mwan3_hook -m mark ! --mark 0xff00/0xff00 -j mwan3_connected
-A mwan3_iface_in_lte1 -i wwan0 -m set --match-set mwan3_connected src -m mark --mark 0x0/0xff00 -m comment --comment default -j MARK --set-xmark 0xff00/0xff00
-A mwan3_iface_in_lte1 -i wwan0 -m mark --mark 0x0/0xff00 -m comment --comment lte1 -j MARK --set-xmark 0x200/0xff00
-A mwan3_iface_in_wan -i eth0 -m set --match-set mwan3_connected src -m mark --mark 0x0/0xff00 -m comment --comment default -j MARK --set-xmark 0xff00/0xff00
-A mwan3_iface_in_wan -i eth0 -m mark --mark 0x0/0xff00 -m comment --comment wan -j MARK --set-xmark 0x100/0xff00
-A mwan3_iface_out_lte1 -s 100.64.32.73/32 -m mark --mark 0x0/0xff00 -m comment --comment lte1 -j MARK --set-xmark 0x200/0xff00
-A mwan3_iface_out_wan -s 192.168.211.108/32 -m mark --mark 0x0/0xff00 -m comment --comment wan -j MARK --set-xmark 0x100/0xff00
-A mwan3_ifaces_in -m mark --mark 0x0/0xff00 -j mwan3_iface_in_lte1
-A mwan3_ifaces_in -m mark --mark 0x0/0xff00 -j mwan3_iface_in_wan
-A mwan3_ifaces_out -m mark --mark 0x0/0xff00 -j mwan3_iface_out_lte1
-A mwan3_ifaces_out -m mark --mark 0x0/0xff00 -j mwan3_iface_out_wan
-A mwan3_policy_lte_p_wan_s -m mark --mark 0x0/0xff00 -m comment --comment "lte1 5 5" -j MARK --set-xmark 0x200/0xff00
-A mwan3_rules -m mark --mark 0x0/0xff00 -m comment --comment lte_first -j mwan3_policy_lte_p_wan_s
root@gl-ar300m:~#

 

Software versions : 

OpenWrt - LEDE AR300M v1.0.1 17.01-SNAPSHOT 202305050225
LuCI - git-23.146.22336-9c6cf7f

mwan3 - 2.0.2-1
mwan3-luci - 1.4-6

Output of "cat /etc/config/mwan3" : 

config globals 'globals'
	option mmx_mask '0x3F00'
	option rtmon_interval '5'

config interface 'wan'
	option enabled '1'
	option initial_state 'online'
	option family 'ipv4'
	list track_ip '114.114.114.114'
	list track_ip '4.2.2.1'
	list track_ip '10.0.0.1'
	list track_ip '100.64.0.1'
	option track_method 'ping'
	option reliability '2'
	option count '1'
	option size '56'
	option check_quality '0'
	option timeout '2'
	option interval '5'
	option failure_interval '5'
	option recovery_interval '5'
	option down '3'
	option up '3'
	option flush_conntrack 'never'

config interface 'lte1'
	option enabled '1'
	option initial_state 'online'
	option family 'ipv4'
	list track_ip '114.114.114.114'
	list track_ip '4.2.2.1'
	list track_ip '10.0.0.1'
	list track_ip '100.64.0.1'
	option track_method 'ping'
	option reliability '2'
	option count '1'
	option size '56'
	option check_quality '0'
	option timeout '2'
	option interval '5'
	option failure_interval '5'
	option recovery_interval '5'
	option down '3'
	option up '3'
	option flush_conntrack 'never'

config interface 'lte2'
	option enabled '1'
	option initial_state 'online'
	option family 'ipv4'
	list track_ip '114.114.114.114'
	list track_ip '4.2.2.1'
	list track_ip '10.0.0.1'
	list track_ip '100.64.0.1'
	option track_method 'ping'
	option reliability '2'
	option count '1'
	option size '56'
	option check_quality '0'
	option timeout '2'
	option interval '5'
	option failure_interval '5'
	option recovery_interval '5'
	option down '3'
	option up '3'
	option flush_conntrack 'never'

config member 'lte1_m1_w5'
	option interface 'lte1'
	option metric '1'
	option weight '5'

config member 'lte2_m1_w5'
	option interface 'lte2'
	option metric '1'
	option weight '5'

config member 'wan_m2_w2'
	option interface 'wan'
	option metric '2'
	option weight '2'

config policy 'lte_p_wan_s'
	list use_member 'lte1_m1_w5'
	list use_member 'lte2_m1_w5'
	list use_member 'wan_m2_w2'
	option last_resort 'default'

config rule 'lte_first'
	option dest_ip '0.0.0.0/0'
	option proto 'all'
	option sticky '0'
	option use_policy 'lte_p_wan_s'

Output of "cat /etc/config/network" : 

config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'

config interface 'lan'
	option type 'bridge'
	option ifname 'eth1'
	option proto 'static'
	option ipaddr '192.168.11.1'
	option netmask '255.255.255.0'

config interface 'wan'
	option ifname 'eth0'
	option proto 'dhcp'
	option mtu '1492'
	option metric '43'

config interface 'lte1'
	option ifname 'wwan0'
	option proto 'dhcp'
	option metric '41'

config interface 'lte2'
	option ifname 'wwan1'
	option proto 'dhcp'
	option metric '42'

Output of "cat /etc/config/wireless" : 

config wifi-device 'radio0'
	option type 'mac80211'
	option channel '11'
	option hwmode '11g'
	option path 'platform/qca953x_wmac'
	option htmode 'HT40'
	option noscan '1'
	option country 'CN'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'LEDE_3128'
	option encryption 'psk2'
	KEY HIDDEN

Output of "ifconfig" : 

br-lan    Link encap:Ethernet  HWaddr 00:03:7F:11:23:C6  
          inet addr:192.168.11.1  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::203:7fff:fe11:23c6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3003 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2202 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:264170 (257.9 KiB)  TX bytes:804422 (785.5 KiB)

br-lan:0  Link encap:Ethernet  HWaddr 00:03:7F:11:23:C6  
          inet addr:192.168.111.254  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0      Link encap:Ethernet  HWaddr 94:83:C4:2B:31:28  
          inet addr:192.168.211.108  Bcast:192.168.211.255  Mask:255.255.255.0
          inet6 addr: fe80::9683:c4ff:fe2b:3128/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1492  Metric:1
          RX packets:742 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2562 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:98800 (96.4 KiB)  TX bytes:221928 (216.7 KiB)
          Interrupt:4 

eth1      Link encap:Ethernet  HWaddr 00:03:7F:11:23:C6  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3007 errors:0 dropped:4 overruns:0 frame:0
          TX packets:2197 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:306452 (299.2 KiB)  TX bytes:803864 (785.0 KiB)
          Interrupt:5 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:846 errors:0 dropped:0 overruns:0 frame:0
          TX packets:846 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:55968 (54.6 KiB)  TX bytes:55968 (54.6 KiB)

wlan0     Link encap:Ethernet  HWaddr 94:83:C4:2B:31:28  
          inet6 addr: fe80::9683:c4ff:fe2b:3128/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:986 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:124871 (121.9 KiB)

wwan0     Link encap:Ethernet  HWaddr FA:52:E6:62:B9:B8  
          inet addr:100.64.32.73  Mask:255.255.255.252
          inet6 addr: fe80::f852:e6ff:fe62:b9b8/64 Scope:Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:1312 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1376 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:111264 (108.6 KiB)  TX bytes:128597 (125.5 KiB)

Output of "route -n" : 

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         100.64.32.74    0.0.0.0         UG    41     0        0 wwan0
0.0.0.0         192.168.211.1   0.0.0.0         UG    43     0        0 eth0
100.64.32.72    0.0.0.0         255.255.255.252 U     41     0        0 wwan0
192.168.11.0    0.0.0.0         255.255.255.0   U     0      0        0 br-lan
192.168.111.0   0.0.0.0         255.255.255.0   U     0      0        0 br-lan
192.168.211.0   0.0.0.0         255.255.255.0   U     43     0        0 eth0

Output of "ip rule show" : 

0:	from all lookup local 
1001:	from all iif eth0 lookup main 
1002:	from all iif wwan0 lookup main 
2001:	from all fwmark 0x100/0xff00 lookup 1 
2002:	from all fwmark 0x200/0xff00 lookup 2 
2253:	from all fwmark 0xfd00/0xff00 blackhole
2254:	from all fwmark 0xfe00/0xff00 unreachable
32766:	from all lookup main 
32767:	from all lookup default

Output of "ip route list table 1-250" : 

1
default via 192.168.211.1 dev eth0 
2
default via 100.64.32.74 dev wwan0

Firewall default output policy (must be ACCEPT) : 

ACCEPT

Output of "iptables -L -t mangle -v -n" : 

Chain PREROUTING (policy ACCEPT 198 packets, 17561 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 5433  464K mwan3_hook  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain INPUT (policy ACCEPT 159 packets, 14019 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 TCPMSS     tcp  --  *      eth0    0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 /* !fw3: Zone wan MTU fixing */ TCPMSS clamp to PMTU
    0     0 TCPMSS     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 /* !fw3: Zone wan MTU fixing */ TCPMSS clamp to PMTU
    0     0 TCPMSS     tcp  --  *      wwan0   0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 /* !fw3: Zone lte1 MTU fixing */ TCPMSS clamp to PMTU
    0     0 TCPMSS     tcp  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 /* !fw3: Zone lte1 MTU fixing */ TCPMSS clamp to PMTU
    0     0 TCPMSS     tcp  --  *      wwan1   0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 /* !fw3: Zone lte2 MTU fixing */ TCPMSS clamp to PMTU
    0     0 TCPMSS     tcp  --  wwan1  *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 /* !fw3: Zone lte2 MTU fixing */ TCPMSS clamp to PMTU

Chain OUTPUT (policy ACCEPT 199 packets, 73191 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 6437 1084K mwan3_hook  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain POSTROUTING (policy ACCEPT 199 packets, 73191 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain mwan3_connected (2 references)
 pkts bytes target     prot opt in     out     source               destination         
 2870  246K MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set mwan3_connected dst MARK or 0xff00

Chain mwan3_hook (2 references)
 pkts bytes target     prot opt in     out     source               destination         
11870 1547K CONNMARK   all  --  *      *       0.0.0.0/0            0.0.0.0/0            CONNMARK restore mask 0xff00
 3163  259K mwan3_ifaces_in  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00
 3159  258K mwan3_connected  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00
 2464  203K mwan3_ifaces_out  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00
  600 47457 mwan3_rules  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00
11870 1547K CONNMARK   all  --  *      *       0.0.0.0/0            0.0.0.0/0            CONNMARK save mask 0xff00
 4669  399K mwan3_connected  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match ! 0xff00/0xff00

Chain mwan3_iface_in_lte1 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MARK       all  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            match-set mwan3_connected src mark match 0x0/0xff00 /* default */ MARK or 0xff00
    0     0 MARK       all  --  wwan0  *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00 /* lte1 */ MARK xset 0x200/0xff00

Chain mwan3_iface_in_wan (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MARK       all  --  eth0   *       0.0.0.0/0            0.0.0.0/0            match-set mwan3_connected src mark match 0x0/0xff00 /* default */ MARK or 0xff00
    0     0 MARK       all  --  eth0   *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00 /* wan */ MARK xset 0x100/0xff00

Chain mwan3_iface_out_lte1 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 1314  110K MARK       all  --  *      *       100.64.32.73         0.0.0.0/0            mark match 0x0/0xff00 /* lte1 */ MARK xset 0x200/0xff00

Chain mwan3_iface_out_wan (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   10   840 MARK       all  --  *      *       192.168.211.108      0.0.0.0/0            mark match 0x0/0xff00 /* wan */ MARK xset 0x100/0xff00

Chain mwan3_ifaces_in (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 3088  251K mwan3_iface_in_lte1  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00
   78  6626 mwan3_iface_in_wan  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00

Chain mwan3_ifaces_out (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 2394  197K mwan3_iface_out_lte1  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00
   45  3570 mwan3_iface_out_wan  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00

Chain mwan3_policy_lte_p_wan_s (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   35  2730 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00 /* lte1 5 5 */ MARK xset 0x200/0xff00

Chain mwan3_rules (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   35  2730 mwan3_policy_lte_p_wan_s  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x0/0xff00 /* lte_first */

 

=========== End