Назад | Перейти на главную страницу

Балансировка нагрузки блока NAT с помощью iptables и 4 восходящих канала DHCP

Я пытаюсь настроить маршрутизатор, который предоставляет Интернет нескольким сотням пользователей. Этот маршрутизатор имеет 4 основных кабельных канала связи, все из которых используют DHCP и имеют пропускную способность около 10/1 Мбит / с.

Маршрутизатор имеет 3 интерфейса:

подробности ip route, ip rule и iptables можно найти здесь : http://pastebin.com/Qi3KBR79

Номера VLAN от 24 до 27, и соответствующие таблицы маршрутизации имеют те же номера. Каждая из этих таблиц маршрутизации содержит записи уровня канала для eth0, eth1 и eth2.X, а также маршрут по умолчанию, заданный DHCP-сервером. Обратите внимание, что возможно, что 2 модема окажутся в одной подсети ...

Я использую CONNMARK и правило ip, чтобы отмечать соединения и перенаправлять их в специфичные для модема таблицы маршрутизации. У меня также есть dhclient-hook, который заботится об обновлении этих вторичных таблиц маршрутизации всякий раз, когда обновляется аренда DHCP.

Политика iptables по умолчанию - DROP для INPUT и FORWARD и ACCEPT для OUTPUT. Обратите внимание, что раздел правил ip перенаправляет fwmark 3 и 4 обратно на модемы 1 и 2, но это временно, поскольку другие 2 модема все еще передают трафик от пользователей (мы не можем полностью их отключить ...)

Теперь, учитывая все вышесказанное, это решение вроде работает, но демонстрирует потерю около 50% пакетов, независимо от выбранного восходящего канала: - / Может ли кто-нибудь быть так любезен, чтобы сказать мне, что я делаю неправильно? Я уже несколько часов пытаюсь решить эту проблему, и это очень расстраивает ...

Заранее спасибо, - Томас

Я думаю, что нашел проблему: CONNMARK. В mangle-PREROUTING, кажется, что --restore-mark устанавливает только отметку для следующей таблицы, поэтому последующие правила совпадают --mark=0 и ставим новую отметку для каждого пакета.

Решением было бы отмечать только совпадающие пакеты --state NEW. Однако мы также решили, что клиенты должны иметь согласованные IP-адреса при доступе к веб-сайтам, иначе некоторые приложения, в частности электронный банкинг, выйдут из строя.

Итак, наконец, маркировка была сделана на основе IP, с нашим исходным пулом, разделенным на несколько подсетей / 25.

HTH!

Томас