У меня есть два 3G USB-модема (или один USB-модем и любой другой сетевой интерфейс - eth
или wlan
).
Я соединяю оба интерфейса, создавая IP-правила и добавляя маршруты для каждого из них следующим образом:
sb="ip/subnet"
ifn="network interface (ppp0, eth0..etc)"
ipo="interface ip"
ip route add "$sb" dev "$ifn" src "$ipo" table "$tbl"
ip route add "$sb" dev "$ifn" src "$ipo"
ip route add default via "$gw" table "$tbl"
ip rule add from "$ipo" table "$tbl"
ip rule add to "$ipo" table "$tbl"
Оба интерфейса подключаются, и каждый из них подключается с полной скоростью независимо. Проблема начинается, когда я пытаюсь загрузить, используя оба интерфейса одновременно:
Откройте терминал и начните загрузку на первом интерфейсе:
curl --interface ppp0 "$URL" -o /dev/null
Откройте другой терминал и начните загрузку на втором интерфейсе:
curl --interface ppp1 "$URL" -o /dev/null
Проблема в том, что оба интерфейса становятся медленнее, когда обе команды запускаются вместе, первый интерфейс запускается со скоростью 1,5 Мбит/с, когда запускается следующая команда, первый интерфейс начинает падать в скорости. То же самое происходит и наоборот, когда первым запускается второй интерфейс, скорость падает, когда запускается первый интерфейс.
Как будто происходит автоматическая балансировка нагрузки. Я пробовал с параметрами ядра rp_filter
и arp_filter
.
Если говорить точнее, мне не нужна балансировка нагрузки, мне просто нужно, чтобы каждый интерфейс работал независимо для одновременных подключений.
Спасибо!
ОБНОВЛЯТЬ
Даже если каждый интерфейс находится в отдельном сетевом пространстве имен, они влияют на скорость друг друга при одновременной работе.