[SOLVED] ip rule add tos 0x20 table prio1 отвечает RTNETLINK answers: Invalid argument
Собственно, сабж... Не могу понять, что я в ядре не включил...
Зачем это надо:
Два канала в инет. Часть пользователей разводится через один, часть через другой (все предельно просто, разделение производится по ip). На той же машине сквид. Прозрачный. Он тоже запускает тех же пользователей через те же каналы, все сделано было через tcp_outgoing_address и ip rule add from ... table ...
Когда один из каналов ложился, нужно было запускать всех пользователей через другой. Все делалось полностью руками, что вообще-то неправильно.
Недавно переработал /etc/conf.d/net в соответствии с новыми для меня ;) веяниями, запихал туда массивы rules_ethX и скрипты, которые при поднятии-опускании интерфейсов обрабатывают rules. Очень красиво вышло, теперь достаточно сказать /etc/init.d/net.ethX stop, и кроме отключения интерфейса еще и маршруты по умолчанию во всех таблицах, и правила маршрутизации, относящиеся к отключенному интерфейсу, убираются. И все заворачивается в работающий.
Кроме исходящего трафика сквида.
Если ему назначен определенный адрес, с которого он должен отправлять запросы - он или так и делает, или (если интерфейс отключен) ругается что-то вроде Cannot assing requested address. Я все понимаю, но мне-то надо автоматику :(
Извращения с конфигами сквида отвергнуты как некрасивые.
В гугле накопал (читайте доки, они неизменно рулез ;) новую (опять же для меня ;) фишку сквида - tcp_outgoing_tos. А в ip rule add можно написать tos ... - замечательно!
Не совсем замечательно :(
Потому что сабж.
Я (вполне логично, да?) подумал, что что-то не включил в конфиге ядра. Ну да, в Networking support -> Networking options есть такое QoS and/or fair queueing. Было отключено. Включил. Перекомпилировал ядро (под это дело наконец провел обновление системы, все некогда...) Не помогло - то же самое. Внутри этого пункта есть много чего, но вроде не относится к iproute2 никаким боком...
Поиск решения в гугле и на форумах результатов не дал :( может, я искал что-то не то?
"Что я делаю не так?" (C) ;)
Помогите, кто может? Пожалуйста, дайте наводку на решение? Или хотя бы в таком духе: "я написал у себя на системе ip rule add tos ... , у меня все работает, конфиг ядра вот"...
Красивое же решение проблемы двух каналов пропадает :(((
PS. Вечером покопал еще - как ни странно, значения 4 и 8 (reliability & throughput) ip rule add съедает без возражений. Значит, собака порылась в том, как это поле интерпретирует ядро... Еще не совсем solved, но уже ближе к конечной цели.
PPS. В результате не стал разбираться, _почему_ ip rule add tos принимает значения только от 0 до 16. Ubuntu server, кстати, тоже так себя ведет, что ж это за пример такой косой мне попался... Да и не надо там много разных значений... Всего-то два канала. Сделал через 0x04 и 0x08. Итоговая конфигурация заметно упростилась, осталось только прикрутить автоматику, отслеживающую канал...
- Для комментирования войдите или зарегистрируйтесь