FR: Метрика маршрута для Delegate Prefixes

IPoE related questions
Post Reply
taf_321
Posts: 19
Joined: 10 Sep 2015, 05:25

FR: Метрика маршрута для Delegate Prefixes

Post by taf_321 »

Добрый день!

Можно ли добавить настраиваемый параметр, в котором можно было бы задавать метрику для маршрутов, по которым доступны Delegate Prefixes? Суть проблемы: у нас RADIUS отдает атрибуты Framed-IPv6-Prefix и Delegated-IPv6-Prefix с одинаковым содержимым. Как результат на БРАСе имеем такую картину:

Code: Select all

6031: ipoe3064.1000@ipoe3064: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1480 qdisc noqueue state UP group default qlen 1000
    link/ether 00:1b:21:bc:ef:46 brd ff:ff:ff:ff:ff:ff
    inet 100.64.0.1 peer 100.64.4.68/32 scope global ipoe3064.1000
       valid_lft forever preferred_lft forever
    inet6 2a0e:XXXX:1:1249:21b:21ff:febc:ef46/64 scope global nodad 
       valid_lft forever preferred_lft forever
    inet6 fe80::21b:21ff:febc:ef46/64 scope link 
       valid_lft forever preferred_lft forever
И маршруты:

Code: Select all

2a0e:XXXX:1:1249::/64 dev ipoe3064.1000 proto kernel metric 256 pref medium
2a0e:XXXX:1:1249::/64 via fe80::3ef8:8ff:fe9a:69d9 dev ipoe3064.1000 metric 1024 pref medium
fe80::/64 dev ipoe3064 proto kernel metric 256 pref medium
fe80::/64 dev ipoe3064.1000 proto kernel metric 256 pref medium
При таком раскладе все, что находится за fe80::3ef8:8ff:fe9a:69d9 по v6 недоступно.

После такого патча:

Code: Select all

diff --git a/accel-pppd/ipv6/dhcpv6.c b/accel-pppd/ipv6/dhcpv6.c
index fc6487b..908b3bf 100644
--- a/accel-pppd/ipv6/dhcpv6.c
+++ b/accel-pppd/ipv6/dhcpv6.c
@@ -178,7 +178,7 @@ static void insert_dp_routes(struct ap_session *ses, struct dhcpv6_pd *pd, struc
                addr = NULL;

        list_for_each_entry(p, &ses->ipv6_dp->prefix_list, entry) {
-               if (ip6route_add(ses->ifindex, &p->addr, p->prefix_len, addr, 0, 0)) {
+               if (ip6route_add(ses->ifindex, &p->addr, p->prefix_len, addr, 0, 128)) {
                        err = errno;
                        inet_ntop(AF_INET6, &p->addr, str1, sizeof(str1));
                        if (addr)
маршруты к делегированным префиксам стали создаваться с метрикой 128 и v6 наконец-то заработал. Было бы удобно задавать в конфиге значение метрики, и если она не указана, то использовать значение по-умолчанию. Как это реализовано с параметром proto.

И еще, а это правильно, когда для не-ppp интерфейса происходит вызов скрипта /etc/ppp/ip-up, прописанного в секции [pppd-compat] ?
Post Reply