From d901032b78f34db89b2f39ee228c12c9b8fc09d8 Mon Sep 17 00:00:00 2001 From: Karl Grube <karl@hudlergrube.com> Date: Mon, 30 Oct 2023 21:07:49 +0100 Subject: [PATCH] internet router work for today done --- templates/frr_conf.j2 | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/templates/frr_conf.j2 b/templates/frr_conf.j2 index ef3e679..04925c5 100644 --- a/templates/frr_conf.j2 +++ b/templates/frr_conf.j2 @@ -16,15 +16,15 @@ router bgp {{bgp_asn}} neighbor outside peer-group neighbor outside remote-as external neighbor nat peer-group - neighbor nat remote-as internal + neighbor nat remote-as external neighbor nat bfd neighbor nat capability extended-nexthop neighbor firewall4s peer-group - neighbor firewall4s remote-as internal + neighbor firewall4s remote-as external neighbor firewall4s bfd neighbor firewall4s capability extended-nexthop neighbor firewalls peer-group - neighbor firewalls remote-as internal + neighbor firewalls remote-as external neighbor firewalls bfd {% for neighbor in firewall4s %} {% if (neighbor|ansible.utils.ipv6) or (neighbor|ansible.utils.ipv4) %} @@ -49,13 +49,16 @@ router bgp {{bgp_asn}} {% endfor %} ! address-family ipv4 unicast +{% for range in dc4_ranges %} + aggregate-address {{range}} route-map reject_local_origin +{% endfor %} network 0.0.0.0/0 neighbor firewall4s activate neighbor firewall4s prefix-list all out - neighbor firewall4s prefix-list my-networks in + neighbor firewall4s prefix-list internal in neighbor nat activate neighbor nat prefix-list all out - neighbor nat prefix-list nat in + neighbor nat prefix-list internal in {% for neighbor in internet_connections %} {% for ip in neighbor.peer_ips %} {% if ip|ansible.utils.ipv4 %} @@ -67,13 +70,16 @@ router bgp {{bgp_asn}} {% endfor %} ! address-family ipv6 unicast +{% for range in dc_ranges %} + aggregate-address {{range}} route-map reject_local_origin +{% endfor %} network ::/0 neighbor nat activate neighbor nat prefix-list internet out neighbor nat prefix-list none in neighbor firewalls activate neighbor firewalls prefix-list all out - neighbor firewalls prefix-list my-networks in + neighbor firewalls prefix-list internal in {% for neighbor in internet_connections %} {% for ip in neighbor.peer_ips %} {% if ip|ansible.utils.ipv6 %} @@ -141,6 +147,14 @@ ipv6 prefix-list my-networks seq {{(loop.index|int)*10+10}} deny any {% endif %} {% endfor %} ! +{% for range in dc_ranges %} +ipv6 prefix-list internal seq {{(loop.index|int)*20-10}} permit {{range}} +ipv6 prefix-list internal seq {{(loop.index|int)*20}} permit {{range}} ge {{((range|regex_replace('.*/',''))|int)+1}} +{% if loop.last %} +ipv6 prefix-list internal seq {{(loop.index|int)*20+10}} deny any +{% endif %} +{% endfor %} +! ip prefix-list none seq 10 deny any {% if allow_default_ipv4 == True %} ip prefix-list internet seq 5 permit 0.0.0.0/0 @@ -169,10 +183,10 @@ ip prefix-list internet seq {{(loop.index|int)*10+170}} permit any {% endfor %} ! {% for range in dc4_ranges %} -ip prefix-list nat seq {{(loop.index|int)*20-10}} permit {{range}} -ip prefix-list nat seq {{(loop.index|int)*20}} permit {{range}} ge {{((range|regex_replace('.*/',''))|int)+1}} +ip prefix-list internal seq {{(loop.index|int)*20-10}} permit {{range}} +ip prefix-list internal seq {{(loop.index|int)*20}} permit {{range}} ge {{((range|regex_replace('.*/',''))|int)+1}} {% if loop.last %} -ip prefix-list nat seq {{(loop.index|int)*20+10}} deny any +ip prefix-list internal seq {{(loop.index|int)*20+10}} deny any {% endif %} {% endfor %} {% for range in dc4_ranges + anycast4_ranges %} @@ -183,3 +197,11 @@ ip prefix-list my-networks seq {{(loop.index|int)*10+10}} deny any {% endfor %} ip prefix-list all seq 10 permit any ipv6 prefix-list all seq 10 permit any +! +route-map reject_local_origin deny 10 + match as-path {{bgp_asn}} +exit +! +route-map reject_local_origin permit 20 +exit +! -- GitLab