FBF Juniper, не хочет работать

Статическая и динамическая, протоколы

Re: FBF Juniper, не хочет работать

Сообщение root » 04 фев 2016, 12:33

Сегодня по одной из задач делал тест, примерно тоже самое и все работает:
Код: Выделить всё
mx80# set routing-options interface-routes rib-group inet rkn-rib
mx80# set routing-options rib-groups rkn-rib import-rib [ inet.0 rkn.inet.0 ]
mx80# set routing-instances rkn instance-type forwarding
mx80# set routing-instances rkn routing-options static route 0.0.0.0/0 next-hop 10.150.7.1
mx80# set firewall family inet filter rkn term all then routing-instance rkn
mx80# set interfaces irb unit 777 family inet filter input rkn
mx80# set interfaces irb unit 777 family inet address 10.10.200.209/30
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: FBF Juniper, не хочет работать

Сообщение Melman » 11 фев 2016, 14:35

Это все странно, в общем у меня есть 3 железки и пару серверов, я перенес схему на реальное железо и получил тот же самый эффект.

Первое прикладываю нормальную схему топологии сети.
Конфиги такие, SW1

Код: Выделить всё
# show protocols bgp     
group downlinks {
    neighbor 192.168.20.2 {
        local-address 192.168.20.1;
        hold-time 20;
        import bgp_import_from_192.168.20.2;
        export bgp_export_to_192.168.20.2;
        peer-as 64515;
    }
}


Код: Выделить всё
# show policy-options policy-statement bgp_import_from_192.168.20.2
term 100 {
    from protocol bgp;
    then accept;
}
term default {
    then reject;
}


Код: Выделить всё
# show policy-options policy-statement bgp_export_to_192.168.20.2     
term 200 {
    from {
        route-filter 0.0.0.0/0 exact;
    }
    then reject;
}
term 100 {
    from protocol [ direct static ];
    then accept;
}
term default {
    then reject;
}


Код: Выделить всё
# show interfaces ge-0/0/2   
unit 0 {
    family inet {
        address 192.168.101.254/24;
    }
}


Код: Выделить всё
# run show route

