Outils pour utilisateurs

Outils du site


reseau:bgp:ebgp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
reseau:bgp:ebgp [2016/09/20 14:24]
alarig
reseau:bgp:ebgp [2016/11/17 20:04] (Version actuelle)
alarig
Ligne 13: Ligne 13:
 log syslog { warning, error, fatal, bug }; log syslog { warning, error, fatal, bug };
  
-# Turn on global debugging of all protocos+# Turn on global debugging of all protocols
 # debug protocols all; # debug protocols all;
  
  
-# Override router ID+# Override router ID and store ASN
 router id 89.234.186.1;​ router id 89.234.186.1;​
 +define myasn = 204092;
  
  
 +#####################​
 +# GENERAL PROTOCOLS #
 +#####################​
 # This pseudo-protocol watches all interface up/down events. # This pseudo-protocol watches all interface up/down events.
-protocol device ​+protocol device
 { {
- scan time 5; # Scan interfaces every 5 seconds+    ​# Scan interfaces every 5 seconds 
 +    scan time 5;
 } }
  
 +# test by glucas - 2016-09-13 for ibgp VPN nh
 +# get ibgp nh
 +protocol direct
 +{
 +    # Restrict network interfaces we work on
 +    interface "​em1";​
 +}
  
 # This pseudo-protocol performs synchronization between BIRD's routing tables and the kernel. # This pseudo-protocol performs synchronization between BIRD's routing tables and the kernel.
-protocol kernel ​+protocol kernel
 { {
- persist;+    # Don't remove routes on BIRD shutdown 
 +    ​persist;
  
- import none;+    ​import none;
  
- # Export to kernel. ​This host must use that IP as source IP to initiate connections with the world +    ​# Export to the kernel. 
- export filter { +    FreeBSD doesn'​t ​support ​"​krt_prefsrc" ​:'( 
- pas support ​sur freebsd ​:'( +    ​export all;
-    ​ #​krt_prefsrc = 89.234.186.1;​ +
-    accept; +
-  };+
 } }
  
  
 # Static routes # Static routes
-protocol static static_grifon_allocations { +# Used to announce our IP allocations and drop traffic for non-allocated IPs 
- import all;+# (if we don't have a more specific route). Without it, traffic for our allocations go out of our AS. 
 +protocol static static_grifon_allocations 
 +
 +    import all;
  
- route 89.234.186.0/​24 unreachable;​+    ​route 89.234.186.0/​24 unreachable;​
 } }
 </​file>​ </​file>​
  
-Ensuite, on définit les filtres d’entrée ​:+Ensuite, on définit les filtres d’entrée. Notons que nous utilisons des templates afin de factoriser le code dans les fonctions de filtrage. 
 +Nous avons un filtre spécifique pour le VPN afin de s’assurer que ce ne soit que des /32 IPv4 qui soient annoncés (pas de route de par défaut ou du /27 réservé aux VPNs), et qu’ils soient bien dans le /25 normalement utilisable.
 <​file>​ <​file>​
-# BGP input filter+###############​ 
 +# BGP FILTERS # 
 +###############​
 function check_import(int peeras; ip nexthop) function check_import(int peeras; ip nexthop)
   prefix set martians;   prefix set martians;
