base commit
This commit is contained in:
parent
f2779cdf57
commit
e42d16c2c0
175
os/bird/bird.conf
Normal file
175
os/bird/bird.conf
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
###### VARIABLES PER ROUTER ######
|
||||||
|
|
||||||
|
router id 10.0.0.1;
|
||||||
|
define OWNIPv6 = fdef:7b3a:d88f:100::1;
|
||||||
|
define OWNLOCALv6 = fdef:7b3a:d88f:100::/56;
|
||||||
|
|
||||||
|
###### VARIABLES PER NETWORK ######
|
||||||
|
|
||||||
|
define OWNAS = 4242422246;
|
||||||
|
define OWNNETv6 = fdef:7b3a:d88f::/48;
|
||||||
|
define OWNNETSETv6 = [fdef:7b3a:d88f::/48+];
|
||||||
|
|
||||||
|
###### ROA STUFF ######
|
||||||
|
|
||||||
|
roa6 table dn42_roa_v6; # create new roa6 table
|
||||||
|
|
||||||
|
protocol static {
|
||||||
|
roa6 { table dn42_roa_v6; }; # set the table to use
|
||||||
|
include "/etc/bird/dn42_roa_bird2_6.conf"; # import routes
|
||||||
|
};
|
||||||
|
|
||||||
|
###### HELPER FUNCTIONS ######
|
||||||
|
|
||||||
|
function is_self_net_v6() {
|
||||||
|
return net ~ OWNNETSETv6;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function is_valid_network_v6() {
|
||||||
|
return net ~ [
|
||||||
|
# ULA address space as per RFC 4193
|
||||||
|
fd00::/8{44,64}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
###### FILTERS ######
|
||||||
|
|
||||||
|
filter kernel_export {
|
||||||
|
if source = RTS_STATIC then reject;
|
||||||
|
krt_prefsrc = OWNIPv6;
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
|
||||||
|
filter check_incoming_ebgp {
|
||||||
|
# is valid and not our network
|
||||||
|
if is_valid_network_v6() && !is_self_net_v6() then {
|
||||||
|
# does not pass roa
|
||||||
|
if (roa_check(dn42_roa_v6, net, bgp_path.last) != ROA_VALID) then {
|
||||||
|
print "[dn42] ROA check failed for ", net, " ASN ", bgp_path.last;
|
||||||
|
reject;
|
||||||
|
}
|
||||||
|
# passed roa
|
||||||
|
else {
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# network not valid or is our network
|
||||||
|
else {
|
||||||
|
reject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
filter check_outgoing_ebgp {
|
||||||
|
# is valid network and the source is static or BGP
|
||||||
|
if is_valid_network_v6() && source ~ [RTS_STATIC, RTS_BGP] then {
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
# is not a valid network or is not static/bgp
|
||||||
|
else {
|
||||||
|
reject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
###### INTERNAL ROUTING OSPF ######
|
||||||
|
|
||||||
|
ipv6 table int6; # create new table
|
||||||
|
|
||||||
|
protocol static {
|
||||||
|
route OWNLOCALv6 reject; # add route that belongs to region
|
||||||
|
|
||||||
|
ipv6 {
|
||||||
|
table int6;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol ospf v3 intnet {
|
||||||
|
ipv6 {
|
||||||
|
table int6;
|
||||||
|
import all;
|
||||||
|
export all;
|
||||||
|
};
|
||||||
|
area 0 { # there must be a better way to not repeat the interfaces
|
||||||
|
interface "ams02" {
|
||||||
|
type ptmp;
|
||||||
|
neighbors {
|
||||||
|
fe80::200;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
interface "los03" {
|
||||||
|
type ptmp;
|
||||||
|
neighbors {
|
||||||
|
fe80::300;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol pipe { # merge routing tables
|
||||||
|
table master6;
|
||||||
|
peer table int6;
|
||||||
|
import where source != RTS_STATIC; # import into master6 all except static routes
|
||||||
|
export none;
|
||||||
|
}
|
||||||
|
|
||||||
|
###### BGP ######
|
||||||
|
|
||||||
|
ipv6 table bgp6; # create new table
|
||||||
|
|
||||||
|
protocol static {
|
||||||
|
route OWNNETv6 reject;
|
||||||
|
|
||||||
|
ipv6 {
|
||||||
|
table bgp6;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol pipe { # merge routing tables
|
||||||
|
table master6;
|
||||||
|
peer table bgp6;
|
||||||
|
import where source != RTS_STATIC; # import into master6 all except static routes
|
||||||
|
export none;
|
||||||
|
}
|
||||||
|
|
||||||
|
template bgp dnpeers {
|
||||||
|
local as OWNAS;
|
||||||
|
path metric 1;
|
||||||
|
|
||||||
|
ipv6 {
|
||||||
|
table bgp6;
|
||||||
|
import filter check_incoming_ebgp;
|
||||||
|
export filter check_outgoing_ebgp;
|
||||||
|
import limit 4242 action block;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template bgp localas {
|
||||||
|
local as OWNAS;
|
||||||
|
keepalive time 5;
|
||||||
|
direct;
|
||||||
|
rr client;
|
||||||
|
|
||||||
|
ipv6 {
|
||||||
|
table bgp6;
|
||||||
|
import where source = RTS_BGP;
|
||||||
|
export where source = RTS_BGP;
|
||||||
|
next hop self;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
include "/etc/bird/peers/*.conf";
|
||||||
|
|
||||||
|
###### MISC BUT NEEDED ######
|
||||||
|
|
||||||
|
protocol device { # why is this needed?
|
||||||
|
scan time 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol kernel {
|
||||||
|
scan time 10;
|
||||||
|
|
||||||
|
ipv6 {
|
||||||
|
import none;
|
||||||
|
export filter kernel_export;
|
||||||
|
};
|
||||||
|
};
|
2022
os/bird/dn42_roa_bird2_6.conf
Normal file
2022
os/bird/dn42_roa_bird2_6.conf
Normal file
File diff suppressed because it is too large
Load Diff
3
os/bird/envvars
Normal file
3
os/bird/envvars
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
BIRD_RUN_USER=bird
|
||||||
|
BIRD_RUN_GROUP=bird
|
||||||
|
#BIRD_ARGS=
|
3
os/bird/peers/NETW.conf
Normal file
3
os/bird/peers/NETW.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
protocol bgp NETW_v6 from dnpeers {
|
||||||
|
neighbor fe80::????%dn42_NETW as 424242xxxx;
|
||||||
|
}
|
3
os/cron.hourly/dn42-roa6
Normal file
3
os/cron.hourly/dn42-roa6
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
curl -sfSL -o /etc/bird/dn42_roa_bird2_6.conf https://dn42.burble.com/roa/dn42_roa_bird2_6.conf
|
||||||
|
/usr/sbin/birdc configure
|
6
os/interfaces.d/90-dn42-loopback
Normal file
6
os/interfaces.d/90-dn42-loopback
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
iface lo inet6 static
|
||||||
|
address fdef:7b3a:d88f:??00::1/64
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
where ?? is the router number, e.g: 03
|
7
os/iptables/rules.v4
Normal file
7
os/iptables/rules.v4
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Generated by iptables-save v1.8.7 on Mon Mar 27 07:29:21 2023
|
||||||
|
*filter
|
||||||
|
:INPUT DROP [8:324]
|
||||||
|
:FORWARD DROP [0:0]
|
||||||
|
:OUTPUT DROP [12:1034]
|
||||||
|
COMMIT
|
||||||
|
# Completed on Mon Mar 27 07:29:21 2023
|
21
os/iptables/rules.v6
Normal file
21
os/iptables/rules.v6
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Generated by ip6tables-save v1.8.7 on Mon Mar 20 21:32:24 2023
|
||||||
|
*filter
|
||||||
|
:INPUT ACCEPT [0:0]
|
||||||
|
:FORWARD ACCEPT [0:0]
|
||||||
|
:OUTPUT ACCEPT [0:0]
|
||||||
|
:DN42_INPUT - [0:0]
|
||||||
|
:DN42_OUTPUT - [0:0]
|
||||||
|
-A INPUT -i dn42+ -j DN42_INPUT
|
||||||
|
-A FORWARD -i dn42+ -j DN42_INPUT
|
||||||
|
-A FORWARD -o dn42+ -j DN42_OUTPUT
|
||||||
|
-A OUTPUT -o dn42+ -j DN42_OUTPUT
|
||||||
|
-A DN42_INPUT -s fd00::/8 -j ACCEPT
|
||||||
|
-A DN42_INPUT -s fe80::/10 -j ACCEPT
|
||||||
|
-A DN42_INPUT -s ff00::/8 -j ACCEPT
|
||||||
|
-A DN42_INPUT -j REJECT --reject-with icmp6-port-unreachable
|
||||||
|
-A DN42_OUTPUT -d fd00::/8 -j ACCEPT
|
||||||
|
-A DN42_OUTPUT -d fe80::/10 -j ACCEPT
|
||||||
|
-A DN42_OUTPUT -d ff00::/8 -j ACCEPT
|
||||||
|
-A DN42_OUTPUT -j REJECT --reject-with icmp6-port-unreachable
|
||||||
|
COMMIT
|
||||||
|
# Completed on Mon Mar 20 21:32:24 2023
|
7
os/software.txt
Normal file
7
os/software.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
htop
|
||||||
|
iptables
|
||||||
|
iptables-persistent
|
||||||
|
bird2
|
||||||
|
wireguard-tools
|
||||||
|
nginx
|
||||||
|
curl
|
1
os/sysctl.d/90-dn42-forwarding.conf
Normal file
1
os/sysctl.d/90-dn42-forwarding.conf
Normal file
@ -0,0 +1 @@
|
|||||||
|
net.ipv6.conf.all.forwarding=1
|
22
os/wireguard/dn42_NETW.conf
Normal file
22
os/wireguard/dn42_NETW.conf
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
[Interface]
|
||||||
|
PrivateKey = $?
|
||||||
|
Address = fe80::$1/64
|
||||||
|
ListenPort = 3$2
|
||||||
|
mtu = 1420
|
||||||
|
Table = off
|
||||||
|
|
||||||
|
# peer addr fe80::$3
|
||||||
|
[Peer]
|
||||||
|
PublicKey = $?
|
||||||
|
Endpoint = $?
|
||||||
|
AllowedIPs = fd00::/8, fe80::/10
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
########################################
|
||||||
|
|
||||||
|
$? = self explanatory
|
||||||
|
$1 = network nr, e.g: 100 or 200
|
||||||
|
$2 = optional, where $2 is 4 int long and the last 4 numbers of the peer as
|
||||||
|
$3 = link local address of the peer
|
||||||
|
|
23
os/www/index.html
Normal file
23
os/www/index.html
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Welcome to $DNS</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
width: 45%;
|
||||||
|
margin: 0 auto;
|
||||||
|
font-family: Tahoma, Verdana, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Welcome to $DNS</h1>
|
||||||
|
<p>You have a working IPv6 connection if you see this page!</p>
|
||||||
|
<p>This is a DN42 router and its accessible via $DNSRESOLVED (clearnet) or $DN42LOOPBACK (DN42)</p>
|
||||||
|
|
||||||
|
<p>If you want to know what DN42 is, refer to <a href="https://dn42.dev/Home">dn42.dev/Home</a>.
|
||||||
|
Or if you know what it is and want to peer with me visit <a href="https://www.ventilaar.nl/dn42">www.ventilaar.nl/dn42</a></p>
|
||||||
|
|
||||||
|
<p><em>Yes this layout is the default nginx template, how did you know?</em></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user