Aleksandr123456 Posted November 9, 2021 Posted November 9, 2021 (edited) Доброго времени суток! Коллеги, я новичок в работе с Juniper, поэтому прошу не кидать в меня камни. Передо мной стоит задача поднять IPoE сессии в паре с FreeRadius. В наличии ноутбук подключенный в Eltex MES5324 (порт 1/0/1), сам Eltex MES5324 (1/0/24) включен в Juniper (xe-0/1/0) В сторону абонента на Eltex: interface tengigabitethernet1/0/1 switchport access vlan 10 exit В сторону Juniper на Eltex: interface tengigabitethernet1/0/24 spanning-tree disable switchport mode trunk switchport trunk allowed vlan add 10 switchport forbidden default-vlan no ip dhcp information option Model: mx204 Junos: 20.2R3-S2.5 version 20.2R3-S2.5; system { } dynamic-profile-options { versioning; chassis { } } } network-services enhanced-ip; } access-profile Access-Profile-1; } xe-0/1/0 { description Subscriber_access; flexible-vlan-tagging; auto-configure { vlan-ranges { dynamic-profile VLAN-PROFILE-2 { accept dhcp-v4; ranges { any; } } } remove-when-no-subscribers; } encapsulation flexible-ethernet-services; gigether-options { no-flow-control; } unit 10 { description ipoe-client; demux-source inet; vlan-id 10; family inet { unnumbered-address lo0.4; } } access { radius-server { *IP-address* { port 1812; accounting-port 1813; secret "$9$0s5n1crbwgJZj8Xds2ojifTz3CtEcy"; ## SECRET-DATA timeout 10; retry 5; max-outstanding-requests 1500; source-address *IP-address*; } } profile Access-Profile-1 { accounting-order radius; authentication-order radius; domain-name-server { *IP-address*; } address-assignment { pool BRAS_POOL; } radius { authentication-server *IP-address*; accounting-server *IP-address*; options { nas-port-id-delimiter :; calling-station-id-delimiter :; calling-station-id-format { nas-identifier; interface-description; } accounting-session-id-format decimal; revert-interval 60; client-authentication-algorithm round-robin; client-accounting-algorithm direct; coa-dynamic-variable-validation; } } session-options { client-idle-timeout 60; client-session-timeout 1440; } radius-server { *IP-address* { port 1812; accounting-port 1813; secret "$9$wA2JU3nCu0I.Pz69tIRlKM8NdoJG"; ## SECRET-DATA timeout 2; retry 3; max-outstanding-requests 200; source-address *IP-address*; } } accounting { order radius; immediate-update; coa-immediate-update; update-interval 10; statistics volume-time; send-acct-status-on-config-change; } } address-assignment { pool BRAS_POOL { family inet { network 10.20.0.0/20; range R1 { low 10.20.0.10; high 10.20.15.250; } dhcp-attributes { maximum-lease-time 300; grace-period 250; name-server { *IP-address*; *IP-address*; } router { 10.20.0.1; } } } } } report-interface-descriptions; radius-options { request-rate 500; interim-rate 50; } } routing-instances { BORDER { routing-options { router-id *IP-address*; autonomous-system xxxxx ; } protocols { bgp { family inet { unicast; any; } } } instance-type vrf; system { services { dhcp-local-server { pool-match-order { ip-address-first; } authentication { password useripoe; username-include { mac-address; } } group 1 { dynamic-profile IP-DHCP-PROFILE-2; interface xe-0/1/0.10; interface lo0.4; } group 2 { dynamic-profile IP-DHCP-PROFILE-2; interface xe-0/1/0.0; } } } } access { address-assignment { pool BRAS_POOL { family inet { network 10.20.0.0/20; range R1 { low 10.20.0.10; high 10.20.15.250; } dhcp-attributes { maximum-lease-time 300; grace-period 250; name-server { *IP-address*; *IP-address*; } router { 10.20.0.1; } } } } } } access-profile Access-Profile-1; interface xe-0/1/0.10; interface lo0.4; route-distinguisher xxxxx:20; vrf-target { target:20:20; import target:20:20; export target:20:20; } vrf-table-label; dynamic-profiles { IPoE { interfaces { demux0 { unit "$junos-interface-unit" { family inet { demux-source { $junos-subscriber-ip-address; } address 192.168.1.1/24; } } } } } IP-DHCP-PROFILE { routing-instances { "$junos-routing-instance" { interface "$junos-interface-name"; } } interfaces { demux0 { unit "$junos-interface-unit" { demux-options { underlying-interface "$junos-underlying-interface"; } family inet { demux-source { $junos-subscriber-ip-address; } unnumbered-address lo0.4; } } } } } VLAN-PROFILE-2 { routing-instances { "$junos-routing-instance" { interface "$junos-interface-name"; } } interfaces { "$junos-interface-ifd-name" { unit "$junos-interface-unit" { demux-source inet; vlan-id "$junos-vlan-id"; family inet { unnumbered-address lo0.4; } } } } } IP-DHCP-PROFILE-2 { routing-instances { "$junos-routing-instance" { interface "$junos-interface-name"; } } interfaces { demux0 { unit "$junos-interface-unit" { demux-options { underlying-interface "$junos-underlying-interface"; } family inet { demux-source { $junos-subscriber-ip-address; } unnumbered-address lo0.4; } } } } } Сессия никак не поднимается. Пробовал разные динамические профили. Пробовал разные настройки групп в dhcp. Очень переживаю что проблема не в настройке профилей и routing-instance, а в настройке интерфейса который смотрит в сторону абонента. Прошу совета, в какую сторону можно капнуть. з.ы. Я понимаю что сейчас посыпятся предложения разобраться самому на juniper.net, но к сожалению пока не получилось. Edited November 9, 2021 by Aleksandr123456 Вставить ник Quote
GrandPr1de Posted November 9, 2021 Posted November 9, 2021 В 09.11.2021 в 16:19, Aleksandr123456 сказал: auto-configure { vlan-ranges { dynamic-profile VLAN-PROFILE-2 { accept dhcp-v4; ranges { any; вот это очень плохо сочетается с явным созданием юнит 10 В 09.11.2021 в 16:19, Aleksandr123456 сказал: unit 10 { description ipoe-client; demux-source inet; vlan-id 10; family inet { unnumbered-address lo0.4; } } надо оставить что-то одно, либо исключить влан 10 из ренджа в авто-конфигур В 09.11.2021 в 16:19, Aleksandr123456 сказал: system { services { dhcp-local-server { продублировать в глоабале а не только в RI в динамическом профиле вместо unnumbered-address lo0.4 указать unnumbered-address "$junos-loopback-interface" Вставить ник Quote
Aleksandr123456 Posted November 9, 2021 Author Posted November 9, 2021 IP-DHCP-PROFILE-2 { routing-instances { "$junos-routing-instance" { interface "$junos-interface-name"; } } interfaces { demux0 { unit "$junos-interface-unit" { demux-options { underlying-interface "$junos-underlying-interface"; } family inet { demux-source { $junos-subscriber-ip-address; } unnumbered-address "$junos-loopback-interface"; } } } xe-0/1/0 { description "-- subscriber access"; flexible-vlan-tagging; auto-configure { vlan-ranges { dynamic-profile VLAN-PROFILE-2 { accept dhcp-v4; ranges { any; } } } remove-when-no-subscribers; } mtu 2000; encapsulation flexible-ethernet-services; gigether-options { no-flow-control; } services { ssh; telnet; dhcp-local-server { pool-match-order { ip-address-first; } authentication { password useripoe; username-include { mac-address; } } } } Группы же в глобале прописывать не надо? Все равно сессий нет, и мак адресов со стороны Juniper на Eltexе тоже нет... Мне кажется стык как то не так настроен... GrandPr1de спасибо за ответ! Вставить ник Quote
GrandPr1de Posted November 9, 2021 Posted November 9, 2021 В 09.11.2021 в 17:08, Aleksandr123456 сказал: Группы же в глобале прописывать не надо? интерфейсы надо указать Вставить ник Quote
Aleksandr123456 Posted November 10, 2021 Author Posted November 10, 2021 В 10.11.2021 в 01:07, GrandPr1de сказал: интерфейсы надо указать Прописал. Включил логи processes { general-authentication-service { traceoptions { file auth.log size 10m; flag all; } В логе полная тишина при попытке абонента поднять сессию. Подскажите пожалуйста как можно проверить что интерфейс в сторону абонентов правильно сконфигурирован, я правильно понимаю что при использовании dynamic-template, должны подниматься автоматически интерфейсы при появлении запроса? Вставить ник Quote
GrandPr1de Posted November 10, 2021 Posted November 10, 2021 В 10.11.2021 в 09:05, Aleksandr123456 сказал: должны подниматься автоматически интерфейсы при появлении запроса? должны в show subscribers можно смотреть, должен влан создаться Вставить ник Quote
Aleksandr123456 Posted November 10, 2021 Author Posted November 10, 2021 В 10.11.2021 в 14:25, GrandPr1de сказал: должны в show subscribers можно смотреть, должен влан создаться Да, сессии начали появляться Type: VLAN Logical System: default Routing Instance: default Interface: xe-0/1/0.3221225577 Interface type: Dynamic Underlying Interface: xe-0/1/0 Dynamic Profile Name: VLAN-PROFILE-2 Dynamic Profile Version: 2 State: Active Session ID: 106 PFE Flow ID: 147 VLAN Id: 10 Login Time: 2021-11-10 14:53:40 MSK Но только после того как я изменил настройка интерфейса с xe-0/1/0 { description "-- subscriber access"; flexible-vlan-tagging; auto-configure { vlan-ranges { dynamic-profile VLAN-PROFILE-2 { accept dhcp-v4; ranges { any; } } } remove-when-no-subscribers; } mtu 2000; encapsulation flexible-ethernet-services; gigether-options { no-flow-control; } на xe-0/1/0 { description "subscriber access"; flexible-vlan-tagging; auto-configure { vlan-ranges { dynamic-profile VLAN-PROFILE-2 { accept [ any ]; ranges { any ; } } } remove-when-no-subscribers; } mtu 2000; encapsulation flexible-ethernet-services; gigether-options { no-flow-control; } } IP сессия так и не пытается даже подняться. Что я могу упускать? Вставить ник Quote
Aleksandr123456 Posted November 10, 2021 Author Posted November 10, 2021 (edited) Разобрался почему даже сессия не могла стартовать. Проблема была в коммутаторе Eltex. Решил. Разбираюсь дальше. Edited November 10, 2021 by Aleksandr123456 Вставить ник Quote
Aleksandr123456 Posted November 11, 2021 Author Posted November 11, 2021 (edited) Сессия поднялась. Все заработало, но поднимал ее в VRF BORDER где fw, теперь пытаюсь переделать в VRF USERS. И уперся в маршрутизацию. Стоит задача передать маршруты между двумя MX240 в RI USERS и передать его в RI BORDER. В RI USERS есть оба маршрута loopback с обоих машин. Один direct, другой получен по bgp (bgp+mpls+ospf). В RI BORDER есть только маршрут на локальный loopback. Полученный по bgp не передается. Используется вот такая политика. set routing-options rib-groups U->B import-rib USERS.inet.0 set routing-options rib-groups U->B import-rib BORDER.inet.0 set routing-options rib-groups U->B import-policy FROM-USERS set policy-options policy-statement FROM-USERS term 1 from protocol static set policy-options policy-statement FROM-USERS term 1 from protocol direct set policy-options policy-statement FROM-USERS term 1 from protocol bgp set policy-options policy-statement FROM-USERS term 1 then accept set policy-options policy-statement FROM-USERS term 2 then reject set routing-instances USERS routing-options interface-routes rib-group inet U->B set routing-instances USERS routing-options static rib-group U->B show route table USERS хх.хх.3.134/32 *[Direct/0] 00:58:16 > via lo0.3 хх.хх.3.135/32 *[BGP/170] 00:42:53, localpref 100, from 10.165.0.17 AS path: I, validation-state: unverified > to 10.165.0.34 via et-0/0/3.0, label-switched-path ASBR1-BBACC1 ASBR1> show route table BORDER хх.хх.3.134/32 BORDER.inet.0: 868316 destinations, 868316 routes (868316 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both хх.хх.3.134/32 *[Direct/0] 00:54:51 > via lo0.3 ASBR1> show route table BORDER хх.хх.3.135/32 ASBR1> BBACC1> show route advertising-protocol bgp 10.165.0.15 USERS.inet.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * хх.хх.3.135/32 Self 100 I В чем может быть ошибка? Edited November 11, 2021 by Aleksandr123456 Вставить ник Quote
GrandPr1de Posted November 12, 2021 Posted November 12, 2021 В 11.11.2021 в 10:39, Aleksandr123456 сказал: Полученный по bgp не передается потому что между таблиц ты скопировал только интерфейс-роуты и статик внутри RI в протоколе bgp тоже указажи свою риб группу Вставить ник Quote
Aleksandr123456 Posted December 17, 2021 Author Posted December 17, 2021 В 12.11.2021 в 21:16, GrandPr1de сказал: потому что между таблиц ты скопировал только интерфейс-роуты и статик внутри RI в протоколе bgp тоже указажи свою риб группу Спасибо большое. Можно еще вопрос. Поднимаю маршруты из MGMT в USERS и обратно для связности. set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 from protocol static set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 from protocol direct set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 from protocol ospf set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 from protocol local set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 then accept set policy-options policy-statement ROUTE-LEAKE-MGMT term 2 then reject set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 from protocol static set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 from protocol direct set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 from protocol local set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 from protocol ospf set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 then accept set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 2 then reject set routing-options rib-groups M->U import-rib MGMT.inet.0 set routing-options rib-groups M->U import-rib USERS.inet.0 set routing-options rib-groups M->U import-policy ROUTE-LEAKE-MGMT set routing-options rib-groups U->M import-rib USERS.inet.0 set routing-options rib-groups U->M import-rib MGMT.inet.0 set routing-options rib-groups U->M import-policy ROUTE-LEAKE-MGMT_2 set routing-instances MGMT routing-options static rib-group M->U set routing-instances MGMT routing-options interface-routes rib-group inet M->U set routing-instances MGMT protocols ospf rib-groups inet M->U set routing-instances USERS routing-options static rib-group U->M set routing-instances USERS routing-options interface-routes rib-group inet U->M set routing-instances USERS protocols ospf rib-groups inet U->M Как можно сделать так, чтобы из USERS все сети в MGMT были доступны только для одного префикса? Вставить ник Quote
vvertexx Posted December 17, 2021 Posted December 17, 2021 @Aleksandr123456 route leaking только переносит маршруты из одной табл маршрутизации в другую, если надо ограничивать что-то используйте ACL (firewall filter) Вставить ник Quote
Aleksandr123456 Posted December 17, 2021 Author Posted December 17, 2021 В 17.12.2021 в 21:08, vvertexx сказал: @Aleksandr123456 route leaking только переносит маршруты из одной табл маршрутизации в другую, если надо ограничивать что-то используйте ACL (firewall filter) Подскажите при route-leake, куда правильно навешивать ACL чтобы он отработал? Когда увидел что там нет подходящего варианта, создал filter filter vrf_MGMT_firewall { term 1 { from { destination-prefix-list { vrf_MGMT_firewall; } } then accept; } term 2 { then { reject; } } Однако так и не понял, как правильно его применить. Вставить ник Quote
vvertexx Posted December 19, 2021 Posted December 19, 2021 @Aleksandr123456 применять на интерфейсы, откуда идет трафик (по принципу: чем раньше обрежешь - тем лучше, хотя поидее можно и на исходящем) немного оффтоп PS: это один из недостатков route leaking, для обхода в некоторых особых случаях приходится юзать логический (lt) интерфейс для связи разных vrf Вставить ник Quote
Aleksandr123456 Posted December 19, 2021 Author Posted December 19, 2021 В 19.12.2021 в 14:12, vvertexx сказал: @Aleksandr123456 применять на интерфейсы, откуда идет трафик (по принципу: чем раньше обрежешь - тем лучше, хотя поидее можно и на исходящем) немного оффтоп PS: это один из недостатков route leaking, для обхода в некоторых особых случаях приходится юзать логический (lt) интерфейс для связи разных vrf Получается по факту нужно вешать на интерфейсы на которых висит ospf в RI? Вот это новости... В цисках совсем по другому решался этот вопрос... Вставить ник Quote
vvertexx Posted December 19, 2021 Posted December 19, 2021 @Aleksandr123456 насколько помню - на циске тоже в роут-мапе ликинга нельзя вешать ACL, оно только для выбора маршрутов Вставить ник Quote
Aleksandr123456 Posted December 19, 2021 Author Posted December 19, 2021 (edited) В 19.12.2021 в 17:29, vvertexx сказал: @Aleksandr123456 насколько помню - на циске тоже в роут-мапе ликинга нельзя вешать ACL, оно только для выбора маршрутов Вот быстрое решение на циске. route-policy vrf_MGMT if extcommunity rt matches-any (10:10) then pass elseif extcommunity rt matches-any (200:200) and destination in (**.**.**.**/23 le 32, 192.168.4.0/24, **.**.**.**/24) then pass else drop endif end-policy Edited December 19, 2021 by Aleksandr123456 Вставить ник Quote
Aleksandr123456 Posted December 20, 2021 Author Posted December 20, 2021 Навешивание filter на сабы ospf и lo результатов не дало. Используется следующая конфигурация. Может быть в самой policy-options можно изначально зафильтровать сети? set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 from protocol static set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 from protocol direct set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 from protocol ospf set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 from protocol local set policy-options policy-statement ROUTE-LEAKE-MGMT term 1 then accept set policy-options policy-statement ROUTE-LEAKE-MGMT term 2 then reject set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 from protocol static set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 from protocol direct set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 from protocol local set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 from protocol ospf set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 1 then accept set policy-options policy-statement ROUTE-LEAKE-MGMT_2 term 2 then reject set routing-options rib-groups M->U import-rib MGMT.inet.0 set routing-options rib-groups M->U import-rib USERS.inet.0 set routing-options rib-groups M->U import-policy ROUTE-LEAKE-MGMT set routing-options rib-groups U->M import-rib USERS.inet.0 set routing-options rib-groups U->M import-rib MGMT.inet.0 set routing-options rib-groups U->M import-policy ROUTE-LEAKE-MGMT_2 set routing-instances MGMT routing-options static rib-group M->U set routing-instances MGMT routing-options interface-routes rib-group inet M->U set routing-instances MGMT protocols ospf rib-groups inet M->U set routing-instances USERS routing-options static rib-group U->M set routing-instances USERS routing-options interface-routes rib-group inet U->M set routing-instances USERS protocols ospf rib-groups inet U->M Вставить ник Quote
Aleksandr123456 Posted December 20, 2021 Author Posted December 20, 2021 (edited) Переделал route leake с помощью lt set routing-instances MGMT protocols ospf export TEST area 0.0.0.0 interface lt-0/0/0.1 set routing-instances USERS protocols ospf export TEST area 0.0.0.0 interface lt-0/0/0.0 set interfaces lt-0/0/0 unit 0 encapsulation ethernet peer-unit 1 family inet address 10.0.0.1/24 set interfaces lt-0/0/0 unit 1 encapsulation ethernet peer-unit 0 family inet address 10.0.0.2/24 set chassis fpc 0 pic 0 tunnel-services set policy-options policy-statement TEST from protocol ospf set policy-options policy-statement TEST from protocol direct set policy-options policy-statement TEST from protocol static set policy-options policy-statement TEST from protocol access Теперь если смотреть маршруты то все ок, пинги внутри juniper бегают, а вот если попытаться достучаться с любой сети которая в USERS, не пингуется. Ну и с фильтрами тоже самое. Edited December 20, 2021 by Aleksandr123456 Вставить ник Quote
Aleksandr123456 Posted December 21, 2021 Author Posted December 21, 2021 (edited) Подскажите пожалуйста, не могу понять что делаю не так: Обычный интерфейс show configuration interfaces irb.29 family inet { filter { input DENY2; } address 10.168.0.254/24 { vrrp-group 1 { virtual-address 10.168.0.1; priority 150; preempt; accept-data; authentication-key "$9$H.Q31IhSyewYfTznCA"; ## SECRET-DATA track { interface et-0/0/2.29 { priority-cost 50; set firewall filter DENY2 term 1 from destination-prefix-list 13 set firewall filter DENY2 term 1 from source-prefix-list 12 set firewall filter DENY2 term 1 then accept set firewall filter DENY2 term then reject set policy-options prefix-list 12 10.163.3.224/29 set policy-options prefix-list 13 10.168.0.0/24 Навесил фильтр. Я правильно понимаю что если у меня трафик идёт не с 10.163.3.224/29 он должен блочиться? Блокировка не происходит. Edited December 21, 2021 by Aleksandr123456 Вставить ник Quote
Aleksandr123456 Posted January 11, 2022 Author Posted January 11, 2022 Подскажите пожалуйста, как заставить Juniper принимать опцию 82? Вставить ник Quote
orlik Posted January 12, 2022 Posted January 12, 2022 On 1/11/2022 at 8:55 PM, Aleksandr123456 said: Подскажите пожалуйста, как заставить Juniper принимать опцию 82? не надо заставлять, нужно попросить system { services { group group1 { authentication { username-include { option-82 remote-id; } } Вставить ник Quote
Aleksandr123456 Posted January 12, 2022 Author Posted January 12, 2022 В 12.01.2022 в 03:18, orlik сказал: не надо заставлять, нужно попросить system { services { group group1 { authentication { username-include { option-82 remote-id; } } Добрый день. Это конечно сделано. Но не вшивается. Вставить ник Quote
orlik Posted January 12, 2022 Posted January 12, 2022 Может потому-что отсутствуют данные поля в dhcp discover пакете ? Вставить ник Quote
Aleksandr123456 Posted January 12, 2022 Author Posted January 12, 2022 В 12.01.2022 в 11:07, orlik сказал: Может потому-что отсутствуют данные поля в dhcp discover пакете ? Нет, снифаком видно что она вшита, и до стыка с Джунипером доходит. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.