Ligne 60: Ligne 76:
   prefix set our_prefixes;​   prefix set our_prefixes;​
 { {
- martians = [ 10.0.0.0/​8+,​ 100.64.0.0/​10+,​  +    ​martians = [ 10.0.0.0/​8+,​ 100.64.0.0/​10+,​ 
- 127.0.0.0/​8+,​ 169.254.0.0/​16+,​ 172.16.0.0/​12+,​  +        127.0.0.0/​8+,​ 169.254.0.0/​16+,​ 172.16.0.0/​12+,​ 
- 192.0.0.0/​24+,​ 192.0.2.0/​24+,​ 192.168.0.0/​16+,​  +        192.0.0.0/​24+,​ 192.0.2.0/​24+,​ 192.168.0.0/​16+,​ 
- 198.18.0.0/​15+,​ 198.51.100.0/​24+,​ 203.0.113.0/​24+,​  +        198.18.0.0/​15+,​ 198.51.100.0/​24+,​ 203.0.113.0/​24+,​ 
- 224.0.0.0/​4+,​ 240.0.0.0/​4+,​ 255.255.255.255/​32 ];+        224.0.0.0/​4+,​ 240.0.0.0/​4+,​ 255.255.255.255/​32 ];
  
- reserved_asn = [ 0, 64297..131071,​ 4200000000..4294967294,​ 4294967295 ];+    ​reserved_asn = [ 0, 64297..131071,​ 4200000000..4294967294,​ 4294967295 ];
  
- our_prefixes = [ 89.234.186.0/​24+,​ 149.6.72.96/​29+,​ 89.234.141.142/​31+,​  +    ​our_prefixes = [ 89.234.186.0/​24+,​ 149.6.72.96/​29+,​ 89.234.141.142/​31+,​  
- 89.234.186.13/​32,​ 89.234.186.14/​32 ];+                89.234.186.13/​32,​ 89.234.186.14/​32 ];
  
- # Avoid 0.0.0.0/X - default + 0.0.0.0/8 +    ​# Avoid too short and too long prefixes 
- if net.ip = 0.0.0.then return false;+    if (net.len < 8) || (net.len > 24) then return false;
  
- # Avoid too short and too long prefixes +    ​# Avoid 0.0.0.0/​X ​(default route + 0.0.0.0/8) 
- if (net.len < 8) || (net.len > 24) then return false;+    if net.ip = 0.0.0.0 ​then return false;
  
- AS_PATH trop long... max visualise = 54 +    ​Avoid reserved networks 
- if bgp_path.len > 64 then return false;+    if net ~ martians ​then return false;
  
- On echange avec Coco only +    ​Remove our prefixes. Only us can announce them 
- if bgp_path.first != peeras then return false; +    # Remove also our interconnection prefixes. We are directly connected
- if bgp_next_hop != nexthop ​then return false;+    if net ~ our_prefixes ​then return false;
  
- Pas nos prefixes +    ​Check that the next AS is our neighbour'​s. 
- if net ~ our_prefixes ​then return false;+    # Same for next-hop 
 +    if bgp_path.first != peeras then return false; 
 +    ​if bgp_next_hop != nexthop ​then return false;
  
- Avoid reserved networks +    ​AS_PATH too long (max seen in real life = 54) 
- if net ~ martians ​then return false;+    if bgp_path.len > 64 then return false;
  
- On accepte pas si AS_PATH contient ​reserved ​ou private +    ​Don't accept if path contains a reserved ​AS 
-# if bgp_path ~ reserved_asn then return false;+    # Disabled because it removes legit prefixes 
 +    ​# if bgp_path ~ reserved_asn then return false;
  
- return true;+    ​return true;
 } }
  
 +function check_vpn_import() {
 + if ! (net.len = 32 ) then return false;
 + if ! (net ~ [ 89.234.186.0/​25+ ]) then return false;
 +
 + else return true;
 +}
  
 filter bgp_filter_cogent_in filter bgp_filter_cogent_in
 { {
- if (check_import(174,​ 149.6.72.97)) then  +    ​if (check_import(174,​ 149.6.72.97)) then 
-+    
- options (local-prefvirer des routes...) +        Here we can set localpref or remove a prefixfor example 
- accept; + 
-+        accept; 
- else  +    
-+    else 
- reject "​Prefix filtered IN Cogent";​ +    
- }+        reject "​Prefix filtered IN Cogent";​ 
 +    }
 } }
  
 filter bgp_filter_arn_hwhost1_in filter bgp_filter_arn_hwhost1_in
 { {
- if (check_import(60630,​ 89.234.141.142)) then +    ​if (check_import(60630,​ 89.234.141.142)) then 
-+    
- options (local-prefvirer des routes,...)+        Here we can set localpref or remove a prefixfor example
  
- accept; +        ​accept; 
-+    
- else +    else 
-+    
- reject "​Prefix filtered IN ARN hwhost1";​ +        reject "​Prefix filtered IN ARN hwhost1";​ 
- }+    }
 } }
  
 filter bgp_filter_arn_hwhost2_in filter bgp_filter_arn_hwhost2_in
 { {
- if (check_import(60630,​ 89.234.186.13)) then +    ​if (check_import(60630,​ 89.234.186.13)) then 
-+    
- options (local-prefvirer des routes...)+        Here we can set localpref or remove a prefixfor example
  
- accept; +        ​accept; 
-+    
- else +    else 
-+    
- reject "​Prefix filtered IN ARN hwhost2";​ +        reject "​Prefix filtered IN ARN hwhost2";​ 
- }+    } 
 +
 + 
 +# For VPN 
 +filter ibgp_filter_vpn_in { 
 +    if (check_vpn_import()) then accept; 
 +    else reject "​Prefix filtered for iBGP VPN";
 } }
 </​file>​ </​file>​
