I need help вдругорядь. Ситуация такая, у нашего ТТК нет никакого dhcp6, они выдают префикс и роут через ICMPv6, т.е. router advertisement. Я написал по такому случаю костыль, который после подключения ожидает появления глобального v6 адреса на ppp0, после чего вырезает из него (он, кстати, хоть и не привязан к IPv4, но всё-таки динамический, и если некоторое время не получать IPv6, то префикс меняется, не после каждого переподключения, но, условно говоря, раз в неделю, так что статика отпадает) префиксную часть, формирует путём добавления к ней ::1/64 адрес для br0, на ppp0 вешается тот же адрес, что и сейчас там (полный, выданный от ТТК), но с префиксом /128 (дабы роутить /64 через br0 в локалочку), после чего удаляется роут $PREFIX/64 dev ppp0. В итоге, /64 роутится в локалку, на роутере висит /128, radvd выдаёт /64 же в ту же локалку, всё замечательно.
Но! Через несколько минут роутер получает от ТТК RA и выставляет /64 на ppp0, в результате, получается, что /64 роутится одновременно и через br0, и через ppp0, нихуя не работает, пока не удалишь с ppp0 эту заразу. Как мне запретить роутеру выставлять этот роут? Айпишник v6 он не заменяет после моего костыля, но роут лепит с завидным постоянством, как ты его ни удаляй. Я вижу лишь решения в виде постоянного удаления в цикле со sleep 5, либо же, может быть, поможет удаление самого v6-адреса с ppp0, но не хотелось бы.
@mgfk: Бамп страданиям ipv6-блядка
А, вэйт, добавил metric 1 к роуту на br0, и вроде как помогло. Теперь он приоритетнее аналогичного роута на ppp0. Осталось придумать зачистку всяких накопившихся говен от переподключений.
я, вообще, хотел посоветовать делать accept_ra=0 сразу после того, как начинает работать дефолтный роут. Но, как погляжу ты уже сообразил другой костыль.
Алсо, не понял проблемы из /1 ;)
По поводу очистки:
ip -6 addr flush to 2001:db8::/32 dev br0
грохнуть все адреса входящие в этот префикс с br0
Если я его отключу, то после разрыва коннекта, думаю, надо будет как-то включать. В принципе, там запускается скрипт post-firewall, но костыль вида «включить ra» — «дождаться выдачи адреса» — «выключить ra» будет сложнее нынешнего решения. А вместо флаша я просто распарсил вывод ip -6 r и удалил все, которые не default и не fe80. Напоминаю, префикс не статический, поэтому если он сменится между реконнектами, я просто не удалю все нужные роуты, так что лучше наверняка прибить всё.
> А вместо флаша я просто распарсил вывод ip -6 r и удалил все, которые не default и не fe80.
"не зная про флаш я собрал аналог флаша на коленке из г-на и палок" ок
заложи роутер в ломбард и заторчи
Проблема в /1 отсутствует, просто сделал перед установкой адреса на br0 ещё и добавление роута /64 на br0 с метрикой 1. Дефолтная же — 256, так что при наличии двух одинаковых /64 роутов (на br0 мой костыльный, чтобы в/из локалки пакеты гуляли, на ppp0 — ТТКшный, не нужный мне, т.к. за ppp0 ничего с моим префиксом нет и быть не может) тот, что на br0 будет иметь приоритет. Роутинг-то происходит по адресу назначения, так что по уму роут должен вешаться на бридж, а не на внешний интерфейс.
Ну окей, можно попробовать флашнуть br0 и ppp0, просто не слетят ли при этом link-local роуты?
Таки удаляются и локальные. Это мне точно не нужно.
слетят. ключевой момент в слове "to" и том что после него. тогда не слетят. Это удобный способ чистить все старые адреса и маршруты из такого-то /32, которые у вас могли успеть надобавляться.
Ну что ж, тогда попробую рубануть по префиксу /32, который, вроде как, статичный.
# ip -6 r f to 2a02:530::/32 dev br0
Nothing to flush.
Ржака ппц. И не удаляет ничего, хотя роуты подходящие есть.
фз, я с адресами пробовал — работало
удобно удалять старые 6to4-адреса с локалочного фейса по "to 2002::/16"
С адресами работает. Впрочем, при этом и роуты автоматически грохаются, так что не проблема, в принципе.
Вот так сейчас выглядит мой монстр: http://pastebin.com/2CvTagxr