#!/bin/sh
# simple iptables rules
for a in $(cat /path/to/routeISP1.list); do
iptables -t mangle -A PREROUTING -d $a -j MARK --set-xmark 0x1
done
for b in $(cat /path/to/routeISP2.list); do
iptables -t mangle -A PREROUTING -d $b -j MARK --set-xmark 0x2
done
Где routeISP1.list и routeISP2.list текстовые файлы с маршрутами в CIDR.
Кроме того, чтобы пометить трафик, надо определить метки по таблицам в ip rule. Например в up либо post-up секций файла /etc/network/interfaces
ip rule add fwmark 0x1 table ISP1
ip rule add fwmark 0x2 table ISP2
Вот мой рабочий пример.
root@dc1:~# iptables -t mangle -nvL PREROUTING
Chain PREROUTING (policy ACCEPT 33M packets, 6872M bytes)
pkts bytes target prot opt in out source destination
1433K 787M MARK all -- * * 192.168.10.128/26 0.0.0.0/0 MARK xset 0x3/0xffffffff
477K 158M MARK all -- * * 192.168.10.192/26 0.0.0.0/0 MARK xset 0x2/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 128.140.160.0/21 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 109.170.0.0/17 MARK xset 0x3/0xffffffff
25 4657 MARK all -- * * 192.168.10.192/26 176.77.0.0/17 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 128.204.0.0/17 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 109.75.240.0/20 MARK xset 0x3/0xffffffff
16 3542 MARK all -- * * 192.168.10.192/26 95.182.0.0/18 MARK xset 0x3/0xffffffff
117 25967 MARK all -- * * 192.168.10.192/26 79.111.0.0/16 MARK xset 0x3/0xffffffff
38 9087 MARK all -- * * 192.168.10.192/26 79.120.0.0/17 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 89.20.128.0/19 MARK xset 0x3/0xffffffff
418 89647 MARK all -- * * 192.168.10.192/26 95.220.0.0/15 MARK xset 0x3/0xffffffff
1865 549K MARK all -- * * 192.168.10.192/26 212.1.224.0/19 MARK xset 0x3/0xffffffff
153 28186 MARK all -- * * 192.168.10.192/26 213.141.128.0/19 MARK xset 0x3/0xffffffff
262 51931 MARK all -- * * 192.168.10.192/26 46.72.0.0/15 MARK xset 0x3/0xffffffff
210 44182 MARK all -- * * 192.168.10.192/26 176.192.0.0/14 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 89.20.128.0/19 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 91.205.168.0/22 MARK xset 0x3/0xffffffff
11 2643 MARK all -- * * 192.168.10.192/26 87.236.24.0/21 MARK xset 0x3/0xffffffff
18 4861 MARK all -- * * 192.168.10.192/26 85.159.40.0/21 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 93.191.72.0/21 MARK xset 0x3/0xffffffff
3 470 MARK all -- * * 192.168.10.192/26 217.112.0.0/20 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 78.41.96.0/21 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 80.90.112.0/20 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.192/26 80.68.64.0/20 MARK xset 0x3/0xffffffff
0 0 MARK all -- * * 192.168.10.128/26 10.0.0.0/8 MARK xset 0x2/0xffffffff
0 0 MARK all -- * * 192.168.10.128/26 172.16.0.0/12 MARK xset 0x2/0xffffffff
0 0 MARK all -- * * 192.168.10.128/26 213.109.16.0/20 MARK xset 0x2/0xffffffff
266 68948 MARK all -- * * 192.168.10.128/26 31.130.32.0/19 MARK xset 0x2/0xffffffff
root@dc1:~#
В общем - ничего сложного.