Ligne 141: Ligne 173:
 Puis les filtres de sortie. Nous remarquons que c’est ici que l’on définit l’AS prepending afin d’influer (un peu) sur le choix des routes. L’AS prepending ne fonctionne pas forcément car il est de poids plus faible que le localpref, donc si un autre AS favorise interoute par rapport à cogent, il passera par interoute même si l’AS path est plus long. Puis les filtres de sortie. Nous remarquons que c’est ici que l’on définit l’AS prepending afin d’influer (un peu) sur le choix des routes. L’AS prepending ne fonctionne pas forcément car il est de poids plus faible que le localpref, donc si un autre AS favorise interoute par rapport à cogent, il passera par interoute même si l’AS path est plus long.
 <​file>​ <​file>​
-filter ​bgp_filter_arn_out+# For ARN 
 +filter ​bgp_filter_backup_upstream_out
 { {
- if (proto = "​static_grifon_allocations"​) then +    # Export only our IP allocations 
-+    ​if (proto = "​static_grifon_allocations"​) then 
-     ​options genre community, asprepending,​... +    
-     bgp_path.prepend(204092);​ +        Here you can set community ​or do AS-prepending
-     bgp_path.prepend(204092);​+
  
-     ​accept; +        # AS-prepending 
-+        bgp_path.prepend(204092);​ 
- else +        bgp_path.prepend(204092);​ 
-+ 
-     ​reject "​Prefix filtered OUT ARN"; +        ​accept; 
- }+    
 +    else 
 +    
 +        reject "​Prefix filtered OUT backup upstream"; 
 +    }
 } }
 </​file>​ </​file>​
Ligne 161: Ligne 197:
 Chaque peer est sous la même forme : « protocol bgp $peer { options; } ». Si vous ne nommez pas vos peers ($peer), il va y avoir des conflits entre eux. Chaque peer est sous la même forme : « protocol bgp $peer { options; } ». Si vous ne nommez pas vos peers ($peer), il va y avoir des conflits entre eux.
 <​file>​ <​file>​
-# eBGP with upstreams +##################​ 
-protocol ​bgp bgp_cogent ​+# eBGP NEIGHBORS # 
 +#   ​UPSTREAMS ​   # 
 +##################​ 
 +template ​bgp UPSTREAM
 { {
- description "​Cogent";​ +    ​local as myasn;
-  +
- local as 204092; +
-  +
- neighbor 149.6.72.97 as 174; +
- source address 149.6.72.98;+
  
- Import all from Cogent except bogons and other stuff +    ​Be able to see filtered routes ​with "sh route filtered" command 
- import keep filtered; # Voir les routes ​filtrees avec sh route filtered +    import ​keep filtered;
- import ​filter bgp_filter_cogent_in; +
- receive limit 600000 action block; # Au dela de 600000 prefixes, on refuse+
  
- Export to Cogent our IP allocation only +    ​Protect ourselves from massive routes leaks 
- export where proto = "​static_grifon_allocations";​ +    ​receive ​limit 620000 ​action ​block;
- export ​limit action ​disable; +
-}+
  
 +    # Announce only our IP allocations
 +    export where proto = "​static_grifon_allocations";​
 +    export limit 1 action disable;
 +}
  
