2017-09-11 13:10:39 +02:00
|
|
|
#
|
|
|
|
# {{ ansible_managed }}
|
|
|
|
#
|
|
|
|
|
|
|
|
# Variables
|
|
|
|
define icvpn_address = {{ icvpn_ipv4_transfer_net | ipaddr('net') | ipsubnet(24, 37) | ipaddr(magic) | ipaddr('address') }};
|
|
|
|
|
|
|
|
# ROA
|
|
|
|
roa table roa_icvpn {
|
|
|
|
include "icvpn_ipv4_roa.con?";
|
|
|
|
}
|
|
|
|
|
2018-10-31 20:58:56 +01:00
|
|
|
# Routing Tables
|
|
|
|
table icvpn;
|
|
|
|
|
2017-09-11 13:10:39 +02:00
|
|
|
# Filters
|
|
|
|
filter icvpn_import_filter {
|
2018-10-31 20:58:56 +01:00
|
|
|
if is_mwu_self_nets_loose() then reject;
|
2017-09-11 13:10:39 +02:00
|
|
|
if is_chaosvpn() then accept;
|
|
|
|
if roa_check(roa_icvpn) = ROA_VALID then {
|
|
|
|
if is_freifunk() then accept;
|
|
|
|
if is_dn42() then accept;
|
|
|
|
} else {
|
|
|
|
if roa_check(roa_icvpn) = ROA_UNKNOWN then {
|
|
|
|
if is_dn42() then {
|
|
|
|
print "ROA UNKNOWN for dn42 net, accepting: ", net, " ASN: ", bgp_path.last;
|
|
|
|
accept;
|
|
|
|
}
|
|
|
|
if is_freifunk() then {
|
|
|
|
print "ROA UNKNOWN for freifunk net, accepting: ", net, " ASN: ", bgp_path.last;
|
|
|
|
accept;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if roa_check(roa_icvpn) = ROA_INVALID then {
|
|
|
|
if is_freifunk() then {
|
2018-01-02 10:45:09 +01:00
|
|
|
print "ROA INVALID for freifunk net, accepting: ", net, " ASN: ", bgp_path.last;
|
2017-09-11 13:10:39 +02:00
|
|
|
accept;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
reject;
|
|
|
|
}
|
|
|
|
reject;
|
|
|
|
}
|
|
|
|
|
|
|
|
# Protocols
|
2018-10-31 20:58:56 +01:00
|
|
|
protocol pipe {
|
|
|
|
peer table icvpn;
|
|
|
|
import none;
|
|
|
|
export filter {
|
|
|
|
if is_mwu_self_nets_loose() then reject;
|
|
|
|
if is_freifunk() then accept;
|
|
|
|
if is_chaosvpn() then accept;
|
|
|
|
if is_dn42() then accept;
|
|
|
|
reject;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
# Protocols
|
|
|
|
protocol kernel kernel_icvpn {
|
|
|
|
table icvpn;
|
2017-09-11 13:10:39 +02:00
|
|
|
scan time 30;
|
|
|
|
import none;
|
|
|
|
export filter {
|
2018-10-31 20:58:56 +01:00
|
|
|
if is_mwu_self_nets_loose() then reject;
|
2017-09-11 13:10:39 +02:00
|
|
|
krt_prefsrc = icvpn_address;
|
|
|
|
accept;
|
|
|
|
};
|
|
|
|
kernel table ipt_icvpn;
|
|
|
|
};
|
|
|
|
|
|
|
|
# Templates
|
|
|
|
template bgp ebgp_icvpn {
|
|
|
|
local icvpn_address as mwu_as;
|
|
|
|
import keep filtered on;
|
|
|
|
import filter icvpn_import_filter;
|
|
|
|
export filter {
|
2018-10-31 20:58:56 +01:00
|
|
|
if is_mwu_self_nets_strict() then accept;
|
2017-09-11 13:10:39 +02:00
|
|
|
if source = RTS_BGP then {
|
|
|
|
if is_freifunk() || is_dn42() then {
|
|
|
|
accept;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
reject;
|
|
|
|
};
|
|
|
|
direct;
|
|
|
|
}
|
|
|
|
|
|
|
|
# Include ICVPN IPv4 peers
|
|
|
|
include "icvpn_ipv4_peers.con?";
|