inet.0: 9 destinations, 11 routes (9 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[BGP/170] 00:37:45, localpref 100
                      AS path: 64515 I, validation-state: unverified
                    > to 192.168.20.2 via ae0.0
192.168.20.0/30    *[Direct/0] 15:11:51
                    > via ae0.0
                    [BGP/170] 00:55:21, localpref 100
                      AS path: 64515 I, validation-state: unverified
                    > to 192.168.20.2 via ae0.0
192.168.20.1/32    *[Local/0] 15:11:51
                      Local via ae0.0
192.168.20.4/30    *[BGP/170] 00:55:21, localpref 100
                      AS path: 64515 I, validation-state: unverified
                    > to 192.168.20.2 via ae0.0
192.168.101.0/24   *[Direct/0] 14:54:03
                    > via ge-0/0/2.0
192.168.101.254/32 *[Local/0] 14:54:18
                      Local via ge-0/0/2.0
192.168.201.0/24   *[BGP/170] 00:55:21, localpref 100
                      AS path: 64515 I, validation-state: unverified
                    > to 192.168.20.2 via ae0.0





CORE: M10i

Код: Выделить всё
run show version
Hostname: M10I
Model: m10i
JUNOS Base OS boot [12.3R6.6]
JUNOS Base OS Software Suite [12.3R6.6]
JUNOS Kernel Software Suite [12.3R6.6]
JUNOS Crypto Software Suite [12.3R6.6]
JUNOS Packet Forwarding Engine Support (M/T/EX Common) [12.3R6.6]
JUNOS Packet Forwarding Engine Support (M7i/M10i) [12.3R6.6]
JUNOS Online Documentation [12.3R6.6]
JUNOS Services AACL Container package [12.3R6.6]
JUNOS Services Application Level Gateways [12.3R6.6]
JUNOS AppId Services [12.3R6.6]
JUNOS Border Gateway Function package [12.3R6.6]
JUNOS Services Captive Portal and Content Delivery Container package [12.3R6.6]
JUNOS Services HTTP Content Management package [12.3R6.6]
JUNOS IDP Services [12.3R6.6]
JUNOS Services LL-PDF Container package [12.3R6.6]
JUNOS Services NAT [12.3R6.6]
JUNOS Services PTSP Container package [12.3R6.6]
JUNOS Services RPM [12.3R6.6]
JUNOS Services Stateful Firewall [12.3R6.6]
JUNOS Voice Services Container package [12.3R6.6]
JUNOS Services Example Container package [12.3R6.6]
JUNOS Services Crypto [12.3R6.6]
JUNOS Services SSL [12.3R6.6]
JUNOS Services IPSec [12.3R6.6]
JUNOS Runtime Software Suite [12.3R6.6]
JUNOS platform Software Suite [12.3R6.6]
JUNOS Routing Software Suite [12.3R6.6]


Код: Выделить всё
show protocols bgp
group uplinks {
    neighbor 192.168.20.1 {
        local-address 192.168.20.2;
        hold-time 20;
        import bgp_import_from_192.168.20.1;
        export bgp_export_to_192.168.20.1;
        peer-as 64513;
    }
}


Код: Выделить всё
show routing-options
interface-routes {
    rib-group inet fbf-group;
}
static {
    route 0.0.0.0/0 {
        discard;
        no-install;
    }
}
rib-groups {
    fbf-group {
        import-rib [ inet.0 sp1-route-table.inet.0 ];
    }
}
router-id 192.168.20.2;
autonomous-system 64515;


Код: Выделить всё
show routing-instances
sp1-route-table {
    instance-type forwarding;
    routing-options {
        static {
            route 0.0.0.0/0 next-hop 192.168.20.5;
        }
    }
}



Код: Выделить всё
show protocols ospf     
export ospf-export-to-area0;
area 0.0.0.0 {
    interface ge-0/0/2.0;
}


Код: Выделить всё
root@M10I# run show route

inet.0: 11 destinations, 13 routes (11 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[Static/5] 00:40:02
                      Discard
192.168.20.0/30    *[Direct/0] 15:15:00
                    > via ae0.0
                    [BGP/170] 00:57:38, localpref 100
                      AS path: 64513 I, validation-state: unverified
                    > to 192.168.20.1 via ae0.0
192.168.20.2/32    *[Local/0] 15:15:03
                      Local via ae0.0
192.168.20.4/30    *[Direct/0] 01:11:12
                    > via ge-0/0/2.0
192.168.20.6/32    *[Local/0] 01:14:37
                      Local via ge-0/0/2.0
192.168.101.0/24   *[BGP/170] 00:57:38, localpref 100
                      AS path: 64513 I, validation-state: unverified
                    > to 192.168.20.1 via ae0.0
192.168.201.0/24   *[Direct/0] 01:06:25
                    > via ge-0/0/3.0
192.168.201.254/32 *[Local/0] 01:06:25
                      Local via ge-0/0/3.0
224.0.0.5/32       *[OSPF/10] 6d 01:10:15, metric 1
                      MultiRecv

sp1-route-table.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[Static/5] 00:14:54
                    > to 192.168.20.5 via ge-0/0/2.0
192.168.20.0/30    *[Direct/0] 00:14:54
                    > via ae0.0
192.168.20.2/32    *[Local/0] 00:14:54
                      Local via ae0.0
192.168.20.4/30    *[Direct/0] 00:14:54
                    > via ge-0/0/2.0
192.168.20.6/32    *[Local/0] 00:14:54
                      Local via ge-0/0/2.0
192.168.201.0/24   *[Direct/0] 00:14:54
                    > via ge-0/0/3.0
192.168.201.254/32 *[Local/0] 00:14:54
                      Local via ge-0/0/3.0



Код: Выделить всё
root@M10I# show firewall
filter classify-customers {
    term sp1-customers {
        from {
            source-address {
                192.168.201.1/32;
            }
        }
        then {
            log;
            routing-instance sp1-route-table;
        }
    }
    term default {
        then accept;
    }
}
filter classify-customers-WAN {
    term sp1-customers {
        from {
            source-address {
                192.168.101.1/32;
            }
        }
        then {
            log;
            routing-instance sp1-route-table;
        }
    }
    term default {
        then accept;
    }
}



SW2, на нем только OSPF, поднятый между ним и M10i

# run show route

inet.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0 *[OSPF/150] 00:41:32, metric 0, tag 0
> to 192.168.20.6 via ge-0/0/2.0
192.168.20.4/30 *[Direct/0] 01:11:26
> via ge-0/0/2.0
192.168.20.5/32 *[Local/0] 01:11:26
Local via ge-0/0/2.0
224.0.0.5/32 *[OSPF/10] 00:51:03, metric 1
MultiRecv



Ок, теперь трасируем с 192.168.201.1 адрес: 192.168.101.1:
Код: Выделить всё
root@test2:~# traceroute 192.168.101.1
traceroute to 192.168.101.1 (192.168.101.1), 30 hops max, 60 byte packets
 1  192.168.201.254 (192.168.201.254)  0.174 ms  0.148 ms  0.194 ms
 2  192.168.20.1 (192.168.20.1)  1.374 ms  1.454 ms  1.479 ms
 3  192.168.101.1 (192.168.101.1)  0.152 ms  0.178 ms  0.162 ms


включаем на M10i правило перенаправления пакетов:
Код: Выделить всё
set interfaces ge-0/0/3 unit 0 family inet filter input classify-customers


смотрим результат:
Код: Выделить всё
# traceroute 192.168.101.1
traceroute to 192.168.101.1 (192.168.101.1), 30 hops max, 60 byte packets
 1  192.168.201.254 (192.168.201.254)  0.221 ms  0.219 ms  0.300 ms
 2  192.168.20.5 (192.168.20.5)  1.871 ms  1.959 ms  1.989 ms
 3  192.168.20.6 (192.168.20.6)  0.259 ms  0.309 ms  0.290 ms
 4  192.168.20.1 (192.168.20.1)  1.188 ms  1.280 ms  1.306 ms
 5  192.168.101.1 (192.168.101.1)  0.238 ms  0.222 ms  0.202 ms


Все работает как часы, то есть для исходящего из нашей сети трафика мы можем менять маршрут направления, но нам надо перенаправить входящий трафик, так что:
deactivate interfaces ge-0/0/3 unit 0 family inet filter input
set interfaces ae0 unit 0 family inet filter input classify-customers-WAN


и смотрим результат:
root@M10I# run clear firewall log

с тестового сервера:
Код: Выделить всё
root@t1:~# ping -c 1 192.168.201.1                                                                                                                                                                                                           
PING 192.168.201.1 (192.168.201.1) 56(84) bytes of data.
64 bytes from 192.168.201.1: icmp_req=1 ttl=62 time=0.231 ms

--- 192.168.201.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.231/0.231/0.231/0.000 ms


Код: Выделить всё
root@M10I# run show firewall log                                                 
Log :
Time      Filter    Action Interface     Protocol        Src Addr                         Dest Addr
13:32:38  pfe       A      ae0.0         ICMP            192.168.101.1                    192.168.201.1


Код: Выделить всё
root@t1:~# traceroute  192.168.201.1                                                                                                                                                                                                         
traceroute to 192.168.201.1 (192.168.201.1), 30 hops max, 60 byte packets
 1  192.168.101.254 (192.168.101.254)  1.068 ms  1.094 ms  1.108 ms
 2  192.168.20.2 (192.168.20.2)  0.240 ms  0.227 ms  0.218 ms
 3  192.168.201.1 (192.168.201.1)  0.173 ms  0.197 ms  0.181 ms


А вот трасса так и не изменилась, трафик так и не ушел на next-hop.

Вроде в этот раз все описал, схемы сделал. К сожалению не совсем хватает времени на все.
Вложения
TestNetwork.jpeg
Melman
новичок
 
Сообщения: 13
Зарегистрирован: 12 янв 2016, 00:11

Re: FBF Juniper, не хочет работать

Сообщение root » 12 фев 2016, 08:12

В данном случае участвует ae ифейс. Для агрегированных линков не все работает, есть ограничения.
Есть возможность, чисто для теста, сделать соединение между SW1 и M10i по физическим интерфейсам ?

Не знаю может влиять или нет, но перетащи фильры firewall`а в секцию family inet, т.к. так конфигурить правильнее:
Код: Выделить всё
# set firewall family inet filter bla-bla-bla...

P.S. За подробное изложение и схему - зачет ! Уважаю тех кто не боится потратить время на схему и подробное описание, считаю что тем самым человек выказывает уважение к тем людям, кто будет это читать.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: FBF Juniper, не хочет работать

Сообщение Melman » 12 фев 2016, 14:18

Код: Выделить всё
root@M10I# set interfaces ge-0/0/0 ?     
Possible completions:
  accounting-profile   Accounting profile name
+ apply-groups         Groups from which to inherit configuration data
+ apply-groups-except  Don't inherit configuration data from these groups
  description          Text description of interface
  disable              Disable this interface
  encapsulation        Physical link-layer encapsulation
  flexible-vlan-tagging  Support for no tagging, or single and double 802.1q VLAN tagging
> gigether-options     Gigabit Ethernet interface-specific options
  gratuitous-arp-reply  Enable gratuitous ARP reply
> hierarchical-scheduler  Enable hierarchical scheduling
> hold-time            Hold time for link up and link down
> layer2-policer       Layer2 policing for interface
  link-mode            Link operational mode
  mac                  Hardware MAC address
  mtu                  Maximum transmit packet size (256..9192)
  native-vlan-id       Virtual LAN identifier for untagged frames (0..4094)
  no-gratuitous-arp-reply  Don't enable gratuitous ARP reply
  no-gratuitous-arp-request  Ignore gratuitous ARP request
  no-per-unit-scheduler  Don't enable subunit queuing on Frame Relay or VLAN IQ interface
  no-traps             Don't enable SNMP notifications on state changes
> optics-options       Optics options
> otn-options          Optical Transmission Network interface-specific options
  passive-monitor-mode  Use interface to tap packets from another router
  per-unit-scheduler   Enable subunit queuing on Frame Relay or VLAN IQ interface
  schedulers           Number of schedulers to allocate for interface
  shared-scheduler     Enabled shared queuing on an IQ2 interface
  stacked-vlan-tagging  Stacked 802.1q VLAN tagging support
> traceoptions         Interface trace options
  traps                Enable SNMP notifications on state changes
> unit                 Logical interface
  vlan-tagging         802.1q VLAN tagging support
  vlan-vci-tagging     CCC for VLAN Q-in-Q and ATM VPI/VCI interworking


к сожалению он не поддерживает накладку filter без unit, в общем попробовал

Код: Выделить всё
root@M10I# show interfaces ge-0/0/0     
unit 0 {
    family inet {
        filter {
            input classify-customers-WAN;
        }
        address 192.168.20.2/30;
    }
}


Код: Выделить всё
root@M10I# run show firewall log       
Log :
Time      Filter    Action Interface     Protocol        Src Addr                         Dest Addr
13:03:06  pfe       A      ge-0/0/0.0    ICMP            192.168.101.1                    192.168.201.1
13:03:05  pfe       A      ge-0/0/0.0    ICMP            192.168.101.1                    192.168.201.1
13:03:05  pfe       A      ge-0/0/0.0    ICMP            192.168.101.1                    192.168.201.1
13:03:04  pfe       A      ge-0/0/0.0    ICMP            192.168.101.1                    192.168.201.1
13:03:04  pfe       A      ge-0/0/0.0    ICMP            192.168.101.1                    192.168.201.1


Код: Выделить всё
root@PC1:~# traceroute  192.168.201.1                                                                                                                                                                                                         
traceroute to 192.168.201.1 (192.168.201.1), 30 hops max, 60 byte packets
 1  192.168.101.254 (192.168.101.254)  1.507 ms  1.611 ms  1.602 ms
 2  192.168.20.2 (192.168.20.2)  0.146 ms  0.206 ms  0.197 ms
 3  192.168.201.1 (192.168.201.1)  0.174 ms  0.188 ms  0.163 ms


В общем разобрал агрегацию, эффект тот же, трафик не уходит в другую таблицу.
Melman
новичок
 
Сообщения: 13
Зарегистрирован: 12 янв 2016, 00:11

Re: FBF Juniper, не хочет работать

Сообщение root » 13 фев 2016, 09:34

Melman писал(а):он не поддерживает накладку filter без unit

ну это ессно, т.к. это заложено в девайсе и мануале по настройке интерфейсов.

Melman писал(а): эффект тот же

Мда.. странно все это. Исходя из конфигов все верно, да и в этом тесте ge-0/0/0 ничем уже не отличается от ge-0/0/3 в предыдущем.
Чую что скорее всего ответ прост, но мы оба его не видим, т.к. ну очень странно, что в одну сторону "да", а в другую сторону нет.

Хорошо, ещё мысль на попробовать:
Измени в classify-customers-WAN с source-address на destination-address 192.168.201.1 и давай посмотрим, попадут ли пакеты под log.

P.S. А так же покажи вывод:
Код: Выделить всё
show arp no-resolv 192.168.20.1

для моего успокоения :)
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: FBF Juniper, не хочет работать

Сообщение Melman » 15 фев 2016, 13:03

Спасибо, в данный момент перенаправление заработало, мне помогли: http://forums.juniper.net/t5/Junos/Juni ... d-p/287376

я конечно не совсем осознал что именно влияет на все это, требуется переварить, но после применения политик фильтрации, таблица машрутизации выглядит так:
Код: Выделить всё
root@M10I# run show route                                                                   

inet.0: 11 destinations, 13 routes (11 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[Static/5] 3d 23:17:08
                      Discard
10.100.0.0/16      *[Direct/0] 1w2d 23:47:19
                    > via fxp0.0
                    [BGP/170] 2d 23:05:05, localpref 100
                      AS path: 64513 I, validation-state: unverified
                    > to 192.168.20.1 via ge-0/0/0.0
10.100.0.10/32     *[Local/0] 1w2d 23:47:19
                      Local via fxp0.0
192.168.20.0/30    *[Direct/0] 2d 23:05:09
                    > via ge-0/0/0.0
                    [BGP/170] 2d 23:05:05, localpref 100
                      AS path: 64513 I, validation-state: unverified
                    > to 192.168.20.1 via ge-0/0/0.0
192.168.20.2/32    *[Local/0] 2d 23:05:13
                      Local via ge-0/0/0.0
192.168.20.4/30    *[Direct/0] 2d 18:51:23
                    > via ge-0/0/2.0
192.168.20.6/32    *[Local/0] 3d 23:51:43
                      Local via ge-0/0/2.0
192.168.101.0/24   *[BGP/170] 2d 23:05:05, localpref 100
                      AS path: 64513 I, validation-state: unverified
                    > to 192.168.20.1 via ge-0/0/0.0
192.168.201.0/24   *[Direct/0] 00:36:08
                    > via ge-0/0/3.0
192.168.201.254/32 *[Local/0] 3d 23:43:31
                      Local via ge-0/0/3.0
224.0.0.5/32       *[OSPF/10] 1w2d 23:47:21, metric 1
                      MultiRecv

sp1-route-table.inet.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[Static/5] 2d 18:51:23
                    > to 192.168.20.5 via ge-0/0/2.0
192.168.20.4/30    *[Direct/0] 2d 18:51:23
                    > via ge-0/0/2.0

[edit]


А вот было:
Код: Выделить всё
sp1-route-table.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[Static/5] 2d 18:47:02
                    > to 192.168.20.5 via ge-0/0/2.0
192.168.20.0/30    *[Direct/0] 2d 23:00:48
                    > via ge-0/0/0.0
192.168.20.2/32    *[Local/0] 2d 23:00:48
                      Local via ge-0/0/0.0
192.168.20.4/30    *[Direct/0] 2d 18:47:02
                    > via ge-0/0/2.0
192.168.20.6/32    *[Local/0] 2d 18:47:02
                      Local via ge-0/0/2.0
192.168.201.0/24   *[Direct/0] 00:31:47
                    > via ge-0/0/3.0
192.168.201.254/32 *[Local/0] 00:31:47
                      Local via ge-0/0/3.0



Мне кажется здесь есть над чем подумать, почему-то с виду стандартная ситуация оказалась не совсем стандартной.
Melman
новичок
 
Сообщения: 13
Зарегистрирован: 12 янв 2016, 00:11

Re: FBF Juniper, не хочет работать

Сообщение root » 16 фев 2016, 08:25

Так там же написали. Процитирую тут:
aarseniev писал(а):Your FBF problem has nothing to do with BGP.
Your FBF does not work because You have a 192.168.201/24 route in Your "sp1-route-table.inet.0" table and when a packet is put through this table, it finds a more specific route with interface ge-0/0/3.0 to exit from:
Код: Выделить всё
sp1-route-table.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[Static/5] 01:04:31
                    > to 192.168.20.5 via ge-0/0/2.0
192.168.20.0/30    *[Direct/0] 01:04:31
                    > via ae0.0
192.168.20.2/32    *[Local/0] 01:04:31
                      Local via ae0.0
192.168.20.4/30    *[Direct/0] 01:04:31
                    > via ge-0/0/2.0
192.168.20.6/32    *[Local/0] 01:04:31
                      Local via ge-0/0/2.0
192.168.201.0/24   *[Direct/0] 01:04:31
                    > via ge-0/0/3.0
192.168.201.254/32 *[Local/0] 01:04:31
                      Local via ge-0/0/3.0


Please add the following to Your M10i config:
Код: Выделить всё
set policy-options policy-statement only-ge002 term 1 from protocol direct
set policy-options policy-statement only-ge002 term 1 from route-filter 192.168.20.4/30 exact
set policy-options policy-statement only-ge002 term 1 then accept
set policy-options policy-statement only-ge002 term 2 then reject
set routing-options rib-groups fbf-group import-policy only-ge002

policy only-ge002 влияет на импорт маршрутов из основной таблицы в sp1-route-table.inet.0, что ты и наблюдаешь после применения фильтра.
Как я и писал выше:
Чую что скорее всего ответ прост, но мы оба его не видим

Так и вышло :)
Ну конечно, все логично ! Маршрут до 192.168.201.0/24 через ge-0/0/3 является more specific маршрутом по отношению к 0.0.0.0/0 через ge-0/0/2.
Вот потому то пакет и уходил через ge-0/0/3, а не через ge-0/0/2. Вот я слЯпой... посыпаю голову пеплом.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Пред.

Вернуться в Маршрутизация / Routing

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4