-protocol ​bgp bgp_arn_hwhost1+template ​bgp BACKUP_UPSTREAM from UPSTREAM
 { {
- description "ARN-hwhost1"​;+    # Do AS-prepending here 
 +    export filter bgp_filter_backup_upstream_out;
  
- local as 204092;+    # We forward traffic to ARN when we have no other choice. 
 +    # BIRD preference is like Cisco weight. 
 +    # With several routers, we will need to use local_pref instead. 
 +    preference 50; 
 +}
  
- neighbor 89.234.141.142 as 60630; +protocol bgp bgp_cogent from UPSTREAM 
- source address 89.234.141.143           # What local address we use for the TCP connection+{ 
 +    ​description "​Cogent"​;
  
- import keep filtered                  # Voir les routes filtrees avec sh route filtered +    neighbor 149.6.72.97 as 174;
- import filter bgp_filter_arn_hwhost1_in;​ +
- receive limit 600000 action block; ​          # Au dela de 600000 prefixes, on refuse+
  
- export filter bgp_filter_arn_out;​ +    # Local address we use to establish the BGP session 
- export limit 1 action disable;+    ​source address 149.6.72.98;
  
- On passe par là en dernier secours. Attention quand plusieurs routeurs : utiliser localpref à la place +    ​We cannot use TCP-MD5 auth because we use a poorly designed OS ;) 
- preference 50;+    # password=''​ 
 + 
 +    # Accept all routes from Cogent except bogons and other bad stuff 
 +    import filter bgp_filter_cogent_in;
 } }
  
