История изменений
Исправление nstorm, (текущая версия) :
В общем если 2ой вариант, при беглом осмотре я думаю это схематично так делается:
1. Модуль ipset проверяет на принадлежность src IP в каком-нибудь из наших наборов ipset (вначале они пустые). Если он есть в наборе, он присваивает потоку метку (цель CONNMARK). Если нет (значит IP нам неизвестен еще) - проходим дальше.
2. Модуль statistic для немаркированных пакетов выбирает с помощью random или nth и добавляет src ip пакета в нужный нам набор ipset с помощью цели SET. Т.е. тут «знакомимся с новым IP src» и заносим его в произвольно выбранный набор. Ну и метку сразу CONNMARK тоже даем этому 1ому пакету.
3. Машрутизируем трафик через ip rule fwmark в нужный поток на основании метки.
Т.о. у нас для новых (неизвестных) локальных IP будет произвольно (с нужным нам весом, если нужно) будет выбираться изначально заранее созданная группа IP адресов, куда он будет занесен. После занесения в набор ему будет присваивается метка, чтобы дальше применились правила маршрутизации. Думаю как-то так оно и реализовано в скриптах Mikrotik.
Исходная версия nstorm, :
В общем если 2ой вариант, при беглом осмотре я думаю это схематично так делается:
1. Модуль ipset проверяет на принадлежность src IP в каком-нибудь из наших наборов ipset (вначале они пустые). Если он есть в наборе, он присваивает потоку метку (цель CONNMARK). Если нет (значит IP нам неизвестен еще) - проходим дальше. 2. Модуль statistic для немаркированных пакетов выбирает с помощью random или nth и добавляет src ip пакета в нужный нам набор ipset с помощью цели SET. Т.е. тут «знакомимся с новым IP src» и заносим его в произвольно выбранный набор. Ну и метку сразу CONNMARK тоже даем этому 1ому пакету. 3. Машрутизируем трафик через ip rule fwmark в нужный поток на основании метки.
Т.о. у нас для новых (неизвестных) локальных IP будет произвольно (с нужным нам весом, если нужно) будет выбираться изначально заранее созданная группа IP адресов, куда он будет занесен. После занесения в набор ему будет присваивается метка, чтобы дальше применились правила маршрутизации. Думаю как-то так оно и реализовано в скриптах Mikrotik.