Добрый день!
Настраиваю марштуризатор на базе
Quagga 1.1.1
Debian 9.13На данной системе давно и успешно работает BGP на IPv4.
Пришло время вводить в сети IPv6.
Настроил IPv6 BGP соседство с тем же хостом с которым настроено по IPv4.
Конфигурация Quagga:
interface eth0.1
ipv6 address aaaa:111:1::55/64
router bgp XXXXX
bgp router-id
no bgp default ipv4-unicast
neighbor aaaa:111:1::99 remote-as XXXXX
neighbor aaaa:111:1::99 description Go-To-WORLD
address-family ipv6
network aaaa:111:10::/48
neighbor aaaa:111:1::99 activate
neighbor aaaa:111:1::99 soft-reconfiguration inbound
neighbor aaaa:111:1::99 route-map IPv6-IN in
neighbor aaaa:111:1::99 route-map IPv6-OUT out
exit-address-family
exit
route-map IPv6-IN permit 10
route-map IPv6-OUT permit 10
Удаленный хост aaaa:111:1::99 подключен в внешним каналам связи.
Он получает IPv6 маршруты от апстримов и отдает мне на сервер aaaa:111:1::55/64.
Мой же сервер их также получает:
#show ipv6 bgp neighbors aaaa:111:1::99 received-routes
*> 2001:200:c000::/35
aaaa:111:1::99 100 0 YYYY 6939 7500 23634 i
*> 2001:200:e000::/35
aaaa:111:1::99 100 0 YYYY 6939 2516 7660 7660 7660 i
*> 2001:218::/32 aaaa:111:1::99 100 0 YYYY 1299 2914 i
*> 2001:218:2200::/40
aaaa:111:1::99 100 0 YYYY 1299 2914 18259 i
*> 2001:218:3004::/48
aaaa:111:1::99 100 0 YYYY 1299 2914 20940 20940 i
*> 2001:218:8000::/38
aaaa:111:1::99 100 0 YYYY 1299 2914 i
...
Мир по IPv6 доступен с маршрутизатора:
# traceroute 2001:218:8000::5
traceroute to 2001:218:8000::5 (2001:218:8000::5), 30 hops max, 80 byte packets
1 aaaa:111:1::99 (aaaa:111:1::99) 0.334 ms 0.301 ms 0.272 ms
2 * * *
3 2a02:280:0:200:213:130:30:18 (2a02:280:0:200:213:130:30:18) 10.593 ms 10.611 ms 10.632 ms
4 * * *
5 ffm-bb2-v6.ip.twelve99.net (2001:2034:1:6c::1) 47.302 ms ffm-bb1-v6.ip.twelve99.net (2001:2034:1:6b::1) 45.126 ms 45.102 ms
6 ntt-ic323130-ffm-b5.ip.twelve99-cust.net (2001:2000:3080:12bb::2) 42.716 ms 44.215 ms 42.590 ms
7 ae-2.r20.frnkge13.de.bb.gin.ntt.net (2001:728:0:2000::111) 46.743 ms 45.923 ms 42.240 ms
8 ae-14.r21.londen12.uk.bb.gin.ntt.net (2001:728:0:2000::15d) 56.189 ms 52.158 ms 56.108 ms
9 ae-13.r25.asbnva02.us.bb.gin.ntt.net (2001:418:0:2000::5e) 139.412 ms 137.820 ms 143.542 ms
10 ae-2.r25.lsanca07.us.bb.gin.ntt.net (2001:418:0:2000::1be) 178.196 ms 179.824 ms *
11 ae-12.r31.tokyjp05.jp.bb.gin.ntt.net (2001:218:0:2000::61) 273.880 ms 281.476 ms 294.651 ms
12 ae-2.r22.taiptw01.tw.bb.gin.ntt.net (2001:218:0:2000::d2) 313.556 ms 322.096 ms 308.015 ms
13 ae-6.r02.taiptw01.tw.bb.gin.ntt.net (2001:218:0:2000::4e) 310.145 ms 321.012 ms 313.519 ms
Но для меня непонятным является состояние таблицы маршрутизации:
# show ipv6 route
B>* 2001:200::/32 [200/0] via fe80::65c:6c00:2a8:804b, eth0.2, 00:30:40
B>* 2001:200:900::/40 [200/0] via fe80::65c:6c00:2a8:804b, eth0.2, 00:30:40
B>* 2001:200:c000::/35 [200/0] via fe80::65c:6c00:2a8:804b, eth0.2, 00:30:40
B>* 2001:200:e000::/35 [200/0] via fe80::65c:6c00:2a8:804b, eth0.2, 00:30:40
B>* 2001:218::/32 [200/0] via fe80::65c:6c00:2a8:804b, eth0.2, 00:30:40
# ip -6 route
2001:200:e000::/35 via fe80::65c:6c00:2a8:804b dev eth0.1 proto zebra metric 20 pref medium
2001:200::/32 via fe80::65c:6c00:2a8:804b dev eth0.1 proto zebra metric 20 pref medium
2001:218:2200::/40 via fe80::65c:6c00:2a8:804b dev eth0.1 proto zebra metric 20 pref medium
2001:218:3004::/48 via fe80::65c:6c00:2a8:804b dev eth0.1 proto zebra metric 20 pref medium
# netstat -6 -rn
2001:218::/32 fe80::65c:6c00:2a8:804b UG 20 1 1 eth0.1
2001:240::/32 fe80::65c:6c00:2a8:804b UG 20 0 0 eth0.1
2001:250::/32 fe80::65c:6c00:2a8:804b UG 20 0 0 eth0.1
2001:251::/32 fe80::65c:6c00:2a8:804b UG 20 0 0 eth0.1
Как видите, в качестве next-hop выступает локальный адрес интерфейса fe80::65c:6c00:2a8:804b,
а не адрес BGP соседа (aaaa:111:1::99) от которого получен маршрут.
Маршрутизатор aaaa:111:1::99 отдает маршруты с опцией next-hop self
Пробовал на входящие маршруты маршруты вешать:
route-map IPv6-IN permit 10
set ipv6 next-hop peer-address
Ситуация никак не изменилась.
Как мне побороть эту проблему?
В какую сторону копать?
Спасибо