- +protocol bgp bgp_arn_hwhost1 from BACKUP_UPSTREAM
-protocol bgp bgp_arn_hwhost2+
 { {
- description "ARN-hwhost2";+    ​description "ARN-hwhost1";
  
- local ​as 204092;+    neighbor 89.234.141.142 ​as 60630; 
 +    source address 89.234.141.143;
  
- neighbor 89.234.186.13 as 60630+    import filter bgp_filter_arn_hwhost1_in
- source address 89.234.186.14; ​           # What local address we use for the TCP connection+}
  
- import keep filtered; ​                  # Voir les routes filtrees avec sh route filtered +protocol bgp bgp_arn_hwhost2 from BACKUP_UPSTREAM 
- import filter bgp_filter_arn_hwhost2_in;​ +{ 
- receive limit 600000 action block          # Au dela de 600000 prefixes, on refuse+    ​description "​ARN-hwhost2"​;
  
- export filter bgp_filter_arn_out+    neighbor 89.234.186.13 as 60630
- export limit 1 action disable;+    ​source address 89.234.186.14;
  
- # On passe par là en dernier secours. Attention quand plusieurs routeurs : utiliser localpref à la place +    import filter bgp_filter_arn_hwhost2_in;
- preference 50;+
 } }
 </​file>​ </​file>​
 +
 +Nous avons un peer spécifique pour le VPN où nous présisons un adresse source sidd
 +
 ===== IPv6 ===== ===== IPv6 =====
  
Ligne 272: Ligne 315:
 Ensuite, on définit les filtres d’entrée : Ensuite, on définit les filtres d’entrée :
 <​file>​ <​file>​
 +###############​
 +# BGP FILTERS #
 +###############​
 function check_import(int peeras; ip nexthop) function check_import(int peeras; ip nexthop)
   prefix set martians;   prefix set martians;
Ligne 277: Ligne 323:
   prefix set our_prefixes;​   prefix set our_prefixes;​
 { {
-    # 2001::/​23 ​contient, par exemple ​2001:​4:​112::/​48, ​dedie a AS112, il nous faut +    # 2001::/​23 ​contains for example ​2001:​4:​112::/​48, ​belonging to AS112 
-    # donc on filtre pas more spec +    # so we mustn'​t filter ​more specific 
-    # 3FFE::/16 et 5F00::/8 = anciennement ​6bone (test IPv6) +    # 3FFE::/16 et 5F00::/8 = formerly ​6bone (IPv6 tests
-    martians = [ ::1/128, ::/128, ::​ffff:​0:​0/​96+,​ 100::/64+,  +    martians = [ ::1/128, ::/128, ::​ffff:​0:​0/​96+,​ 100::/​64+,​ 
-        2001:​db8::/​32+,​ 2001::/23, 2001:​2::/​48+,​ +    2001:​db8::/​32+,​ 2001::/23, 2001:​2::/​48+,​ 
-        2001:​10::/​28+,​ 2002::/17+, fc00::/7, fe80::/10, ff00::/8+,  +    2001:​10::/​28+,​ 2002::/17+, fc00::/7, fe80::/10, ff00::/​8+,​ 
-        3FFE::/16+, 5F00::/8+ ];+    3FFE::/16+, 5F00::/8+ ];
  
     reserved_asn = [ 0, 64297..131071,​ 4200000000..4294967294,​ 4294967295 ];     reserved_asn = [ 0, 64297..131071,​ 4200000000..4294967294,​ 4294967295 ];
Ligne 289: Ligne 335:
     our_prefixes = [ 2a00:​5884::/​32+,​ 2001:​978:​2:​4e::​5:​0/​112+,​ 2001:​470:​11:​cf::/​64+,​     our_prefixes = [ 2a00:​5884::/​32+,​ 2001:​978:​2:​4e::​5:​0/​112+,​ 2001:​470:​11:​cf::/​64+,​
         2a00:​5881:​8100:​ff00::/​112+,​ 2a00:​5884:​ff::/​112+ ];         2a00:​5881:​8100:​ff00::/​112+,​ 2a00:​5884:​ff::/​112+ ];
- 
-    # default 
-    if net = ::/0 then return false; 
  
     # Avoid too short and too long prefixes     # Avoid too short and too long prefixes
     if (net.len < 16) || (net.len > 48) then return false;     if (net.len < 16) || (net.len > 48) then return false;
  
-    # AS_PATH trop long... max visualise = 54 +    # Remove default route 
-    if bgp_path.len > 64 then return false;+    if net = ::/0 then return false;
  
-    # On echange avec Coco only +    # Avoid reserved networks 
-    if bgp_path.first != peeras then return false; +    if net ~ martians ​then return false;
-    if bgp_next_hop != nexthop ​then return false;+
  
-    # Pas nos prefixes+    # Avoid bogons. IANA didn't allocate outside of 2000::/3 
 +    # but there are already announces there 
 +    if ! (net.ip ~ 2000::/3) then return false; 
 + 
 +    # Remove our prefixes. Only us can announce them 
 +    # Remove our interconnection prefixes. We are directly connected
     if net ~ our_prefixes then return false;     if net ~ our_prefixes then return false;
  
-    # Avoid RFC1918 networks +    # Check that the next AS is our neighbour'​s. 
-    if net ~ martians ​then return false;+    # Same for next-hop 
 +    if bgp_path.first != peeras then return false; 
 +    if bgp_next_hop != nexthop ​then return false;
  
-    # IANA a pas alloue autre que dans 2000::/3 +    # AS_PATH too long (max seen in real life = 54) 
-    # mais ya deja des blaireaux qui annoncent en dehors :- +    if bgp_path.len > 64 then return false;
-    if ! (net.ip ~ 2000::/​3) ​then return false;+
  
-    # On accepte pas si AS_PATH contient ​reserved ​ou private +    # Don't accept if path contains a reserved ​AS 
-#    if bgp_path ~ reserved_asn then return false;+    Disabled because it removes legit prefixes 
 +    if bgp_path ~ reserved_asn then return false;
  
     return true;     return true;
 } }
- 
  
 filter bgp_filter_cogent_in filter bgp_filter_cogent_in
Ligne 324: Ligne 372:
     if (check_import(174,​ 2001:​978:​2:​4e::​5:​1)) then     if (check_import(174,​ 2001:​978:​2:​4e::​5:​1)) then
     {     {
-            ​options genre localpref, ​drop de route,... +        ​Here you can set localpref ​or remove a prefixfor example 
-            accept;+ 
 +        accept;
     }     }
     else     else
     {     {
-            ​reject "​Prefix filtered IN Cogent";​+        ​reject "​Prefix filtered IN Cogent";​
     }     }
 } }
- 
  
 filter bgp_filter_hurricane_electric_in filter bgp_filter_hurricane_electric_in
