Тема : iptables, iproute, imq & L7 для шлюза домашней сети с 2 internet-аплинками


shr_eax  01-02-2010 17:43
Собственно, представляю на ваш суд свои труды по организации шлюза на Linux для домашней сети с выходом в интернет через несколько каналов.

Исходные данные:

Локальная сеть с адресацией 192.168.0.0/16, ADSL-аплинк №1: шлюз 1.1.1.1/29, ADSL-аплинк №2: шлюз 1.1.1.9/29. ADSL-аплинки - это простые ADSL-модемы в режиме маршрутизации (Acorp 422G).
На компьютере-шлюзе 1 сетевая (eth0), 4 VLAN-интерфейса: vlan2 - на локальную сеть, vlan10 и vlan11 - на ADSL, vlan20 зарезервирован для межсерверного обмена.
Вся сетевая кухня идёт через свич HP Procurve 1800-8G (гигабит нужен для файл-сервера, поддерживает принудительное тэгирование VLAN). В принципе, всё можно сделать без него просто воткнув нужное количество сетевух в шлюз и использовать eth[x] вместо vlan[x] интерфейсов.
Доступ в интернет производится добавлением ip клиента в одну из ipset таблиц (делается в скрипте OnConnect биллинга Stargazer). Выход клиента в интернет производится с помощью NAT на нужный аплинк.
Т.к. количество абонентов уже не поддаётся так называемому "социальному" разделению (это когда все договариваются между собой когда и как "качать" ;)), то используется шейпер/шедулер с приоритезацией по типам протоколов и портов. HFSC как корневая классовая дисциплина, RED на ingress (т.е. на скачивание, если смотреть от абонента), SFQ на egress (т.е. на отдачу, если смотреть от абонента)


Требование наличия модулей и программ на шлюзе:

Linux-ядро пропатченное на модули l7filter, ipp2p, ipset, imq и со включенными параметрами VLAN, QoS, netfilter (желательно всеми, надо уточнить какие именно ;))
Установленные пакеты iptables (с патчами ipset, imq, l7filter), iproute2, ipset, l7filter, ipp2p, conntrack-tools (управление соединениями)
В файле /etc/iproute2/rt_tables должны быть такие строки:
10 T1
20 T2
Нужно для разделения маршрутов по аплинкам


И сам скрипт запуска (в нём объединена настройка iproute2, iptables и ipset) - http://slil.ru/28584846

Вопросы, комментарии, замечания и пожелания приветствуются!

shr_eax  02-02-2010 17:27
Интересно услышать мнения о выборе той или иной дисциплины QoS (htb, sfq, hfsc, red и т.д.). Кстати, в скрипте применена интересная система маркировки пакетов по маске самой маркировки =)

WAG[LAMO]  05-11-2010 15:39
Виртуальную машину и vyatta или endian