>[оверквотинг удален]
> Да при чем же здесь внимательность? Давайте оставим иронию?
> ))
> Я сразу заметил, что в двух этих pipe маски src-ip (IP-источники) и
> dst-ip (IP-адресаты). Да и примеров подобных полно в Интернете. Но это
> ведь и логично, если резать отдельно входящий и исходящий трафик.
> Я же говорил о нарезке каждому IP в отдельности
> скорости (не важно, входящую или исходящую). Пусть даже для двух разных
> IP-клиентов каналов одинаковой ширины, т.е. по 2 Мбита/с.
> Или я чего-то недопонимаю? Так я же и просил
> разъяснить саму суть, а не пример с иронией. ))) Я не понимаю, чего вы не понимаете, но это хорошо, что вы "сразу" заметили.
Иначе не спрашивали бы в очередной раз об очевидном.
К тому же, как вы изволили выразиться, "примеров подобных полно в Интернете".
Пример нарезки исходящей скорости был приведён вам лишь чисто для примера. Не более того.
Таблицы в ipfw как раз таки существуют и используются для того, чтобы не городить огород (или зоопарк) с правилами для каждого отдельного ip-адреса.
А если ещё и скорость для ip резать различную, то конфигурационный файл ipfw разрастается и становится большим,
что в свою очередь затрудняет его чтение и понимание.
И для этого уже, в свою очередь, и придумали tablearg
Допустим, у нас есть пачка пользователей, которым мы хотим ограничить скорость, скажем в 2 Мбит/с
Есть ещё группа, им надо 3 Мбит/с, следующим уже необходима скорость в 4 Мбит/с. И так далее.
Это, я надеюсь, вам понятно?
И чтобы не расписывать для каждого отдельного ip-адреса длиннющую портянку с правилами пайпов,
мы всё это хозяйство аккуратно кладём в одну единственную табличку, в которой и укажем, с помощью аргумента к ip-адресу, желаемую нарезку скорости для каждого отдельно взятого ip-адреса.
Это и делается с помощью tablearg
Добавляем в таблицу адреса, в аргументе передаём необходимый пайп для этого адреса.
ipfw table 1 add 192.168.1.2 2
ipfw table 1 add 192.168.21.3 4
ipfw table 1 add 192.168.2.4 3
ipfw table 1 add 192.168.3.5 4
ipfw table 1 add 192.168.1.6 2
ipfw table 1 add 192.168.41.7 3
ipfw table 1 add 192.168.74.2 2
ipfw table 1 add 192.168.25.3 4
ipfw table 1 add 192.168.1.4 3
ipfw table 1 add 192.168.5.5 4
ipfw table 1 add 192.168.69.6 2
ipfw table 1 add 192.168.73.7 3
Одним словом, ip-адреса могут быть совершенно различными, ну то есть абсолютно.
Разумеется, задача по заполнению таблицы, как правило, решается каким-либо биллингом.
Но можно вынести и в отдельный файл.
Определяем нужные нам пайпы.
В них указываем маску, направление и скорость.
src (source, что значит источник)
dst (destination, что значит назначение)
pipe 2 config mask dst-ip 0xffffffff bw 2Mbit/s
pipe 3 config mask dst-ip 0xffffffff bw 3Mbit/s
pipe 4 config mask dst-ip 0xffffffff bw 4Mbit/s
add pipe tablearg all from any to table(1) out xmit ${local_if}
Представляете, если хотя бы для каждого адреса из сети /24 (или всего лишь половины) нужно было бы расписать правила!
Да ещё и пайпы разные.
Почувствуйте разницу!
Видите? Насколько проще и легче для чтения и понимания становится?
Не важно, сколько у нас ip-адресов. Количество правил в ipfw от этого не зависит.
Единственное, нужно прописать нужные пайпы.
А вот маска 0xffffffff (иначе /32) в пайпах и указывает на то, что указанное правило нужно применять к каждому отдельно взятому ip-адресу. То есть каждому по потребностям. Тьфу! Каждому по его скорости. Каждый получит свой кусок пирога.
Пока общей пропускной способности вашего канала хватит. Потом он может треснуть. Если навешаете кучу пользователей.
Если маска будет 0xffffff00 (иначе /24), то будет применено правило для всей этой сети /24
И результат такой нарезки будет совсем другой.
Торрент-качалка у любого пользователя из этой сети и всё. Остальные будут нервно курить и сидеть как на диалапе.
Ну, что ещё теперь не понятно? Вы спрашивайте, спрашивайте, не стесняйтесь!
P.S. Всё то, о чём я написал, это такой секрет, секрет Полишинеля.
Это всё есть в man ipfw