Ligne 338: Ligne 386:
     if (check_import(6939,​ 2001:​470:​11:​cf::​1)) then     if (check_import(6939,​ 2001:​470:​11:​cf::​1)) then
     {     {
-        # options genre localpref, ​drop de route,... +        # Here you can set localpref ​or remove a prefixfor example 
-        # bgp_local_pref = 90;+
         accept;         accept;
     }     }
Ligne 352: Ligne 400:
     if (check_import(60630,​ 2a00:​5881:​8100:​ff00::​142)) then     if (check_import(60630,​ 2a00:​5881:​8100:​ff00::​142)) then
     {     {
-        # options genre localpref, ​drop de route,...+        # Here you can set localpref ​or remove a prefixfor example 
         accept;         accept;
     }     }
Ligne 365: Ligne 414:
     if (check_import(60630,​ 2a00:​5884:​ff::​13)) then     if (check_import(60630,​ 2a00:​5884:​ff::​13)) then
     {     {
-        # options genre localpref, ​drop de route,...+        # Here you can set localpref ​or remove a prefixfor example 
         accept;         accept;
     }     }
Ligne 373: Ligne 423:
     }     }
 } }
-</​file>​ 
  
-Puis les filtres de sortie. +For HE and AND 
-<​file>​ +filter ​bgp_filter_backup_upstream_out
-"​_ou"​ means "​out"​ but symbol too long for BIRD +
-filter ​bgp_filter_hurricane_electric_ou+
 { {
 +    # Export only our IP allocations
     if (proto = "​static_grifon_allocations"​) then     if (proto = "​static_grifon_allocations"​) then
     {     {
-        # options genre community, asprepending,​... +        # Here you can set community ​or do AS-prepending
-        bgp_path.prepend(204092);​ +
-        bgp_path.prepend(204092);​+
  
-        ​accept; +        # AS-prepending
-    } +
-    else +
-    { +
-        reject "​Prefix filtered OUT HE"; +
-    } +
-+
- +
-filter bgp_filter_arn_out +
-+
-    if (proto = "​static_grifon_allocations"​) then +
-    { +
-        ​options genre community, asprepending,​...+
         bgp_path.prepend(204092);​         bgp_path.prepend(204092);​
         bgp_path.prepend(204092);​         bgp_path.prepend(204092);​
 +        ​
         accept;         accept;
     }     }
     else     else
     {     {
-        reject "​Prefix filtered OUT ARN";+        reject "​Prefix filtered OUT backup upstream";
     }     }
-}+
 </​file>​ </​file>​
  
 Et pour finir, nos peers BGP. Et pour finir, nos peers BGP.
 <​file>​ <​file>​
-# eBGP with upstreams +##################​ 
-protocol ​bgp bgp_cogent ​+# eBGP NEIGHBORS # 
 +#   ​UPSTREAMS ​   # 
 +##################​ 
 +template ​bgp UPSTREAM
 { {
-    ​description "​Cogent"​;+    ​local as myasn;
  
-    ​local as 204092;+    ​# Be able to see filtered routes with "sh route filtered"​ command 
 +    import keep filtered;
  
-    ​neighbor 2001:​978:​2:​4e::​5:​1 as 174;  +    # Protect ourselves ​from massive ​routes ​leaks 
-    source address 2001:​978:​2:​4e::​5:​2;​ +    receive limit 50000 action block;
- +
-    ​Import all from Cogent except bogons and other stuff +
-    import keep filtered; ​               # Voir les routes ​filtres avec sh route filtered ​    +
-    import filter bgp_filter_cogent_in;​ +
-    receive limit 50000 action block; ​       # Au dela de 50000 prefixes, on refuse+
  
-    # Export to Cogent ​our IP allocation only+    # Announce only our IP allocations
     export where proto = "​static_grifon_allocations";​     export where proto = "​static_grifon_allocations";​
     export limit 1 action disable;     export limit 1 action disable;
 } }
  
-protocol ​bgp bgp_hurricane_electric ​+template ​bgp BACKUP_UPSTREAM from UPSTREAM
 { {
- description "​Hurricane_Electric"​;+    # AS-prepending + export only ARN's IP allocations 
 +    export filter bgp_filter_backup_upstream_out;
  
- local as 204092;+    # We forward traffic to ARN when we have no other choice. 
 +    # BIRD preference is like Cisco weight. 
 +    # With several routers, we will need to use local_pref instead. 
 +    preference 50; 
 +}
  
- neighbor 2001:​470:​11:​cf::​1 as 6939; +protocol bgp bgp_cogent from UPSTREAM 
- source address 2001:​470:​11:​cf::​2       # What local address we use for the TCP connection+{ 
 +    ​description "​Cogent"​;
  
- # Import all from HE except bogons and other stuff +    neighbor 2001:​978:​2:​4e::​5:​1 as 174;
- import keep filtered                          # Voir les routes filtres avec sh route filtered ​    +
- import filter bgp_filter_hurricane_electric_in;​ +
- receive limit 50000 action block; ​              # Au dela de 50000 prefixes, on refuse+
  
- Export ​to HE our IP allocation only +    ​Local address we use to establish the BGP session 
- export filter bgp_filter_hurricane_electric_ou;​ # "​_ou"​ means "​out"​ but symbol too long for BIRD +    ​source address 2001:​978:​2:​4e::​5:​2;
- export limit 1 action disable;+
  
- On passe par là en dernier secours. Attention quand plusieurs routeurs : utiliser localpref à la place +    ​We cannot use TCP-MD5 auth because we use a poorly designed OS ;) 
- preference 50;+    # password=''​ 
 + 
 +    # Accept all routes from Cogent except bogons and other bad stuff 
 +    import filter bgp_filter_cogent_in;
 } }
  
