Одноранговая сеть /24, в сети есть сервер и три интернет-шлюза (роутеры).
Нужно зарулить трафик до определенных подсетей (подсети, в пределах городского пиринга) с объединением через эти шлюзы, остальной трафик пустить через _шлюз1_.
До этого использовалась статичная маршрутизация: ~30% сетей через _шлюз1_, еще 30% через _шлюз2_ и т.д.
Сейчас используется балансировка с помощью ip route:
#!/bin/bash
ip route add 31.135.208.0/21 scope global nexthop via 192.168.1.1 dev eth0 weight 1 \
nexthop via 192.168.1.2 dev eth0 weight 1 \
nexthop via 192.168.1.4 dev eth0 weight 1
ip route add 37.110.208.0/21 scope global nexthop via 192.168.1.1 dev eth0 weight 1 \
nexthop via 192.168.1.2 dev eth0 weight 1 \
nexthop via 192.168.1.4 dev eth0 weight 1
...
ip route add 217.30.160.0/20 scope global nexthop via 192.168.1.1 dev eth0 weight 1 \
nexthop via 192.168.1.2 dev eth0 weight 1 \
nexthop via 192.168.1.4 dev eth0 weight 1
В торрентах работает отлично, лучше, чем используемый вариант до этого - итоговая скорость равна сумме скоростей всех шлюзов.
Но если качать с определенного хоста, скорость равна ширине выбранного канала, а не всех - такое поведение не устраивает, нужно получить полную скорость всех каналов даже при коннекте к одному хосту.
Насколько я понимаю, то что я хочу, можно сделать с помощью iptables и маркировкой пакетов. Инструкций в сети полно для балансировки по интерфейсам всего трафика, но я не понимаю как сделать это с учетом того, что балансировка нужна лишь для определенных подсетей и интерфейс на сервере только один.
Буду очень благодарен за любую информацию.