1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- ################################################################################
- # Internet table #
- ################################################################################
- {%- set ifaces = salt['pillar.get']('nodes:' ~ grains['id'] ~ ':ifaces', {}) %}
- {%- set have_vrf_external = [] %}
- {%- for iface, iface_config in ifaces.items () %}
- {%- if iface_config.get ('vrf', '') == 'vrf_external' %}
- {%- do have_vrf_external.append (True) %}
- {%- break %}
- {%- endif %}
- {%- endfor %}
- {%- if True not in have_vrf_external %}
- #
- # No vrf_external configured on this node. Nothing to do.
- #
- {%- else %}
- table t_external;
- protocol kernel k_external {
- scan time 20;
- learn;
- import none;
- export all;
- table t_external;
- kernel table 1023;
- }
- # Add unreachable routes for RFC1918, RFC 6598, APIPA so we don't route
- # anything private into the internet + null route some bogons.
- protocol static bogon_unreach_ext {
- table t_external;
- {%- if proto == 'v4' %}
- route 0.0.0.0/8 unreachable; # Host-Subnet
- route 10.0.0.0/8 unreachable; # RFC 1918
- route 169.254.0.0/16 unreachable; # APIPA
- route 172.16.0.0/12 unreachable; # RFC 1918
- route 192.0.0.0/24 unreachable; # IANA RESERVED
- route 192.0.2.0/24 unreachable; # TEST-NET-1
- route 192.168.0.0/16 unreachable; # RFC 1918
- route 198.18.0.0/15 unreachable; # BENCHMARK
- route 198.51.100.0/24 unreachable; # TEST-NET-2
- route 203.0.113.0/24 unreachable; # TEST-NET-3
- route 224.0.0.0/3 unreachable; # MCast + Class E
- {%- else %}
- route ::/96 unreachable; # RFC 4291
- route 2001:db8::/32 unreachable; # Documentation
- route fec0::/10 unreachable; # Site Local
- route fc00::/7 unreachable; # ULA
- {%- endif %}
- }
- {%- endif %} {#- vrf_external exists #}
|