-protocol bgp bgp_arn_hwhost1+protocol bgp bgp_hurricane_electric from BACKUP_UPSTREAM
 { {
-    description "ARN-hwhost1";+    description "Hurricane_Electric";
  
-    ​local as 204092; +    neighbor ​2001:470:11:cf::as 6939
- +    source address ​2001:470:11:cf::2;
-    ​neighbor ​2a00:5881:8100:ff00::142 as 60630+
-    source address ​2a00:5881:8100:ff00::143   # What local address we use for the TCP connection+
  
-    ​import keep filtered; ​                  # Voir les routes filtrees avec sh route filtered +    import filter ​bgp_filter_hurricane_electric_in;
-    ​import filter ​bgp_filter_arn_hwhost1_in;​ +
-    receive limit 50000 action block; ​          # Au dela de 650000 prefixes, on refuse +
- +
-    export filter bgp_filter_arn_out;​ +
-    export limit 1 action disable; +
- +
-    # On passe par là en dernier secours. Attention quand plusieurs routeurs : utiliser localpref à la place +
-    preference 50;+
 } }
  
-protocol bgp bgp_arn_hwhost2+protocol bgp bgp_arn_hwhost1 from BACKUP_UPSTREAM
 { {
- description "ARN-hwhost2";+    ​description "ARN-hwhost1";
  
- local ​as 204092;+    neighbor 2a00:​5881:​8100:​ff00::​142 ​as 60630; 
 +    source address 2a00:​5881:​8100:​ff00::​143;
  
- neighbor 2a00:​5884:​ff::​13 as 60630+    import filter bgp_filter_arn_hwhost1_in
- source address 2a00:​5884:​ff::​14; ​   # What local address we use for the TCP connection+}
  
- import keep filtered; ​                  # Voir les routes filtrees avec sh route filtered +protocol bgp bgp_arn_hwhost2 from BACKUP_UPSTREAM 
- import filter bgp_filter_arn_hwhost2_in;​ +{ 
- receive limit 50000 action block; ​          # Au dela de 650000 prefixes, on refuse +    ​description "​ARN-hwhost2"​;
- +
- export filter bgp_filter_arn_out;​ +
- export limit 1 action disable;+
  
- # On passe par là en dernier secours. Attention quand plusieurs routeurs ​utiliser localpref à la place +    neighbor 2a00:5884:ff::13 as 60630; 
- preference 50;+    ​source address 2a00:​5884:​ff::​14;
  
- # est-ce que ça corrige le pb de mauvais next-hop ? NON +    import filter bgp_filter_arn_hwhost2_in;
- #direct;+
 } }
 </​file>​ </​file>​
reseau/bgp/ebgp.txt · Dernière modification: 2016/11/17 20:04 par alarig