From 7c99c987922ca9dcd5565b11058d524a07f1ebe8 Mon Sep 17 00:00:00 2001 From: Marek Isalski Date: Tue, 14 May 2019 07:42:33 +0100 Subject: [PATCH] making prefix filters programmatically --- bgpq3-linux-amd64 | Bin 0 -> 155632 bytes hphr.sls | 7 + make-routes | 19 ++ top.sls | 1 + vyos.conf.j2 | 437 +++++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 460 insertions(+), 4 deletions(-) create mode 100755 bgpq3-linux-amd64 create mode 100755 make-routes diff --git a/bgpq3-linux-amd64 b/bgpq3-linux-amd64 new file mode 100755 index 0000000000000000000000000000000000000000..d92e5f2452db5ff9c34d7da99d6343de85ea6e4f GIT binary patch literal 155632 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 ahBRIyt6M4R0`T;w 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 routes/auto-AS-FAELIX.json4 +./bgpq3-linux-amd64 -A -6 -j AS-FAELIX | sed 's_\\/_/_g' > routes/auto-AS-FAELIX.json6 +./bgpq3-linux-amd64 -A -4 -j RS-AS41495-UK | sed 's_\\/_/_g' > routes/auto-AS41495-UK.json4 +./bgpq3-linux-amd64 -A -6 -j RS-AS41495-UK | sed 's_\\/_/_g' > routes/auto-AS41495-UK.json6 +./bgpq3-linux-amd64 -A -4 -j RS-AS41495-CH | sed 's_\\/_/_g' > routes/auto-AS41495-CH.json4 +./bgpq3-linux-amd64 -A -6 -j RS-AS41495-CH | sed 's_\\/_/_g' > routes/auto-AS41495-CH.json6 +./bgpq3-linux-amd64 -A -4 -j RS-AS41495-TEST | sed 's_\\/_/_g' > routes/TEST-EQUINIXIX-OUT.json4 +./bgpq3-linux-amd64 -A -6 -j RS-AS41495-TEST | sed 's_\\/_/_g' > routes/TEST-EQUINIXIX-OUT.json6 + +./bgpq3-linux-amd64 -A -4 -j AS-APPLE | sed 's_\\/_/_g' > routes/auto-AS-APPLE.json4 +./bgpq3-linux-amd64 -A -6 -j AS-APPLE | sed 's_\\/_/_g' > routes/auto-AS-APPLE.json6 +./bgpq3-linux-amd64 -A -4 -j AS-CLOUDFLARE | sed 's_\\/_/_g' > routes/auto-AS-CLOUDFLARE.json4 +./bgpq3-linux-amd64 -A -6 -j AS-CLOUDFLARE | sed 's_\\/_/_g' > routes/auto-AS-CLOUDFLARE.json6 +./bgpq3-linux-amd64 -A -4 -j AS-EXA | sed 's_\\/_/_g' > routes/auto-AS-EXA.json4 +./bgpq3-linux-amd64 -A -6 -j AS-EXA | sed 's_\\/_/_g' > routes/auto-AS-EXA.json6 +./bgpq3-linux-amd64 -A -4 -j AS-MICROSOFT | sed 's_\\/_/_g' > routes/auto-AS-MICROSOFT.json4 +./bgpq3-linux-amd64 -A -6 -j AS-MICROSOFT | sed 's_\\/_/_g' > routes/auto-AS-MICROSOFT.json6 diff --git a/top.sls b/top.sls index 3d7ef0c..0601c89 100644 --- a/top.sls +++ b/top.sls @@ -2,3 +2,4 @@ hphr: hphr: - match: nodegroup - hphr +# - test diff --git a/vyos.conf.j2 b/vyos.conf.j2 index 87ff6f1..9d1b47a 100644 --- a/vyos.conf.j2 +++ b/vyos.conf.j2 @@ -102,6 +102,15 @@ interfaces { protocols { + /* -=-=-=-=-=-=-=-=-=-=-=-=-=- RPKI -=-=-=-=-=-=-=-=-=-=-=-=-=- */ + + rpki { + cache routinator { + address 185.134.197.5 + port 3323 + } + } + /* -=-=-=-=-=-=-=-=-=-=-=-=-=- OSPF -=-=-=-=-=-=-=-=-=-=-=-=-=- */ ospf { @@ -255,28 +264,447 @@ protocols { /* -=-=-=-=-=-=-=-=-=-=-=-=-=- POLICY -=-=-=-=-=-=-=-=-=-=-=-=-=- */ policy { - prefix-list TEST-EQUINIXIX-OUT { + + prefix-list static-NO-IPv4 { + rule 1 { + prefix 0.0.0.0/0 + le 32 + action deny + } + } + + prefix-list static-ALL-IPv4 { + rule 1 { + prefix 0.0.0.0/0 + le 32 + action permit + } + } + + prefix-list static-DEFAULT-IPv4 { rule 1 { + prefix 0.0.0.0/0 action permit - prefix 46.227.204.0/24 } rule 2 { + prefix 0.0.0.0/0 + le 32 + action deny + } + } + + prefix-list static-DFZ-IPv4 { + rule 100 { + prefix 192.168.0.0/16 + description "RFC1918" + le 32 + action deny + } + rule 101 { + prefix 172.16.0.0/12 + description "RFC1918" + le 32 + action deny + } + rule 102 { + prefix 10.0.0.0/8 + description "RFC1918" + le 32 + action deny + } + rule 103 { + prefix 169.254.0.0/16 + description "link-local" + le 32 + action deny + } + rule 104 { + prefix 100.64.0.0/10 + description "CGNAT" + le 32 + action deny + } + rule 105 { + prefix 127.0.0.0/8 + description "loopback" + le 32 + action deny + } + rule 106 { + prefix 192.0.0.0/24 + description "IETF protocol assignments" + le 32 + action deny + } + rule 107 { + prefix 192.0.2.0/24 + description "TEST-NET-1" + le 32 + action deny + } + rule 108 { + prefix 198.18.0.0/15 + description "Network interconnect device benchmark testing" + le 32 + action deny + } + rule 109 { + prefix 198.51.100.0/24 + description "TEST-NET-2" + le 32 + action deny + } + rule 110 { + prefix 203.0.113.0/24 + description "TEST-NET-3" + le 32 + action deny + } + rule 111 { + prefix 224.0.0.0/4 + description "multicast" + le 32 action deny + } + rule 112 { + prefix 240.0.0.0/4 + description "reserved" le 32 + action deny + } + rule 1000 { prefix 0.0.0.0/0 + le 24 + action permit + } + rule 65535 { + prefix 0.0.0.0/0 + le 32 + action deny } } - prefix-list6 TEST-EQUINIXIX-OUT { + + prefix-list static-DFZ-DEFAULT-IPv4 { + rule 10 { + prefix 0.0.0.0/0 + action permit + } + rule 100 { + prefix 192.168.0.0/16 + description "RFC1918" + le 32 + action deny + } + rule 101 { + prefix 172.16.0.0/12 + description "RFC1918" + le 32 + action deny + } + rule 102 { + prefix 10.0.0.0/8 + description "RFC1918" + le 32 + action deny + } + rule 103 { + prefix 169.254.0.0/16 + description "link-local" + le 32 + action deny + } + rule 104 { + prefix 100.64.0.0/10 + description "CGNAT" + le 32 + action deny + } + rule 105 { + prefix 127.0.0.0/8 + description "loopback" + le 32 + action deny + } + rule 106 { + prefix 192.0.0.0/24 + description "IETF protocol assignments" + le 32 + action deny + } + rule 107 { + prefix 192.0.2.0/24 + description "TEST-NET-1" + le 32 + action deny + } + rule 108 { + prefix 198.18.0.0/15 + description "Network interconnect device benchmark testing" + le 32 + action deny + } + rule 109 { + prefix 198.51.100.0/24 + description "TEST-NET-2" + le 32 + action deny + } + rule 110 { + prefix 203.0.113.0/24 + description "TEST-NET-3" + le 32 + action deny + } + rule 111 { + prefix 224.0.0.0/4 + description "multicast" + le 32 + action deny + } + rule 112 { + prefix 240.0.0.0/4 + description "reserved" + le 32 + action deny + } + rule 1000 { + prefix 0.0.0.0/0 + le 24 + action permit + } + rule 65535 { + prefix 0.0.0.0/0 + le 32 + action deny + } + } + + prefix-list6 static-NO-IPv6 { + rule 1 { + prefix ::/0 + le 128 + action deny + } + } + + prefix-list6 static-ALL-IPv6 { + rule 1 { + prefix ::/0 + le 128 + action permit + } + } + + prefix-list6 static-DEFAULT-IPv6 { rule 1 { + prefix ::/0 action permit - prefix 2a01:9e00:1234::/48 } rule 2 { + prefix ::/0 + le 128 + action deny + } + } + + prefix-list6 static-DFZ-IPv6 { + rule 100 { + prefix ::/128 + description "not self" action deny + } + rule 101 { + prefix ::1/128 + description "self" + action deny + } + rule 102 { + prefix ::ffff:0:0/96 + description "IPv4-mapped" le 128 + action deny + } + rule 103 { + prefix ::/96 + description "IPv4-compatible" + le 128 + action deny + } + rule 104 { + prefix 100::/64 + description "RTBH addresses" + le 128 + action deny + } + rule 105 { + prefix 2001:10::/28 + description "ORCHID addresses" + le 128 + action deny + } + rule 106 { + prefix 2001:db8::/32 + description "documentation prefix" + le 128 + action deny + } + rule 107 { + prefix fc00::/7 + description "ULA address" + le 128 + action deny + } + rule 108 { + prefix fe80::/10 + description "link-local" + le 128 + action deny + } + rule 109 { + prefix fec0::/10 + description "site-local" + le 128 + action deny + } + rule 110 { + prefix ff0e::/16 + description "global multicast" + le 64 + action permit + } + rule 111 { + prefix ff00::/8 + description "multicast" + le 128 + action deny + } + rule 1000 { prefix ::/0 + le 64 + action permit } } + + prefix-list6 static-DFZ-DEFAULT-IPv6 { + rule 10 { + prefix ::/0 + action permit + } + rule 100 { + prefix ::/128 + description "not self" + action deny + } + rule 101 { + prefix ::1/128 + description "self" + action deny + } + rule 102 { + prefix ::ffff:0:0/96 + description "IPv4-mapped" + le 128 + action deny + } + rule 103 { + prefix ::/96 + description "IPv4-compatible" + le 128 + action deny + } + rule 104 { + prefix 100::/64 + description "RTBH addresses" + le 128 + action deny + } + rule 105 { + prefix 2001:10::/28 + description "ORCHID addresses" + le 128 + action deny + } + rule 106 { + prefix 2001:db8::/32 + description "documentation prefix" + le 128 + action deny + } + rule 107 { + prefix fc00::/7 + description "ULA address" + le 128 + action deny + } + rule 108 { + prefix fe80::/10 + description "link-local" + le 128 + action deny + } + rule 109 { + prefix fec0::/10 + description "site-local" + le 128 + action deny + } + rule 110 { + prefix ff0e::/16 + description "global multicast" + le 64 + action permit + } + rule 111 { + prefix ff00::/8 + description "multicast" + le 128 + action deny + } + rule 1000 { + prefix ::/0 + le 64 + action permit + } + } + + {% for prefix_list_name, bgpq3_query in salt['pillar.get']("policy:prefix-list",{}).items() %} + prefix-list {{ prefix_list_name }} { + {% import_yaml ("routes/" + prefix_list_name + ".json4") as jsonblob %} + {% for prefix in jsonblob.NN %} + rule {{ loop.index }} { + action permit + prefix {{ prefix['prefix'] }} + {% if prefix.get('less-equal',None) != None %}le {{ prefix['less-equal'] }}{% endif %} + {% if prefix.get('greater-equal',None) != None %}ge {{ prefix['greater-equal'] }}{% endif %} + } + {% endfor %} + rule 65535 { + prefix 0.0.0.0/0 + le 32 + action deny + } + } + {% endfor %} + + {% for prefix_list_name, bgpq3_query in salt['pillar.get']("policy:prefix-list",{}).items() %} + prefix-list6 {{ prefix_list_name }} { + {% import_yaml ("routes/" + prefix_list_name + ".json6") as jsonblob %} + {% for prefix in jsonblob.NN %} + rule {{ loop.index }} { + action permit + prefix {{ prefix['prefix'] }} + {% if prefix.get('less-equal',None) != None %}le {{ prefix['less-equal'] }}{% endif %} + {% if prefix.get('greater-equal',None) != None %}ge {{ prefix['greater-equal'] }}{% endif %} + } + {% endfor %} + rule 65535 { + prefix ::/0 + le 128 + action deny + } + } + {% endfor %} + } /* -=-=-=-=-=-=-=-=-=-=-=-=-=- SERVICE -=-=-=-=-=-=-=-=-=-=-=-=-=- */ @@ -299,6 +727,7 @@ service { } {% endfor %} trap-source {{ pillar['service']['snmp']['trap-source'] }} + listen-address {{ pillar['service']['snmp']['trap-source'] }} {% for trap_target, trap_data in salt['pillar.get']('service:snmp:trap-target',{}).items() %} trap-target {{ trap_target }} { }