<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.haxogreen.lu/2024/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=R3boot</id>
	<title>Haxogreen 2024 Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.haxogreen.lu/2024/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=R3boot"/>
	<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/wiki/Special:Contributions/R3boot"/>
	<updated>2026-05-27T08:57:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1356</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1356"/>
		<updated>2024-07-26T15:48:47Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP. The workshop is divided into two parts; In the first part, we will be building a demonstration network in which we will apply the basic configuration to get a working BGP network. Using this knowledge (and assuming you know how to configure point-to-point VPN tunnels), you can setup fully routed private networks that are vendor / device / OS agnostic. The second part of the workshop is optional, and will discuss some practical applications that are built on top of, namely Anycast and DDoS migitation using remotely triggered blackhole routing.&lt;br /&gt;
&lt;br /&gt;
# Basics&lt;br /&gt;
## Routing theory&lt;br /&gt;
## Setting up a peering&lt;br /&gt;
## Filtering&lt;br /&gt;
## Aggregation&lt;br /&gt;
## Hijacking&lt;br /&gt;
&lt;br /&gt;
# Advanced&lt;br /&gt;
## Anycast&lt;br /&gt;
## DDoS migitation&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch). While the workshop is designed around Linux/BIRD, the concepts that we will be working with apply to all devices that are able to talk, configure policies/access lists and can speak BGP, or most other routing protocols.&lt;br /&gt;
&lt;br /&gt;
== Expectations ==&lt;br /&gt;
This workshop will NOT be about internet routing. It will discuss the BGP protocol using a bunch of examples that can be applied to anything that runs BGP. These techniques can be applied on your LAN and over VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
* BIRD version 2.x, bash, netcat, ping, iproute2&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Every participant of the workshop needs their own AS number and a prefix. Either add your details to the sheet below, or ask [[User:R3boot|r3boot]] to add you.&lt;br /&gt;
&lt;br /&gt;
https://docs.nurd.space/sheet/#/2/sheet/edit/IacR4-gLFoetuyrli3JBhIMB/&lt;br /&gt;
&lt;br /&gt;
= Workshop =&lt;br /&gt;
== Setting up your local networks ==&lt;br /&gt;
&lt;br /&gt;
Create the two networks using iproute2:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 &lt;br /&gt;
 ip addr add 192.168.0.1/24 dev dummy0&lt;br /&gt;
 ip addr add 192.168.1.1/24 dev dummy1&lt;br /&gt;
 &lt;br /&gt;
 ip link set dummy0 up&lt;br /&gt;
 ip link set dummy1 up&lt;br /&gt;
&lt;br /&gt;
Enable ip forwarding&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup initial configuration of BIRD ==&lt;br /&gt;
&lt;br /&gt;
Configure BIRD to read network prefixes from all dummy devices. Do this by editing `/etc/bird/bird.conf`. Replace the current content with the content below. Be sure to replace X.X.X.X with your ip address.&lt;br /&gt;
&lt;br /&gt;
 router id X.X.X.X;&lt;br /&gt;
 &lt;br /&gt;
 protocol device { }&lt;br /&gt;
 &lt;br /&gt;
 protocol direct {&lt;br /&gt;
 	ipv4;&lt;br /&gt;
 	interface &amp;quot;dummy*&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol kernel {&lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 	      export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load and check setup ==&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
A correctly configured BIRD will show a routing table that looks like the one below:&lt;br /&gt;
&lt;br /&gt;
 BIRD 2.0.12 ready.&lt;br /&gt;
 Table master4:&lt;br /&gt;
 192.168.0.0/24       unicast [direct1 13:48:13.162] * (240)&lt;br /&gt;
 	dev dummy0&lt;br /&gt;
 192.168.1.0/24       unicast [direct1 13:48:18.015] * (240)&lt;br /&gt;
 	dev dummy1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doublecheck that BIRD is exporting routes to the kernel using &#039;&#039;&#039;ip route show protocol bird&#039;&#039;&#039;. It should look like the following:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.0/24 dev dummy0 proto bird scope link metric 32&lt;br /&gt;
 192.168.1.0/24 dev dummy1 proto bird scope link metric 32&lt;br /&gt;
&lt;br /&gt;
= 1) Basic BGP operations =&lt;br /&gt;
&lt;br /&gt;
== 1.1) Setting up your first BGP peering(s) ==&lt;br /&gt;
&lt;br /&gt;
For each participant you want to setup a peering for, configure a block like below. Replace X.X.X.X and AAAAA with your own details. Replace Y.Y.Y.Y and BBBBB with the details that are used by your peer. Add a descriptive name for PEERNAME.&lt;br /&gt;
&lt;br /&gt;
 protocol bgp PEERNAME {&lt;br /&gt;
 	local X.X.X.X as AAAAA;&lt;br /&gt;
 	neighbor Y.Y.Y.Y as BBBBB;&lt;br /&gt;
 &lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 		import all;&lt;br /&gt;
 		export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the peer configuration is added, load the configuration, and doublecheck if the peering is established.&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show protocols&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== 1.2) Filtering ==&lt;br /&gt;
&lt;br /&gt;
Modify the configuration and add an export filter for each peer.&lt;br /&gt;
&lt;br /&gt;
 filter export_to_PEERNAME {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23{23,24} ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, configure the peer to use the filters for both importing and exporting routes:&lt;br /&gt;
&lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import all;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Once you are done, reload the configuration and check your routes again&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== 1.3) Aggregation ==&lt;br /&gt;
&lt;br /&gt;
Setup a static route which contains both your subnets. Configure the subnet to send host unreachables whenever an ip does not respond to ARP requests.&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         ipv4;&lt;br /&gt;
         route 192.168.0.0/23 unreachable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tighten your export filter for all your peerings so that you only send your aggregated network:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.4) Hijacking ==&lt;br /&gt;
&lt;br /&gt;
Configure an extra dummy interface that is configured with an IP address belonging to some peer:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip addr add 192.168.2.66/32 dev dummy2&lt;br /&gt;
 ip link set dummy2 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify your export filters to send the hijacked prefix:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         if net ~ [ 192.168.2.66/32 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reload the configuration, and validate that the new route is set:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bgp&lt;br /&gt;
&lt;br /&gt;
=== 1.4.1) Preventing BGP hijacking ===&lt;br /&gt;
&lt;br /&gt;
Modify the import filter for your peer to only accept prefixes that belong to your peer, and use this filter to select routes imported from your peer:&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
         if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import filter import_from_alita;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Next, reload the configuration, restart the BGP peering and check the routing tables:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc restart alita&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done with this excercise, remove the dummy interface you used for hijacking.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
= 2) Advanced BGP tricks =&lt;br /&gt;
&lt;br /&gt;
== 2.1) BGP Anycast ==&lt;br /&gt;
&lt;br /&gt;
Configure a loopback interface for your service&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure a health check which manages the anycast ip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env bash&lt;br /&gt;
 &lt;br /&gt;
 INTERFACE=&#039;dummy2&#039;&lt;br /&gt;
 IP=&#039;192.168.0.42&#039;&lt;br /&gt;
 &lt;br /&gt;
 while :; do&lt;br /&gt;
     if nc -w1 -nz 127.0.0.1 22; then&lt;br /&gt;
         ip addr add ${IP}/32 dev ${INTERFACE} 2&amp;gt;/dev/null&lt;br /&gt;
     else&lt;br /&gt;
         ip addr flush dev ${INTERFACE}&lt;br /&gt;
     fi&lt;br /&gt;
     sleep 1&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Now start or stop your service. Notice that bird will advertise the service once second after the service starts listening on its port, and stops advertising the address as soon as you stop the service.&lt;br /&gt;
&lt;br /&gt;
Be sure to tear down the dummy2 interface once you are done, since the next example is incompatible with it.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
== 2.2) DDoS migitation using s/RTBH ==&lt;br /&gt;
&lt;br /&gt;
Modify your export filter(s) so that a BGP community gets added whenever BIRD finds a single ip address belonging to your ip space:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
    if net ~ [ 192.168.0.0/23{32,32} ] then&lt;br /&gt;
         bgp_community.add((65000,42));&lt;br /&gt;
         accept;&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify the import filter of your peers to reject a prefix as soon as it finds the migitation community&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
     if ( net ~ [ 192.168.6.0/23{32,32} ] &amp;amp;&amp;amp; (65003,42) ~ bgp_community) then {&lt;br /&gt;
         dest = RTD_UNREACHABLE;&lt;br /&gt;
         accept;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Reload your configuration. Notice that nothing will change, since you have not tagged any prefix with the migitation community.&lt;br /&gt;
&lt;br /&gt;
Now, pick an ip address within your range, and ask one of your peers to run a ping towards this ip.&lt;br /&gt;
&lt;br /&gt;
To activate the migitation, add a static route for an ip address you want to protect, and reload your configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         route 192.168.1.1/32 blackhole;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To deactivate the migitation, remove the static route and reload your configuration.&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1355</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1355"/>
		<updated>2024-07-26T15:46:12Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP. The workshop is divided into two parts; In the first part, we will be building a demonstration network in which we will apply the basic configuration to get a working BGP network. Using this knowledge (and assuming you know how to configure point-to-point VPN tunnels), you can setup fully routed private networks that are vendor / device / OS agnostic. The second part of the workshop is optional, and will discuss some practical applications that are built on top of, namely Anycast and DDoS migitation using remotely triggered blackhole routing.&lt;br /&gt;
&lt;br /&gt;
1) Basics&lt;br /&gt;
1.1) Routing theory&lt;br /&gt;
1.2) Setting up a peering&lt;br /&gt;
1.3) Route leaks&lt;br /&gt;
1.4) Aggregation&lt;br /&gt;
1.5) Hijacking&lt;br /&gt;
&lt;br /&gt;
2) Advanced&lt;br /&gt;
2.1) Anycast&lt;br /&gt;
2.2) DDoS migitation&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch). While the workshop is designed around Linux/BIRD, the concepts that we will be working with apply to all devices that are able to talk, configure policies/access lists and can speak BGP, or most other routing protocols.&lt;br /&gt;
&lt;br /&gt;
== Expectations ==&lt;br /&gt;
This workshop will NOT be about internet routing. It will discuss the BGP protocol using a bunch of examples that can be applied to anything that runs BGP. These techniques can be applied on your LAN and over VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
* BIRD version 2.x, bash, netcat, ping, iproute2&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Every participant of the workshop needs their own AS number and a prefix. Either add your details to the sheet below, or ask [[User:R3boot|r3boot]] to add you.&lt;br /&gt;
&lt;br /&gt;
https://docs.nurd.space/sheet/#/2/sheet/edit/IacR4-gLFoetuyrli3JBhIMB/&lt;br /&gt;
&lt;br /&gt;
= Workshop =&lt;br /&gt;
== Setting up your local networks ==&lt;br /&gt;
&lt;br /&gt;
Create the two networks using iproute2:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 &lt;br /&gt;
 ip addr add 192.168.0.1/24 dev dummy0&lt;br /&gt;
 ip addr add 192.168.1.1/24 dev dummy1&lt;br /&gt;
 &lt;br /&gt;
 ip link set dummy0 up&lt;br /&gt;
 ip link set dummy1 up&lt;br /&gt;
&lt;br /&gt;
Enable ip forwarding&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup initial configuration of BIRD ==&lt;br /&gt;
&lt;br /&gt;
Configure BIRD to read network prefixes from all dummy devices. Do this by editing `/etc/bird/bird.conf`. Replace the current content with the content below. Be sure to replace X.X.X.X with your ip address.&lt;br /&gt;
&lt;br /&gt;
 router id X.X.X.X;&lt;br /&gt;
 &lt;br /&gt;
 protocol device { }&lt;br /&gt;
 &lt;br /&gt;
 protocol direct {&lt;br /&gt;
 	ipv4;&lt;br /&gt;
 	interface &amp;quot;dummy*&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol kernel {&lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 	      export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load and check setup ==&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
A correctly configured BIRD will show a routing table that looks like the one below:&lt;br /&gt;
&lt;br /&gt;
 BIRD 2.0.12 ready.&lt;br /&gt;
 Table master4:&lt;br /&gt;
 192.168.0.0/24       unicast [direct1 13:48:13.162] * (240)&lt;br /&gt;
 	dev dummy0&lt;br /&gt;
 192.168.1.0/24       unicast [direct1 13:48:18.015] * (240)&lt;br /&gt;
 	dev dummy1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doublecheck that BIRD is exporting routes to the kernel using &#039;&#039;&#039;ip route show protocol bird&#039;&#039;&#039;. It should look like the following:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.0/24 dev dummy0 proto bird scope link metric 32&lt;br /&gt;
 192.168.1.0/24 dev dummy1 proto bird scope link metric 32&lt;br /&gt;
&lt;br /&gt;
= 1) Basic BGP operations =&lt;br /&gt;
&lt;br /&gt;
== 1.1) Setting up your first BGP peering(s) ==&lt;br /&gt;
&lt;br /&gt;
For each participant you want to setup a peering for, configure a block like below. Replace X.X.X.X and AAAAA with your own details. Replace Y.Y.Y.Y and BBBBB with the details that are used by your peer. Add a descriptive name for PEERNAME.&lt;br /&gt;
&lt;br /&gt;
 protocol bgp PEERNAME {&lt;br /&gt;
 	local X.X.X.X as AAAAA;&lt;br /&gt;
 	neighbor Y.Y.Y.Y as BBBBB;&lt;br /&gt;
 &lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 		import all;&lt;br /&gt;
 		export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the peer configuration is added, load the configuration, and doublecheck if the peering is established.&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show protocols&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== 1.2) Filtering ==&lt;br /&gt;
&lt;br /&gt;
Modify the configuration and add an export filter for each peer.&lt;br /&gt;
&lt;br /&gt;
 filter export_to_PEERNAME {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23{23,24} ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, configure the peer to use the filters for both importing and exporting routes:&lt;br /&gt;
&lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import all;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Once you are done, reload the configuration and check your routes again&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== 1.3) Aggregation ==&lt;br /&gt;
&lt;br /&gt;
Setup a static route which contains both your subnets. Configure the subnet to send host unreachables whenever an ip does not respond to ARP requests.&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         ipv4;&lt;br /&gt;
         route 192.168.0.0/23 unreachable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tighten your export filter for all your peerings so that you only send your aggregated network:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.4) BGP hijacking ==&lt;br /&gt;
&lt;br /&gt;
Configure an extra dummy interface that is configured with an IP address belonging to some peer:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip addr add 192.168.2.66/32 dev dummy2&lt;br /&gt;
 ip link set dummy2 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify your export filters to send the hijacked prefix:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         if net ~ [ 192.168.2.66/32 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reload the configuration, and validate that the new route is set:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bgp&lt;br /&gt;
&lt;br /&gt;
=== 1.4.1) Preventing BGP hijacking ===&lt;br /&gt;
&lt;br /&gt;
Modify the import filter for your peer to only accept prefixes that belong to your peer, and use this filter to select routes imported from your peer:&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
         if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import filter import_from_alita;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Next, reload the configuration, restart the BGP peering and check the routing tables:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc restart alita&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done with this excercise, remove the dummy interface you used for hijacking.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
= 2) Advanced BGP tricks =&lt;br /&gt;
&lt;br /&gt;
== 2.1) BGP Anycast ==&lt;br /&gt;
&lt;br /&gt;
Configure a loopback interface for your service&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure a health check which manages the anycast ip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env bash&lt;br /&gt;
 &lt;br /&gt;
 INTERFACE=&#039;dummy2&#039;&lt;br /&gt;
 IP=&#039;192.168.0.42&#039;&lt;br /&gt;
 &lt;br /&gt;
 while :; do&lt;br /&gt;
     if nc -w1 -nz 127.0.0.1 22; then&lt;br /&gt;
         ip addr add ${IP}/32 dev ${INTERFACE} 2&amp;gt;/dev/null&lt;br /&gt;
     else&lt;br /&gt;
         ip addr flush dev ${INTERFACE}&lt;br /&gt;
     fi&lt;br /&gt;
     sleep 1&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Now start or stop your service. Notice that bird will advertise the service once second after the service starts listening on its port, and stops advertising the address as soon as you stop the service.&lt;br /&gt;
&lt;br /&gt;
Be sure to tear down the dummy2 interface once you are done, since the next example is incompatible with it.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
== 2.2) DDoS migitation using s/RTBH ==&lt;br /&gt;
&lt;br /&gt;
Modify your export filter(s) so that a BGP community gets added whenever BIRD finds a single ip address belonging to your ip space:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
    if net ~ [ 192.168.0.0/23{32,32} ] then&lt;br /&gt;
         bgp_community.add((65000,42));&lt;br /&gt;
         accept;&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify the import filter of your peers to reject a prefix as soon as it finds the migitation community&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
     if ( net ~ [ 192.168.6.0/23{32,32} ] &amp;amp;&amp;amp; (65003,42) ~ bgp_community) then {&lt;br /&gt;
         dest = RTD_UNREACHABLE;&lt;br /&gt;
         accept;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Reload your configuration. Notice that nothing will change, since you have not tagged any prefix with the migitation community.&lt;br /&gt;
&lt;br /&gt;
Now, pick an ip address within your range, and ask one of your peers to run a ping towards this ip.&lt;br /&gt;
&lt;br /&gt;
To activate the migitation, add a static route for an ip address you want to protect, and reload your configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         route 192.168.1.1/32 blackhole;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To deactivate the migitation, remove the static route and reload your configuration.&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1354</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1354"/>
		<updated>2024-07-26T15:43:48Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* Anycast&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch). While the workshop is designed around Linux/BIRD, the concepts that we will be working with apply to all devices that are able to talk, configure policies/access lists and can speak BGP, or most other routing protocols.&lt;br /&gt;
&lt;br /&gt;
== Expectations ==&lt;br /&gt;
This workshop will NOT be about internet routing. It will discuss the BGP protocol using a bunch of examples that can be applied to anything that runs BGP. These techniques can be applied on your LAN and over VPN tunnels. The workshop is divided into two parts; In the first part, we will be building a demonstration network in which we will apply the basic configuration to get a working BGP network. Using this knowledge (and assuming you know how to configure point-to-point VPN tunnels), you can setup fully routed private networks that are vendor / device / OS agnostic. The second part of the workshop is optional, and will discuss some practical applications that are built on top of, namely Anycast and DDoS migitation using remotely triggered blackhole routing.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
* BIRD version 2.x, bash, netcat, ping, iproute2&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Every participant of the workshop needs their own AS number and a prefix. Either add your details to the sheet below, or ask [[User:R3boot|r3boot]] to add you.&lt;br /&gt;
&lt;br /&gt;
https://docs.nurd.space/sheet/#/2/sheet/edit/IacR4-gLFoetuyrli3JBhIMB/&lt;br /&gt;
&lt;br /&gt;
= Workshop =&lt;br /&gt;
== Setting up your local networks ==&lt;br /&gt;
&lt;br /&gt;
Create the two networks using iproute2:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 &lt;br /&gt;
 ip addr add 192.168.0.1/24 dev dummy0&lt;br /&gt;
 ip addr add 192.168.1.1/24 dev dummy1&lt;br /&gt;
 &lt;br /&gt;
 ip link set dummy0 up&lt;br /&gt;
 ip link set dummy1 up&lt;br /&gt;
&lt;br /&gt;
Enable ip forwarding&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup initial configuration of BIRD ==&lt;br /&gt;
&lt;br /&gt;
Configure BIRD to read network prefixes from all dummy devices. Do this by editing `/etc/bird/bird.conf`. Replace the current content with the content below. Be sure to replace X.X.X.X with your ip address.&lt;br /&gt;
&lt;br /&gt;
 router id X.X.X.X;&lt;br /&gt;
 &lt;br /&gt;
 protocol device { }&lt;br /&gt;
 &lt;br /&gt;
 protocol direct {&lt;br /&gt;
 	ipv4;&lt;br /&gt;
 	interface &amp;quot;dummy*&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol kernel {&lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 	      export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load and check setup ==&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
A correctly configured BIRD will show a routing table that looks like the one below:&lt;br /&gt;
&lt;br /&gt;
 BIRD 2.0.12 ready.&lt;br /&gt;
 Table master4:&lt;br /&gt;
 192.168.0.0/24       unicast [direct1 13:48:13.162] * (240)&lt;br /&gt;
 	dev dummy0&lt;br /&gt;
 192.168.1.0/24       unicast [direct1 13:48:18.015] * (240)&lt;br /&gt;
 	dev dummy1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doublecheck that BIRD is exporting routes to the kernel using &#039;&#039;&#039;ip route show protocol bird&#039;&#039;&#039;. It should look like the following:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.0/24 dev dummy0 proto bird scope link metric 32&lt;br /&gt;
 192.168.1.0/24 dev dummy1 proto bird scope link metric 32&lt;br /&gt;
&lt;br /&gt;
= 1) Basic BGP operations =&lt;br /&gt;
&lt;br /&gt;
== 1.1) Setting up your first BGP peering(s) ==&lt;br /&gt;
&lt;br /&gt;
For each participant you want to setup a peering for, configure a block like below. Replace X.X.X.X and AAAAA with your own details. Replace Y.Y.Y.Y and BBBBB with the details that are used by your peer. Add a descriptive name for PEERNAME.&lt;br /&gt;
&lt;br /&gt;
 protocol bgp PEERNAME {&lt;br /&gt;
 	local X.X.X.X as AAAAA;&lt;br /&gt;
 	neighbor Y.Y.Y.Y as BBBBB;&lt;br /&gt;
 &lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 		import all;&lt;br /&gt;
 		export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the peer configuration is added, load the configuration, and doublecheck if the peering is established.&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show protocols&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== 1.2) Filtering ==&lt;br /&gt;
&lt;br /&gt;
Modify the configuration and add an export filter for each peer.&lt;br /&gt;
&lt;br /&gt;
 filter export_to_PEERNAME {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23{23,24} ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, configure the peer to use the filters for both importing and exporting routes:&lt;br /&gt;
&lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import all;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Once you are done, reload the configuration and check your routes again&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== 1.3) Aggregation ==&lt;br /&gt;
&lt;br /&gt;
Setup a static route which contains both your subnets. Configure the subnet to send host unreachables whenever an ip does not respond to ARP requests.&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         ipv4;&lt;br /&gt;
         route 192.168.0.0/23 unreachable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tighten your export filter for all your peerings so that you only send your aggregated network:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.4) BGP hijacking ==&lt;br /&gt;
&lt;br /&gt;
Configure an extra dummy interface that is configured with an IP address belonging to some peer:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip addr add 192.168.2.66/32 dev dummy2&lt;br /&gt;
 ip link set dummy2 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify your export filters to send the hijacked prefix:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         if net ~ [ 192.168.2.66/32 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reload the configuration, and validate that the new route is set:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bgp&lt;br /&gt;
&lt;br /&gt;
=== 1.4.1) Preventing BGP hijacking ===&lt;br /&gt;
&lt;br /&gt;
Modify the import filter for your peer to only accept prefixes that belong to your peer, and use this filter to select routes imported from your peer:&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
         if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import filter import_from_alita;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Next, reload the configuration, restart the BGP peering and check the routing tables:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc restart alita&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done with this excercise, remove the dummy interface you used for hijacking.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
= 2) Advanced BGP tricks =&lt;br /&gt;
&lt;br /&gt;
== 2.1) BGP Anycast ==&lt;br /&gt;
&lt;br /&gt;
Configure a loopback interface for your service&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure a health check which manages the anycast ip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env bash&lt;br /&gt;
 &lt;br /&gt;
 INTERFACE=&#039;dummy2&#039;&lt;br /&gt;
 IP=&#039;192.168.0.42&#039;&lt;br /&gt;
 &lt;br /&gt;
 while :; do&lt;br /&gt;
     if nc -w1 -nz 127.0.0.1 22; then&lt;br /&gt;
         ip addr add ${IP}/32 dev ${INTERFACE} 2&amp;gt;/dev/null&lt;br /&gt;
     else&lt;br /&gt;
         ip addr flush dev ${INTERFACE}&lt;br /&gt;
     fi&lt;br /&gt;
     sleep 1&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Now start or stop your service. Notice that bird will advertise the service once second after the service starts listening on its port, and stops advertising the address as soon as you stop the service.&lt;br /&gt;
&lt;br /&gt;
Be sure to tear down the dummy2 interface once you are done, since the next example is incompatible with it.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
== 2.2) DDoS migitation using s/RTBH ==&lt;br /&gt;
&lt;br /&gt;
Modify your export filter(s) so that a BGP community gets added whenever BIRD finds a single ip address belonging to your ip space:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
    if net ~ [ 192.168.0.0/23{32,32} ] then&lt;br /&gt;
         bgp_community.add((65000,42));&lt;br /&gt;
         accept;&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify the import filter of your peers to reject a prefix as soon as it finds the migitation community&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
     if ( net ~ [ 192.168.6.0/23{32,32} ] &amp;amp;&amp;amp; (65003,42) ~ bgp_community) then {&lt;br /&gt;
         dest = RTD_UNREACHABLE;&lt;br /&gt;
         accept;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Reload your configuration. Notice that nothing will change, since you have not tagged any prefix with the migitation community.&lt;br /&gt;
&lt;br /&gt;
Now, pick an ip address within your range, and ask one of your peers to run a ping towards this ip.&lt;br /&gt;
&lt;br /&gt;
To activate the migitation, add a static route for an ip address you want to protect, and reload your configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         route 192.168.1.1/32 blackhole;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To deactivate the migitation, remove the static route and reload your configuration.&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1353</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1353"/>
		<updated>2024-07-26T15:36:30Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* Anycast&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
== Expectations ==&lt;br /&gt;
This workshop will NOT be about internet routing. It will discuss the BGP protocol using a bunch of examples that can be applied to anything that runs BGP. These techniques can be applied on your LAN and over VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
* BIRD version 2.x, bash, netcat, ping, iproute2&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Every participant of the workshop needs their own AS number and a prefix. Either add your details to the sheet below, or ask [[User:R3boot|r3boot]] to add you.&lt;br /&gt;
&lt;br /&gt;
https://docs.nurd.space/sheet/#/2/sheet/edit/IacR4-gLFoetuyrli3JBhIMB/&lt;br /&gt;
&lt;br /&gt;
= Workshop =&lt;br /&gt;
== Setting up your local networks ==&lt;br /&gt;
&lt;br /&gt;
Create the two networks using iproute2:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 &lt;br /&gt;
 ip addr add 192.168.0.1/24 dev dummy0&lt;br /&gt;
 ip addr add 192.168.1.1/24 dev dummy1&lt;br /&gt;
 &lt;br /&gt;
 ip link set dummy0 up&lt;br /&gt;
 ip link set dummy1 up&lt;br /&gt;
&lt;br /&gt;
Enable ip forwarding&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup initial configuration of BIRD ==&lt;br /&gt;
&lt;br /&gt;
Configure BIRD to read network prefixes from all dummy devices. Do this by editing `/etc/bird/bird.conf`. Replace the current content with the content below. Be sure to replace X.X.X.X with your ip address.&lt;br /&gt;
&lt;br /&gt;
 router id X.X.X.X;&lt;br /&gt;
 &lt;br /&gt;
 protocol device { }&lt;br /&gt;
 &lt;br /&gt;
 protocol direct {&lt;br /&gt;
 	ipv4;&lt;br /&gt;
 	interface &amp;quot;dummy*&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol kernel {&lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 	      export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load and check setup ==&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
A correctly configured BIRD will show a routing table that looks like the one below:&lt;br /&gt;
&lt;br /&gt;
 BIRD 2.0.12 ready.&lt;br /&gt;
 Table master4:&lt;br /&gt;
 192.168.0.0/24       unicast [direct1 13:48:13.162] * (240)&lt;br /&gt;
 	dev dummy0&lt;br /&gt;
 192.168.1.0/24       unicast [direct1 13:48:18.015] * (240)&lt;br /&gt;
 	dev dummy1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doublecheck that BIRD is exporting routes to the kernel using &#039;&#039;&#039;ip route show protocol bird&#039;&#039;&#039;. It should look like the following:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.0/24 dev dummy0 proto bird scope link metric 32&lt;br /&gt;
 192.168.1.0/24 dev dummy1 proto bird scope link metric 32&lt;br /&gt;
&lt;br /&gt;
= 1) Basic BGP operations =&lt;br /&gt;
&lt;br /&gt;
== 1.1) Setting up your first BGP peering(s) ==&lt;br /&gt;
&lt;br /&gt;
For each participant you want to setup a peering for, configure a block like below. Replace X.X.X.X and AAAAA with your own details. Replace Y.Y.Y.Y and BBBBB with the details that are used by your peer. Add a descriptive name for PEERNAME.&lt;br /&gt;
&lt;br /&gt;
 protocol bgp PEERNAME {&lt;br /&gt;
 	local X.X.X.X as AAAAA;&lt;br /&gt;
 	neighbor Y.Y.Y.Y as BBBBB;&lt;br /&gt;
 &lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 		import all;&lt;br /&gt;
 		export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the peer configuration is added, load the configuration, and doublecheck if the peering is established.&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show protocols&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== 1.2) Filtering ==&lt;br /&gt;
&lt;br /&gt;
Modify the configuration and add an export filter for each peer.&lt;br /&gt;
&lt;br /&gt;
 filter export_to_PEERNAME {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23{23,24} ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, configure the peer to use the filters for both importing and exporting routes:&lt;br /&gt;
&lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import all;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Once you are done, reload the configuration and check your routes again&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== 1.3) Aggregation ==&lt;br /&gt;
&lt;br /&gt;
Setup a static route which contains both your subnets. Configure the subnet to send host unreachables whenever an ip does not respond to ARP requests.&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         ipv4;&lt;br /&gt;
         route 192.168.0.0/23 unreachable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tighten your export filter for all your peerings so that you only send your aggregated network:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.4) BGP hijacking ==&lt;br /&gt;
&lt;br /&gt;
Configure an extra dummy interface that is configured with an IP address belonging to some peer:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip addr add 192.168.2.66/32 dev dummy2&lt;br /&gt;
 ip link set dummy2 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify your export filters to send the hijacked prefix:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         if net ~ [ 192.168.2.66/32 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reload the configuration, and validate that the new route is set:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bgp&lt;br /&gt;
&lt;br /&gt;
=== 1.4.1) Preventing BGP hijacking ===&lt;br /&gt;
&lt;br /&gt;
Modify the import filter for your peer to only accept prefixes that belong to your peer, and use this filter to select routes imported from your peer:&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
         if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import filter import_from_alita;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Next, reload the configuration, restart the BGP peering and check the routing tables:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc restart alita&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done with this excercise, remove the dummy interface you used for hijacking.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
= 2) Advanced BGP tricks =&lt;br /&gt;
&lt;br /&gt;
== 2.1) BGP Anycast ==&lt;br /&gt;
&lt;br /&gt;
Configure a loopback interface for your service&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure a health check which manages the anycast ip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env bash&lt;br /&gt;
 &lt;br /&gt;
 INTERFACE=&#039;dummy2&#039;&lt;br /&gt;
 IP=&#039;192.168.0.42&#039;&lt;br /&gt;
 &lt;br /&gt;
 while :; do&lt;br /&gt;
     if nc -w1 -nz 127.0.0.1 22; then&lt;br /&gt;
         ip addr add ${IP}/32 dev ${INTERFACE} 2&amp;gt;/dev/null&lt;br /&gt;
     else&lt;br /&gt;
         ip addr flush dev ${INTERFACE}&lt;br /&gt;
     fi&lt;br /&gt;
     sleep 1&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Now start or stop your service. Notice that bird will advertise the service once second after the service starts listening on its port, and stops advertising the address as soon as you stop the service.&lt;br /&gt;
&lt;br /&gt;
Be sure to tear down the dummy2 interface once you are done, since the next example is incompatible with it.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
== 2.2) DDoS migitation using s/RTBH ==&lt;br /&gt;
&lt;br /&gt;
Modify your export filter(s) so that a BGP community gets added whenever BIRD finds a single ip address belonging to your ip space:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
    if net ~ [ 192.168.0.0/23{32,32} ] then&lt;br /&gt;
         bgp_community.add((65000,42));&lt;br /&gt;
         accept;&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify the import filter of your peers to reject a prefix as soon as it finds the migitation community&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
     if ( net ~ [ 192.168.6.0/23{32,32} ] &amp;amp;&amp;amp; (65003,42) ~ bgp_community) then {&lt;br /&gt;
         dest = RTD_UNREACHABLE;&lt;br /&gt;
         accept;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Reload your configuration. Notice that nothing will change, since you have not tagged any prefix with the migitation community.&lt;br /&gt;
&lt;br /&gt;
Now, pick an ip address within your range, and ask one of your peers to run a ping towards this ip.&lt;br /&gt;
&lt;br /&gt;
To activate the migitation, add a static route for an ip address you want to protect, and reload your configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         route 192.168.1.1/32 blackhole;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To deactivate the migitation, remove the static route and reload your configuration.&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1352</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1352"/>
		<updated>2024-07-26T15:34:03Z</updated>

		<summary type="html">&lt;p&gt;R3boot: /* Load and check setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* Anycast&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
== Expectations ==&lt;br /&gt;
This workshop will NOT be about internet routing. It will discuss the BGP protocol using a bunch of examples that can be applied to anything that runs BGP. These techniques can be applied on your LAN and over VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
* BIRD version 2.x, bash, netcat, ping, iproute2&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Every participant of the workshop needs their own AS number and a prefix. Either add your details to the sheet below, or ask [[User:R3boot|r3boot]] to add you.&lt;br /&gt;
&lt;br /&gt;
https://docs.nurd.space/sheet/#/2/sheet/edit/IacR4-gLFoetuyrli3JBhIMB/&lt;br /&gt;
&lt;br /&gt;
= Workshop =&lt;br /&gt;
== Setting up your local networks ==&lt;br /&gt;
&lt;br /&gt;
Create the two networks using iproute2:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 &lt;br /&gt;
 ip addr add 192.168.0.1/24 dev dummy0&lt;br /&gt;
 ip addr add 192.168.1.1/24 dev dummy1&lt;br /&gt;
 &lt;br /&gt;
 ip link set dummy0 up&lt;br /&gt;
 ip link set dummy1 up&lt;br /&gt;
&lt;br /&gt;
Enable ip forwarding&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup initial configuration of BIRD ==&lt;br /&gt;
&lt;br /&gt;
Configure BIRD to read network prefixes from all dummy devices. Do this by editing `/etc/bird/bird.conf`. Replace the current content with the content below. Be sure to replace X.X.X.X with your ip address.&lt;br /&gt;
&lt;br /&gt;
 router id X.X.X.X;&lt;br /&gt;
 &lt;br /&gt;
 protocol device { }&lt;br /&gt;
 &lt;br /&gt;
 protocol direct {&lt;br /&gt;
 	ipv4;&lt;br /&gt;
 	interface &amp;quot;dummy*&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol kernel {&lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 	      export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load and check setup ==&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
A correctly configured BIRD will show a routing table that looks like the one below:&lt;br /&gt;
&lt;br /&gt;
 BIRD 2.0.12 ready.&lt;br /&gt;
 Table master4:&lt;br /&gt;
 192.168.0.0/24       unicast [direct1 13:48:13.162] * (240)&lt;br /&gt;
 	dev dummy0&lt;br /&gt;
 192.168.1.0/24       unicast [direct1 13:48:18.015] * (240)&lt;br /&gt;
 	dev dummy1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doublecheck that BIRD is exporting routes to the kernel using &#039;&#039;&#039;ip route show protocol bird&#039;&#039;&#039;. It should look like the following:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.0/24 dev dummy0 proto bird scope link metric 32&lt;br /&gt;
 192.168.1.0/24 dev dummy1 proto bird scope link metric 32&lt;br /&gt;
&lt;br /&gt;
= Basic BGP operations =&lt;br /&gt;
&lt;br /&gt;
== Setting up your first BGP peering(s) ==&lt;br /&gt;
&lt;br /&gt;
For each participant you want to setup a peering for, configure a block like below. Replace X.X.X.X and AAAAA with your own details. Replace Y.Y.Y.Y and BBBBB with the details that are used by your peer. Add a descriptive name for PEERNAME.&lt;br /&gt;
&lt;br /&gt;
 protocol bgp PEERNAME {&lt;br /&gt;
 	local X.X.X.X as AAAAA;&lt;br /&gt;
 	neighbor Y.Y.Y.Y as BBBBB;&lt;br /&gt;
 &lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 		import all;&lt;br /&gt;
 		export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the peer configuration is added, load the configuration, and doublecheck if the peering is established.&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show protocols&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
Modify the configuration and add an export filter for each peer.&lt;br /&gt;
&lt;br /&gt;
 filter export_to_PEERNAME {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23{23,24} ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, configure the peer to use the filters for both importing and exporting routes:&lt;br /&gt;
&lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import all;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Once you are done, reload the configuration and check your routes again&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== Aggregation ==&lt;br /&gt;
&lt;br /&gt;
Setup a static route which contains both your subnets. Configure the subnet to send host unreachables whenever an ip does not respond to ARP requests.&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         ipv4;&lt;br /&gt;
         route 192.168.0.0/23 unreachable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tighten your export filter for all your peerings so that you only send your aggregated network:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BGP hijacking ==&lt;br /&gt;
&lt;br /&gt;
Configure an extra dummy interface that is configured with an IP address belonging to some peer:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip addr add 192.168.2.66/32 dev dummy2&lt;br /&gt;
 ip link set dummy2 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify your export filters to send the hijacked prefix:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         if net ~ [ 192.168.2.66/32 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reload the configuration, and validate that the new route is set:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bgp&lt;br /&gt;
&lt;br /&gt;
=== Preventing BGP hijacking ===&lt;br /&gt;
&lt;br /&gt;
Modify the import filter for your peer to only accept prefixes that belong to your peer, and use this filter to select routes imported from your peer:&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
         if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import filter import_from_alita;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Next, reload the configuration, restart the BGP peering and check the routing tables:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc restart alita&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done with this excercise, remove the dummy interface you used for hijacking.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
= Advanced BGP tricks =&lt;br /&gt;
&lt;br /&gt;
== BGP Anycast ==&lt;br /&gt;
&lt;br /&gt;
Configure a loopback interface for your service&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure a health check which manages the anycast ip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env bash&lt;br /&gt;
 &lt;br /&gt;
 INTERFACE=&#039;dummy2&#039;&lt;br /&gt;
 IP=&#039;192.168.0.42&#039;&lt;br /&gt;
 &lt;br /&gt;
 while :; do&lt;br /&gt;
     if nc -w1 -nz 127.0.0.1 22; then&lt;br /&gt;
         ip addr add ${IP}/32 dev ${INTERFACE} 2&amp;gt;/dev/null&lt;br /&gt;
     else&lt;br /&gt;
         ip addr flush dev ${INTERFACE}&lt;br /&gt;
     fi&lt;br /&gt;
     sleep 1&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Now start or stop your service. Notice that bird will advertise the service once second after the service starts listening on its port, and stops advertising the address as soon as you stop the service.&lt;br /&gt;
&lt;br /&gt;
Be sure to tear down the dummy2 interface once you are done, since the next example is incompatible with it.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
== DDoS migitation using s/RTBH ==&lt;br /&gt;
&lt;br /&gt;
Modify your export filter(s) so that a BGP community gets added whenever BIRD finds a single ip address belonging to your ip space:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
    if net ~ [ 192.168.0.0/23{32,32} ] then&lt;br /&gt;
         bgp_community.add((65000,42));&lt;br /&gt;
         accept;&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify the import filter of your peers to reject a prefix as soon as it finds the migitation community&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
     if ( net ~ [ 192.168.6.0/23{32,32} ] &amp;amp;&amp;amp; (65003,42) ~ bgp_community) then {&lt;br /&gt;
         dest = RTD_UNREACHABLE;&lt;br /&gt;
         accept;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Reload your configuration. Notice that nothing will change, since you have not tagged any prefix with the migitation community.&lt;br /&gt;
&lt;br /&gt;
Now, pick an ip address within your range, and ask one of your peers to run a ping towards this ip.&lt;br /&gt;
&lt;br /&gt;
To activate the migitation, add a static route for an ip address you want to protect, and reload your configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         route 192.168.1.1/32 blackhole;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To deactivate the migitation, remove the static route and reload your configuration.&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1351</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1351"/>
		<updated>2024-07-26T15:32:11Z</updated>

		<summary type="html">&lt;p&gt;R3boot: /* Registration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* Anycast&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
== Expectations ==&lt;br /&gt;
This workshop will NOT be about internet routing. It will discuss the BGP protocol using a bunch of examples that can be applied to anything that runs BGP. These techniques can be applied on your LAN and over VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
* BIRD version 2.x, bash, netcat, ping, iproute2&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Every participant of the workshop needs their own AS number and a prefix. Either add your details to the sheet below, or ask [[User:R3boot|r3boot]] to add you.&lt;br /&gt;
&lt;br /&gt;
https://docs.nurd.space/sheet/#/2/sheet/edit/IacR4-gLFoetuyrli3JBhIMB/&lt;br /&gt;
&lt;br /&gt;
= Workshop =&lt;br /&gt;
== Setting up your local networks ==&lt;br /&gt;
&lt;br /&gt;
Create the two networks using iproute2:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 &lt;br /&gt;
 ip addr add 192.168.0.1/24 dev dummy0&lt;br /&gt;
 ip addr add 192.168.1.1/24 dev dummy1&lt;br /&gt;
 &lt;br /&gt;
 ip link set dummy0 up&lt;br /&gt;
 ip link set dummy1 up&lt;br /&gt;
&lt;br /&gt;
Enable ip forwarding&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup initial configuration of BIRD ==&lt;br /&gt;
&lt;br /&gt;
Configure BIRD to read network prefixes from all dummy devices. Do this by editing `/etc/bird/bird.conf`. Replace the current content with the content below. Be sure to replace X.X.X.X with your ip address.&lt;br /&gt;
&lt;br /&gt;
 router id X.X.X.X;&lt;br /&gt;
 &lt;br /&gt;
 protocol device { }&lt;br /&gt;
 &lt;br /&gt;
 protocol direct {&lt;br /&gt;
 	ipv4;&lt;br /&gt;
 	interface &amp;quot;dummy*&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol kernel {&lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 	      export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load and check setup ==&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
A correctly configured BIRD will show a routing table that looks like the one below:&lt;br /&gt;
&lt;br /&gt;
 BIRD 2.0.12 ready.&lt;br /&gt;
 Table master4:&lt;br /&gt;
 192.168.0.0/24       unicast [direct1 13:48:13.162] * (240)&lt;br /&gt;
 	dev dummy0&lt;br /&gt;
 192.168.1.0/24       unicast [direct1 13:48:18.015] * (240)&lt;br /&gt;
 	dev dummy1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doublecheck that BIRD is exporting routes to the kernel using `ip route show protocol bird`. It should look like the following:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.0/24 dev dummy0 proto bird scope link metric 32&lt;br /&gt;
 192.168.1.0/24 dev dummy1 proto bird scope link metric 32&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Basic BGP operations =&lt;br /&gt;
&lt;br /&gt;
== Setting up your first BGP peering(s) ==&lt;br /&gt;
&lt;br /&gt;
For each participant you want to setup a peering for, configure a block like below. Replace X.X.X.X and AAAAA with your own details. Replace Y.Y.Y.Y and BBBBB with the details that are used by your peer. Add a descriptive name for PEERNAME.&lt;br /&gt;
&lt;br /&gt;
 protocol bgp PEERNAME {&lt;br /&gt;
 	local X.X.X.X as AAAAA;&lt;br /&gt;
 	neighbor Y.Y.Y.Y as BBBBB;&lt;br /&gt;
 &lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 		import all;&lt;br /&gt;
 		export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the peer configuration is added, load the configuration, and doublecheck if the peering is established.&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show protocols&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
Modify the configuration and add an export filter for each peer.&lt;br /&gt;
&lt;br /&gt;
 filter export_to_PEERNAME {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23{23,24} ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, configure the peer to use the filters for both importing and exporting routes:&lt;br /&gt;
&lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import all;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Once you are done, reload the configuration and check your routes again&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== Aggregation ==&lt;br /&gt;
&lt;br /&gt;
Setup a static route which contains both your subnets. Configure the subnet to send host unreachables whenever an ip does not respond to ARP requests.&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         ipv4;&lt;br /&gt;
         route 192.168.0.0/23 unreachable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tighten your export filter for all your peerings so that you only send your aggregated network:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BGP hijacking ==&lt;br /&gt;
&lt;br /&gt;
Configure an extra dummy interface that is configured with an IP address belonging to some peer:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip addr add 192.168.2.66/32 dev dummy2&lt;br /&gt;
 ip link set dummy2 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify your export filters to send the hijacked prefix:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         if net ~ [ 192.168.2.66/32 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reload the configuration, and validate that the new route is set:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bgp&lt;br /&gt;
&lt;br /&gt;
=== Preventing BGP hijacking ===&lt;br /&gt;
&lt;br /&gt;
Modify the import filter for your peer to only accept prefixes that belong to your peer, and use this filter to select routes imported from your peer:&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
         if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import filter import_from_alita;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Next, reload the configuration, restart the BGP peering and check the routing tables:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc restart alita&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done with this excercise, remove the dummy interface you used for hijacking.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
= Advanced BGP tricks =&lt;br /&gt;
&lt;br /&gt;
== BGP Anycast ==&lt;br /&gt;
&lt;br /&gt;
Configure a loopback interface for your service&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure a health check which manages the anycast ip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env bash&lt;br /&gt;
 &lt;br /&gt;
 INTERFACE=&#039;dummy2&#039;&lt;br /&gt;
 IP=&#039;192.168.0.42&#039;&lt;br /&gt;
 &lt;br /&gt;
 while :; do&lt;br /&gt;
     if nc -w1 -nz 127.0.0.1 22; then&lt;br /&gt;
         ip addr add ${IP}/32 dev ${INTERFACE} 2&amp;gt;/dev/null&lt;br /&gt;
     else&lt;br /&gt;
         ip addr flush dev ${INTERFACE}&lt;br /&gt;
     fi&lt;br /&gt;
     sleep 1&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Now start or stop your service. Notice that bird will advertise the service once second after the service starts listening on its port, and stops advertising the address as soon as you stop the service.&lt;br /&gt;
&lt;br /&gt;
Be sure to tear down the dummy2 interface once you are done, since the next example is incompatible with it.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
== DDoS migitation using s/RTBH ==&lt;br /&gt;
&lt;br /&gt;
Modify your export filter(s) so that a BGP community gets added whenever BIRD finds a single ip address belonging to your ip space:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
    if net ~ [ 192.168.0.0/23{32,32} ] then&lt;br /&gt;
         bgp_community.add((65000,42));&lt;br /&gt;
         accept;&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify the import filter of your peers to reject a prefix as soon as it finds the migitation community&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
     if ( net ~ [ 192.168.6.0/23{32,32} ] &amp;amp;&amp;amp; (65003,42) ~ bgp_community) then {&lt;br /&gt;
         dest = RTD_UNREACHABLE;&lt;br /&gt;
         accept;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Reload your configuration. Notice that nothing will change, since you have not tagged any prefix with the migitation community.&lt;br /&gt;
&lt;br /&gt;
Now, pick an ip address within your range, and ask one of your peers to run a ping towards this ip.&lt;br /&gt;
&lt;br /&gt;
To activate the migitation, add a static route for an ip address you want to protect, and reload your configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         route 192.168.1.1/32 blackhole;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To deactivate the migitation, remove the static route and reload your configuration.&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1350</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1350"/>
		<updated>2024-07-26T15:31:57Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* Anycast&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
== Expectations ==&lt;br /&gt;
This workshop will NOT be about internet routing. It will discuss the BGP protocol using a bunch of examples that can be applied to anything that runs BGP. These techniques can be applied on your LAN and over VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
* BIRD version 2.x, bash, netcat, ping, iproute2&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Every participant of the workshop needs their own AS number and a prefix. Either add your details to the sheet below, or ask [User:R3boot|r3boot] to add you.&lt;br /&gt;
&lt;br /&gt;
https://docs.nurd.space/sheet/#/2/sheet/edit/IacR4-gLFoetuyrli3JBhIMB/&lt;br /&gt;
&lt;br /&gt;
= Workshop =&lt;br /&gt;
== Setting up your local networks ==&lt;br /&gt;
&lt;br /&gt;
Create the two networks using iproute2:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 &lt;br /&gt;
 ip addr add 192.168.0.1/24 dev dummy0&lt;br /&gt;
 ip addr add 192.168.1.1/24 dev dummy1&lt;br /&gt;
 &lt;br /&gt;
 ip link set dummy0 up&lt;br /&gt;
 ip link set dummy1 up&lt;br /&gt;
&lt;br /&gt;
Enable ip forwarding&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup initial configuration of BIRD ==&lt;br /&gt;
&lt;br /&gt;
Configure BIRD to read network prefixes from all dummy devices. Do this by editing `/etc/bird/bird.conf`. Replace the current content with the content below. Be sure to replace X.X.X.X with your ip address.&lt;br /&gt;
&lt;br /&gt;
 router id X.X.X.X;&lt;br /&gt;
 &lt;br /&gt;
 protocol device { }&lt;br /&gt;
 &lt;br /&gt;
 protocol direct {&lt;br /&gt;
 	ipv4;&lt;br /&gt;
 	interface &amp;quot;dummy*&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol kernel {&lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 	      export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load and check setup ==&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
A correctly configured BIRD will show a routing table that looks like the one below:&lt;br /&gt;
&lt;br /&gt;
 BIRD 2.0.12 ready.&lt;br /&gt;
 Table master4:&lt;br /&gt;
 192.168.0.0/24       unicast [direct1 13:48:13.162] * (240)&lt;br /&gt;
 	dev dummy0&lt;br /&gt;
 192.168.1.0/24       unicast [direct1 13:48:18.015] * (240)&lt;br /&gt;
 	dev dummy1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doublecheck that BIRD is exporting routes to the kernel using `ip route show protocol bird`. It should look like the following:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.0/24 dev dummy0 proto bird scope link metric 32&lt;br /&gt;
 192.168.1.0/24 dev dummy1 proto bird scope link metric 32&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Basic BGP operations =&lt;br /&gt;
&lt;br /&gt;
== Setting up your first BGP peering(s) ==&lt;br /&gt;
&lt;br /&gt;
For each participant you want to setup a peering for, configure a block like below. Replace X.X.X.X and AAAAA with your own details. Replace Y.Y.Y.Y and BBBBB with the details that are used by your peer. Add a descriptive name for PEERNAME.&lt;br /&gt;
&lt;br /&gt;
 protocol bgp PEERNAME {&lt;br /&gt;
 	local X.X.X.X as AAAAA;&lt;br /&gt;
 	neighbor Y.Y.Y.Y as BBBBB;&lt;br /&gt;
 &lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 		import all;&lt;br /&gt;
 		export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the peer configuration is added, load the configuration, and doublecheck if the peering is established.&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show protocols&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
Modify the configuration and add an export filter for each peer.&lt;br /&gt;
&lt;br /&gt;
 filter export_to_PEERNAME {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23{23,24} ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, configure the peer to use the filters for both importing and exporting routes:&lt;br /&gt;
&lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import all;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Once you are done, reload the configuration and check your routes again&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== Aggregation ==&lt;br /&gt;
&lt;br /&gt;
Setup a static route which contains both your subnets. Configure the subnet to send host unreachables whenever an ip does not respond to ARP requests.&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         ipv4;&lt;br /&gt;
         route 192.168.0.0/23 unreachable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tighten your export filter for all your peerings so that you only send your aggregated network:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BGP hijacking ==&lt;br /&gt;
&lt;br /&gt;
Configure an extra dummy interface that is configured with an IP address belonging to some peer:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip addr add 192.168.2.66/32 dev dummy2&lt;br /&gt;
 ip link set dummy2 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify your export filters to send the hijacked prefix:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         if net ~ [ 192.168.2.66/32 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reload the configuration, and validate that the new route is set:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bgp&lt;br /&gt;
&lt;br /&gt;
=== Preventing BGP hijacking ===&lt;br /&gt;
&lt;br /&gt;
Modify the import filter for your peer to only accept prefixes that belong to your peer, and use this filter to select routes imported from your peer:&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
         if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import filter import_from_alita;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Next, reload the configuration, restart the BGP peering and check the routing tables:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc restart alita&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done with this excercise, remove the dummy interface you used for hijacking.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
= Advanced BGP tricks =&lt;br /&gt;
&lt;br /&gt;
== BGP Anycast ==&lt;br /&gt;
&lt;br /&gt;
Configure a loopback interface for your service&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure a health check which manages the anycast ip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env bash&lt;br /&gt;
 &lt;br /&gt;
 INTERFACE=&#039;dummy2&#039;&lt;br /&gt;
 IP=&#039;192.168.0.42&#039;&lt;br /&gt;
 &lt;br /&gt;
 while :; do&lt;br /&gt;
     if nc -w1 -nz 127.0.0.1 22; then&lt;br /&gt;
         ip addr add ${IP}/32 dev ${INTERFACE} 2&amp;gt;/dev/null&lt;br /&gt;
     else&lt;br /&gt;
         ip addr flush dev ${INTERFACE}&lt;br /&gt;
     fi&lt;br /&gt;
     sleep 1&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Now start or stop your service. Notice that bird will advertise the service once second after the service starts listening on its port, and stops advertising the address as soon as you stop the service.&lt;br /&gt;
&lt;br /&gt;
Be sure to tear down the dummy2 interface once you are done, since the next example is incompatible with it.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
== DDoS migitation using s/RTBH ==&lt;br /&gt;
&lt;br /&gt;
Modify your export filter(s) so that a BGP community gets added whenever BIRD finds a single ip address belonging to your ip space:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
    if net ~ [ 192.168.0.0/23{32,32} ] then&lt;br /&gt;
         bgp_community.add((65000,42));&lt;br /&gt;
         accept;&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify the import filter of your peers to reject a prefix as soon as it finds the migitation community&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
     if ( net ~ [ 192.168.6.0/23{32,32} ] &amp;amp;&amp;amp; (65003,42) ~ bgp_community) then {&lt;br /&gt;
         dest = RTD_UNREACHABLE;&lt;br /&gt;
         accept;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Reload your configuration. Notice that nothing will change, since you have not tagged any prefix with the migitation community.&lt;br /&gt;
&lt;br /&gt;
Now, pick an ip address within your range, and ask one of your peers to run a ping towards this ip.&lt;br /&gt;
&lt;br /&gt;
To activate the migitation, add a static route for an ip address you want to protect, and reload your configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         route 192.168.1.1/32 blackhole;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To deactivate the migitation, remove the static route and reload your configuration.&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=Schedule&amp;diff=1349</id>
		<title>Schedule</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=Schedule&amp;diff=1349"/>
		<updated>2024-07-26T15:30:03Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Timed events ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Date &amp;amp; Time !! Length !! Name !! Contact Person !! Village/Location&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 10:00 || ? || Home Automation with Home Assistant || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 14:00 || 2h || Hotplate [[Badge]] soldering workshop || [[User:The0|The0]] || HackCenter&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - TBA || ? || Kubernetes 4 Home || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 14:00 || 2h || getting started with [[KiCAD]] walkthrough || [[User:The0|The0]] || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 15:00 || ca. 20 Min. || [[Startup | 10 Gründe, warum du kein Start-Up gründen solltest (Grund 7 wird dich überraschen!)]] || [[User:Jmrtr|jm_rtr]] || Conference Room &amp;quot;Rittersall&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 16:30 || 1h || From Bits to Qbits: How to use Atoms and Silicon-Carbide for Quantum Networks || Dirk/Guest || rittersall&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 14:00 || ? || Kiffel-Meetup || [[User:Jmrtr|jm_rtr]] || [[Villages/Hacksaar|Hacksaar-Lounge]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 15:00 || 2h || Wanderung op eng Buergruine an der Géigend || rice || In front of Stage&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 16:00 || 3h || Programming STM32 on register level || casartar || rittersall&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07.26 - 17:00 || 30 Min. || Talk: Drachen- und Gleitschirmfliegen || Fredi || [[Villages/Hacksaar|hacksaar]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 19:30 || 2h || [[BGP_Workshop|BGP routing workshop]] || [[User:R3boot|&amp;quot;Lex&amp;quot; / r3boot]] || HackCenter&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-27 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| TBD ||  || [[Privacy Preserving Biometric Two-Cheek Identification|Privacy Preserving Biometric Two-Cheek Identification]] || ZZEPPOSS || TBD&lt;br /&gt;
|-&lt;br /&gt;
| TBD ||  || [[Geschichten aus dem Fahrgastbeirat|Geschichten aus dem Fahrgastbeirat]] || [[User:Jmrtr|jm_rtr]] || TBD&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== On Demand ==&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Name !! Contact Person !! Village/Location&lt;br /&gt;
|-&lt;br /&gt;
| [[Massage]] || [[User:Gunstick|Gunstick]] || ask at Infodesk or syn2cat table in hackcenter&lt;br /&gt;
|-&lt;br /&gt;
| [[Badge]] soldering || [[User:The0|The0]] || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSourceVaping]] || iPontus || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[ProfessionalTentRepair]] || [[User:Bigmacfoobar|bigmacfoobar]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BOS | Einführung in den BOS-Sprechfunk]] || [[User:Jmrtr|jm_rtr]] || [[Villages/Hacksaar | Haxokom @ Hacksaar]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Soldering USB-C cable tester]] || [[casartar]] || [[Villages/Hacksaar]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | The trinity of OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD meow meow]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Faith based OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD trivia quiz]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Falun OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD Gong]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD Guru meditation]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Yin and Yang of OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Functional Fallacy with OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | The world according to OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Holy OpenSCAD scripture]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Myths, Madness and Mayhem:OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD in large, friendly letters]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | A demagogue&#039;s view on the history of OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Design and implementation of the functional INTERCAL programming language]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for crash test idiots]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Never mind OpenSCAD - MSPAINT everything]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD OS with embedded EMACS I]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD OS with embedded EMACS IV]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for vegetarians]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for veteranarians]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for vegetables]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for veterans]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for vegeteranarianseblerans]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | The Good, The Bad and The OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stage ==&lt;br /&gt;
&lt;br /&gt;
Stage is available from 10am until 1am.&lt;br /&gt;
&lt;br /&gt;
General: Please keep Volume also of your music devices moderate during sleeping times 1am to 10am.&lt;br /&gt;
&lt;br /&gt;
Update&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Volume Regulations:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
9:00 - 12:00 fixed: breakfast low background music&lt;br /&gt;
&lt;br /&gt;
12:00 - 19:00 only low Volume background music&lt;br /&gt;
&lt;br /&gt;
19:00 - 01:00 volume may raise during the evening&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No Performances between 10am and 4pm (10:00 - 16:00)&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to post your handwritten performance also on the infobard at the hackcenter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Date &amp;amp; Time !! Name !! What !! Type&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 19:00-21:00 || Gunstick || Atari Underground Chiptune Resistance || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 21:00-23:00 || MADTIXX || Eröffnungsball / Opening Dance Gala || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 18:00-20:00 || golo ||  Surf-Punk || Musician&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 20:00-22:00 || mase ||  Hardcore-Punk || Musician&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 22:00-00:00 || Hacksaar Veranstaltungsgesellschaft ||  punk, deutschpunk, postpunk, elektropunk, liedermaching, helge || Music collectiv&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 21:00-23:00 || Aluburkaseinbruder|| dnb || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 23:00-01:00 || l33tc0re || Techno, hard Techno ... || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-27 - 22:00-0:00 || MADTIXX || Gentle Hard Dance FuckUp || DJ&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=Schedule&amp;diff=1348</id>
		<title>Schedule</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=Schedule&amp;diff=1348"/>
		<updated>2024-07-26T15:29:46Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Timed events ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Date &amp;amp; Time !! Length !! Name !! Contact Person !! Village/Location&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 10:00 || ? || Home Automation with Home Assistant || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 14:00 || 2h || Hotplate [[Badge]] soldering workshop || [[User:The0|The0]] || HackCenter&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - TBA || ? || Kubernetes 4 Home || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 14:00 || 2h || getting started with [[KiCAD]] walkthrough || [[User:The0|The0]] || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 15:00 || ca. 20 Min. || [[Startup | 10 Gründe, warum du kein Start-Up gründen solltest (Grund 7 wird dich überraschen!)]] || [[User:Jmrtr|jm_rtr]] || Conference Room &amp;quot;Rittersall&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 16:30 || 1h || From Bits to Qbits: How to use Atoms and Silicon-Carbide for Quantum Networks || Dirk/Guest || rittersall&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 14:00 || ? || Kiffel-Meetup || [[User:Jmrtr|jm_rtr]] || [[Villages/Hacksaar|Hacksaar-Lounge]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 15:00 || 2h || Wanderung op eng Buergruine an der Géigend || rice || In front of Stage&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 16:00 || 3h || Programming STM32 on register level || casartar || rittersall&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07.26 - 17:00 || 30 Min. || Talk: Drachen- und Gleitschirmfliegen || Fredi || [[Villages/Hacksaar|hacksaar]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 19:30 || 1.5h~2h || [[BGP_Workshop|BGP routing workshop]] || [[User:R3boot|&amp;quot;Lex&amp;quot; / r3boot]] || HackCenter&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-27 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| TBD ||  || [[Privacy Preserving Biometric Two-Cheek Identification|Privacy Preserving Biometric Two-Cheek Identification]] || ZZEPPOSS || TBD&lt;br /&gt;
|-&lt;br /&gt;
| TBD ||  || [[Geschichten aus dem Fahrgastbeirat|Geschichten aus dem Fahrgastbeirat]] || [[User:Jmrtr|jm_rtr]] || TBD&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== On Demand ==&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Name !! Contact Person !! Village/Location&lt;br /&gt;
|-&lt;br /&gt;
| [[Massage]] || [[User:Gunstick|Gunstick]] || ask at Infodesk or syn2cat table in hackcenter&lt;br /&gt;
|-&lt;br /&gt;
| [[Badge]] soldering || [[User:The0|The0]] || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSourceVaping]] || iPontus || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[ProfessionalTentRepair]] || [[User:Bigmacfoobar|bigmacfoobar]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BOS | Einführung in den BOS-Sprechfunk]] || [[User:Jmrtr|jm_rtr]] || [[Villages/Hacksaar | Haxokom @ Hacksaar]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Soldering USB-C cable tester]] || [[casartar]] || [[Villages/Hacksaar]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | The trinity of OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD meow meow]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Faith based OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD trivia quiz]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Falun OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD Gong]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD Guru meditation]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Yin and Yang of OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Functional Fallacy with OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | The world according to OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Holy OpenSCAD scripture]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Myths, Madness and Mayhem:OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD in large, friendly letters]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | A demagogue&#039;s view on the history of OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Design and implementation of the functional INTERCAL programming language]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for crash test idiots]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | Never mind OpenSCAD - MSPAINT everything]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD OS with embedded EMACS I]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD OS with embedded EMACS IV]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for vegetarians]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for veteranarians]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for vegetables]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for veterans]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | OpenSCAD for vegeteranarianseblerans]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSCAD | The Good, The Bad and The OpenSCAD]] || [[User:BusyBee]] || [[Villages/Idiopolis|Idiopolis]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stage ==&lt;br /&gt;
&lt;br /&gt;
Stage is available from 10am until 1am.&lt;br /&gt;
&lt;br /&gt;
General: Please keep Volume also of your music devices moderate during sleeping times 1am to 10am.&lt;br /&gt;
&lt;br /&gt;
Update&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Volume Regulations:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
9:00 - 12:00 fixed: breakfast low background music&lt;br /&gt;
&lt;br /&gt;
12:00 - 19:00 only low Volume background music&lt;br /&gt;
&lt;br /&gt;
19:00 - 01:00 volume may raise during the evening&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No Performances between 10am and 4pm (10:00 - 16:00)&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to post your handwritten performance also on the infobard at the hackcenter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Date &amp;amp; Time !! Name !! What !! Type&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 19:00-21:00 || Gunstick || Atari Underground Chiptune Resistance || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 21:00-23:00 || MADTIXX || Eröffnungsball / Opening Dance Gala || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 18:00-20:00 || golo ||  Surf-Punk || Musician&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 20:00-22:00 || mase ||  Hardcore-Punk || Musician&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 22:00-00:00 || Hacksaar Veranstaltungsgesellschaft ||  punk, deutschpunk, postpunk, elektropunk, liedermaching, helge || Music collectiv&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 21:00-23:00 || Aluburkaseinbruder|| dnb || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 23:00-01:00 || l33tc0re || Techno, hard Techno ... || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-27 - 22:00-0:00 || MADTIXX || Gentle Hard Dance FuckUp || DJ&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1347</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1347"/>
		<updated>2024-07-26T15:09:47Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* Anycast&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
== Expectations ==&lt;br /&gt;
This workshop will NOT be about internet routing. It will discuss the BGP protocol using a bunch of examples that can be applied to anything that runs BGP. These techniques can be applied on your LAN and over VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
* BIRD version 2.x, bash, netcat, ping, iproute2&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Every participant of the workshop will receive a temporarily and private AS number and two private networks. During the workshop, we will create an &amp;quot;Internet&amp;quot; with these details. In order to register, ping r3boot on IRC or send an email to r3boot at r3blog dot nl, and I will add you to the list below:&lt;br /&gt;
&lt;br /&gt;
https://docs.nurd.space/sheet/#/2/sheet/edit/IacR4-gLFoetuyrli3JBhIMB/&lt;br /&gt;
&lt;br /&gt;
= Workshop =&lt;br /&gt;
== Setting up your local networks ==&lt;br /&gt;
&lt;br /&gt;
Create the two networks using iproute2:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 &lt;br /&gt;
 ip addr add 192.168.0.1/24 dev dummy0&lt;br /&gt;
 ip addr add 192.168.1.1/24 dev dummy1&lt;br /&gt;
 &lt;br /&gt;
 ip link set dummy0 up&lt;br /&gt;
 ip link set dummy1 up&lt;br /&gt;
&lt;br /&gt;
Enable ip forwarding&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup initial configuration of BIRD ==&lt;br /&gt;
&lt;br /&gt;
Configure BIRD to read network prefixes from all dummy devices. Do this by editing `/etc/bird/bird.conf`. Replace the current content with the content below. Be sure to replace X.X.X.X with your ip address.&lt;br /&gt;
&lt;br /&gt;
 router id X.X.X.X;&lt;br /&gt;
 &lt;br /&gt;
 protocol device { }&lt;br /&gt;
 &lt;br /&gt;
 protocol direct {&lt;br /&gt;
 	ipv4;&lt;br /&gt;
 	interface &amp;quot;dummy*&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol kernel {&lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 	      export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load and check setup ==&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
A correctly configured BIRD will show a routing table that looks like the one below:&lt;br /&gt;
&lt;br /&gt;
 BIRD 2.0.12 ready.&lt;br /&gt;
 Table master4:&lt;br /&gt;
 192.168.0.0/24       unicast [direct1 13:48:13.162] * (240)&lt;br /&gt;
 	dev dummy0&lt;br /&gt;
 192.168.1.0/24       unicast [direct1 13:48:18.015] * (240)&lt;br /&gt;
 	dev dummy1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doublecheck that BIRD is exporting routes to the kernel using `ip route show protocol bird`. It should look like the following:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.0/24 dev dummy0 proto bird scope link metric 32&lt;br /&gt;
 192.168.1.0/24 dev dummy1 proto bird scope link metric 32&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Basic BGP operations =&lt;br /&gt;
&lt;br /&gt;
== Setting up your first BGP peering(s) ==&lt;br /&gt;
&lt;br /&gt;
For each participant you want to setup a peering for, configure a block like below. Replace X.X.X.X and AAAAA with your own details. Replace Y.Y.Y.Y and BBBBB with the details that are used by your peer. Add a descriptive name for PEERNAME.&lt;br /&gt;
&lt;br /&gt;
 protocol bgp PEERNAME {&lt;br /&gt;
 	local X.X.X.X as AAAAA;&lt;br /&gt;
 	neighbor Y.Y.Y.Y as BBBBB;&lt;br /&gt;
 &lt;br /&gt;
 	ipv4 {&lt;br /&gt;
 		import all;&lt;br /&gt;
 		export all;&lt;br /&gt;
 	};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the peer configuration is added, load the configuration, and doublecheck if the peering is established.&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show protocols&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
Modify the configuration and add an export filter for each peer.&lt;br /&gt;
&lt;br /&gt;
 filter export_to_PEERNAME {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23{23,24} ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, configure the peer to use the filters for both importing and exporting routes:&lt;br /&gt;
&lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import all;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Once you are done, reload the configuration and check your routes again&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bird&lt;br /&gt;
&lt;br /&gt;
== Aggregation ==&lt;br /&gt;
&lt;br /&gt;
Setup a static route which contains both your subnets. Configure the subnet to send host unreachables whenever an ip does not respond to ARP requests.&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         ipv4;&lt;br /&gt;
         route 192.168.0.0/23 unreachable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tighten your export filter for all your peerings so that you only send your aggregated network:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BGP hijacking ==&lt;br /&gt;
&lt;br /&gt;
Configure an extra dummy interface that is configured with an IP address belonging to some peer:&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
 ip addr add 192.168.2.66/32 dev dummy2&lt;br /&gt;
 ip link set dummy2 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify your export filters to send the hijacked prefix:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
         if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
         if net ~ [ 192.168.2.66/32 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reload the configuration, and validate that the new route is set:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc show route&lt;br /&gt;
 ip route show protocol bgp&lt;br /&gt;
&lt;br /&gt;
=== Preventing BGP hijacking ===&lt;br /&gt;
&lt;br /&gt;
Modify the import filter for your peer to only accept prefixes that belong to your peer, and use this filter to select routes imported from your peer:&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
         if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
         reject;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 protocol bgp alita {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         ipv4 {&lt;br /&gt;
                 import filter import_from_alita;&lt;br /&gt;
                 export filter export_to_alita;&lt;br /&gt;
         };&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Next, reload the configuration, restart the BGP peering and check the routing tables:&lt;br /&gt;
&lt;br /&gt;
 birdc configure&lt;br /&gt;
 birdc restart alita&lt;br /&gt;
 birdc show route&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done with this excercise, remove the dummy interface you used for hijacking.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
= Advanced BGP tricks =&lt;br /&gt;
&lt;br /&gt;
== BGP Anycast ==&lt;br /&gt;
&lt;br /&gt;
Configure a loopback interface for your service&lt;br /&gt;
&lt;br /&gt;
 ip link add type dummy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure a health check which manages the anycast ip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env bash&lt;br /&gt;
 &lt;br /&gt;
 INTERFACE=&#039;dummy2&#039;&lt;br /&gt;
 IP=&#039;192.168.0.42&#039;&lt;br /&gt;
 &lt;br /&gt;
 while :; do&lt;br /&gt;
     if nc -w1 -nz 127.0.0.1 22; then&lt;br /&gt;
         ip addr add ${IP}/32 dev ${INTERFACE} 2&amp;gt;/dev/null&lt;br /&gt;
     else&lt;br /&gt;
         ip addr flush dev ${INTERFACE}&lt;br /&gt;
     fi&lt;br /&gt;
     sleep 1&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Now start or stop your service. Notice that bird will advertise the service once second after the service starts listening on its port, and stops advertising the address as soon as you stop the service.&lt;br /&gt;
&lt;br /&gt;
Be sure to tear down the dummy2 interface once you are done, since the next example is incompatible with it.&lt;br /&gt;
&lt;br /&gt;
 ip link del dummy2&lt;br /&gt;
&lt;br /&gt;
== DDoS migitation using s/RTBH ==&lt;br /&gt;
&lt;br /&gt;
Modify your export filter(s) so that a BGP community gets added whenever BIRD finds a single ip address belonging to your ip space:&lt;br /&gt;
&lt;br /&gt;
 filter export_to_alita {&lt;br /&gt;
    if net ~ [ 192.168.0.0/23{32,32} ] then&lt;br /&gt;
         bgp_community.add((65000,42));&lt;br /&gt;
         accept;&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.0.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify the import filter of your peers to reject a prefix as soon as it finds the migitation community&lt;br /&gt;
&lt;br /&gt;
 filter import_from_alita {&lt;br /&gt;
     if ( net ~ [ 192.168.6.0/23{32,32} ] &amp;amp;&amp;amp; (65003,42) ~ bgp_community) then {&lt;br /&gt;
         dest = RTD_UNREACHABLE;&lt;br /&gt;
         accept;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
     if net ~ [ 192.168.6.0/23 ] then accept;&lt;br /&gt;
 &lt;br /&gt;
     reject;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Reload your configuration. Notice that nothing will change, since you have not tagged any prefix with the migitation community.&lt;br /&gt;
&lt;br /&gt;
Now, pick an ip address within your range, and ask one of your peers to run a ping towards this ip.&lt;br /&gt;
&lt;br /&gt;
To activate the migitation, add a static route for an ip address you want to protect, and reload your configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol static my_network {&lt;br /&gt;
         [...]&lt;br /&gt;
 &lt;br /&gt;
         route 192.168.1.1/32 blackhole;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To deactivate the migitation, remove the static route and reload your configuration.&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1346</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1346"/>
		<updated>2024-07-26T11:25:34Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT! You need to register for this workshop (see below), since it requires planning and preparation in advance.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
Due to the amount of configuration needed multiplied by the number of participants, there might be more then one workshop, or the workshop will be split up into a single talk and multiple workshop parts.&lt;br /&gt;
&lt;br /&gt;
=== Registration ===&lt;br /&gt;
Every participant of the workshop will receive a temporarily and private AS number and two private networks. During the workshop, we will create an &amp;quot;Internet&amp;quot; with these details. In order to register, ping r3boot on IRC or send an email to r3boot at r3blog dot nl, and I will add you to the list below:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| Neighbor&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| IP&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| AS&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Prefix&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 1&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 2&lt;br /&gt;
|-&lt;br /&gt;
| r3boot&lt;br /&gt;
|&lt;br /&gt;
| 65001&lt;br /&gt;
| 192.168.0.0/23&lt;br /&gt;
| 192.168.0.0/24&lt;br /&gt;
| 192.168.1.0/24&lt;br /&gt;
|-&lt;br /&gt;
| Marden&lt;br /&gt;
|&lt;br /&gt;
| 65001&lt;br /&gt;
| 192.168.2.0/23&lt;br /&gt;
| 192.168.2.0/24&lt;br /&gt;
| 192.168.3.0/24&lt;br /&gt;
|-&lt;br /&gt;
| Marden&lt;br /&gt;
|&lt;br /&gt;
| 65002&lt;br /&gt;
| 192.168.4.0/23&lt;br /&gt;
| 192.168.4.0/24&lt;br /&gt;
| 192.168.5.0/24&lt;br /&gt;
|-&lt;br /&gt;
| r3boot&lt;br /&gt;
|&lt;br /&gt;
| 65003&lt;br /&gt;
| 192.168.6.0/23&lt;br /&gt;
| 192.168.6.0/24&lt;br /&gt;
| 192.168.7.0/24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Router requirements ===&lt;br /&gt;
TBA&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=Network&amp;diff=1294</id>
		<title>Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=Network&amp;diff=1294"/>
		<updated>2024-07-24T14:35:38Z</updated>

		<summary type="html">&lt;p&gt;R3boot: /* FTP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Internet connection ==&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
=== SSIDs ===&lt;br /&gt;
* HaxoGreen_2024_NOC&lt;br /&gt;
* HaxoGreen_2024&lt;br /&gt;
** WPA2 Personal&lt;br /&gt;
** Password: &amp;lt;code&amp;gt;h4x0gr33n2024&amp;lt;/code&amp;gt;&lt;br /&gt;
=== wpa_supplicant ===&lt;br /&gt;
&lt;br /&gt;
 network={&lt;br /&gt;
  ssid=&amp;quot;HaxoGreen_2024&amp;quot;&lt;br /&gt;
  psk=&amp;quot;h4x0gr33n2024&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Wired ==&lt;br /&gt;
We are providing gigabit ethernet at the two datenklos and on the hackcenter desks.&lt;br /&gt;
&lt;br /&gt;
=== Static DHCP lease ===&lt;br /&gt;
If you want to provide a service to the outside world or need an IP address which doesn&#039;t change, you can get a static DHCP lease. Please contact noc[_at_]haxogreen.lu with a MAC address and we&#039;ll set you up. Also you don&#039;t need to wait until you&#039;re on site, just throw a MAC at us and your personal IP will be waiting for you when you arrive.&lt;br /&gt;
&lt;br /&gt;
=== Colocation ===&lt;br /&gt;
You can bring a server and colocate it in the NOC. If you want to do that please send us a MAC address and leave it on DHCP.&lt;br /&gt;
&lt;br /&gt;
== FTP ==&lt;br /&gt;
There is a camp FTP server.&lt;br /&gt;
&lt;br /&gt;
* Host: &amp;lt;code&amp;gt;ftp.camp.haxogreen.lu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Protocol:&lt;br /&gt;
** &amp;lt;code&amp;gt;ftp/24&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;sftp/2024&amp;lt;/code&amp;gt;&lt;br /&gt;
* Login: &amp;lt;code&amp;gt;haxogreen/haxogreen&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two folders&lt;br /&gt;
** &amp;lt;code&amp;gt;camp_photos&amp;lt;/code&amp;gt;: upload your pictures for sharing with other camp attendees&lt;br /&gt;
** &amp;lt;code&amp;gt;other&amp;lt;/code&amp;gt;: upload whatever you want&lt;br /&gt;
* Restrictions&lt;br /&gt;
** no delete permitted in photos folder (shared with everybody), ping Infodesk if removal is needed&lt;br /&gt;
** only accessible within the camp&lt;br /&gt;
** only upload stuff that you have permission to&lt;br /&gt;
&lt;br /&gt;
=== Party FTP server ===&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
     ▓▓&lt;br /&gt;
 ░░  ▓▓▓▓░░&lt;br /&gt;
   ░░▒▒▓▓░░                                                                                                ▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
 ░░▓▓░░▓▓                                                                                                ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
       ░░▓▓                                                                                            ▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
         ▒▒▓▓                                                                                          ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
       ░░  ▒▒▒▒▒▒                                              ░░    ░░                                ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
       ▓▓▒▒  ▓▓▒▒▒▒                                            ▓▓████                                  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
       ▓▓▓▓▒▒  ▓▓░░▓▓                                          ██████                                  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
       ░░▓▓▓▓▒▒░░▓▓░░▓▓▒▒░░                  ▓▓▓▓░░░░          ██████▒▒                                ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
         ▒▒▓▓▒▒░░▓▓██████████        ░░  ▓▓▒▒      ▓▓▒▒    ████████████████                            ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
         ▒▒▓▓██████████████████      ▒▒░░▓▓▒▒      ▓▓▒▒    ████████████▒▒  ░░░░                        ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
         ▓▓▓▓██▓▓          ████▓▓    ▓▓░░▓▓▓▓▒▒                ▒▒██████      ██████                    ▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
         ▒▒██████          ██████                              ░░██████      ██████▓▓        ▓▓████▓▓    ▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
         ░░██████          ██████                            ░░  ██████      ▓▓██████        ██████      ▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
           ██████        ░░██▓▓▒▒  ░░████████▒▒    ░░▒▒  ▒▒██▓▓  ██████      ░░██████      ██████▓▓      ▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
           ████████░░▒▒▓▓██████  ▓▓████████████▒▒  ████░░██████  ██████        ██████      ██████        ▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
           ▓▓██████████████▓▓  ▓▓████        ████  ██████▒▒      ██████          ████    ▓▓████▒▒        ▓▓▓▓▓▓▓▓░░&lt;br /&gt;
           ░░████████▒▒░░                    ████  ██████        ████████  ▒▒    ██████░░██████          ▓▓▓▓▓▓▓▓&lt;br /&gt;
             ██████                  ▒▒▓▓████████  ▓▓████        ▓▓██████████    ██████▓▓████▓▓          ▒▒▓▓▓▓&lt;br /&gt;
             ██████              ██████████▓▓████  ██████          ██████████    ▓▓██████████              ▓▓&lt;br /&gt;
             ▓▓████▒▒          ██████        ████    ████                        ▒▒████████░░              ▒▒&lt;br /&gt;
             ▒▒████▓▓          ██████        ████  ░░████                          ██████▓▓&lt;br /&gt;
               ██████          ██████▓▓██████████    ████░░                      ░░██████              ░░  ░░&lt;br /&gt;
                                 ██████████▓▓████                          ██▓▓▓▓██████▓▓          ░░▓▓▓▓▓▓▓▓▓▓░░&lt;br /&gt;
                                   ░░██░░                                  ████████████            ▓▓▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
                                                                           ██████████▒▒          ▓▓▓▓░░▓▓░░▓▓▓▓▓▓▓▓&lt;br /&gt;
                                                                           ░░▓▓▓▓▓▓░░            ▓▓▒▒▓▓▓▓▓▓░░▓▓▓▓▓▓&lt;br /&gt;
                                                                                                 ▓▓▒▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓&lt;br /&gt;
                                                                                                 ▓▓▓▓▓▓▒▒▓▓░░▓▓▓▓▓▓&lt;br /&gt;
                                                                                                 ▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓&lt;br /&gt;
                                                                                                 ▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓&lt;br /&gt;
                                                                                                   ▒▒▓▓▓▓▓▓▓▓▓▓▓▓ &lt;br /&gt;
 &lt;br /&gt;
                                                                                               -=[ like its 1997 ]=-&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Visit 151.216.41.47 with FTP, HTTP or RSYNC.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
Graph ALL the things at [https://mon.camp.haxogreen.lu/dashboards Dashboard ↗️]&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1215</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1215"/>
		<updated>2024-07-22T07:28:17Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT! You need to register for this workshop (see below), since it requires planning and preparation in advance.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
Due to the amount of configuration needed multiplied by the number of participants, there might be more then one workshop, or the workshop will be split up into a single talk and multiple workshop parts.&lt;br /&gt;
&lt;br /&gt;
=== Registration ===&lt;br /&gt;
Every participant of the workshop will receive a temporarily and private AS number and two private networks. During the workshop, we will create an &amp;quot;Internet&amp;quot; with these details. In order to register, ping r3boot on IRC or send an email to r3boot at r3blog dot nl, and I will add you to the list below:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| Neighbor&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| IP&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| AS&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Prefix&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 1&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 2&lt;br /&gt;
|-&lt;br /&gt;
| r3boot&lt;br /&gt;
|&lt;br /&gt;
| 65001&lt;br /&gt;
| 192.168.0.0/23&lt;br /&gt;
| 192.168.0.0/24&lt;br /&gt;
| 192.168.1.0/24&lt;br /&gt;
|-&lt;br /&gt;
| Marden&lt;br /&gt;
|&lt;br /&gt;
| 65001&lt;br /&gt;
| 192.168.2.0/23&lt;br /&gt;
| 192.168.2.0/24&lt;br /&gt;
| 192.168.3.0/24&lt;br /&gt;
|-&lt;br /&gt;
| Marden&lt;br /&gt;
|&lt;br /&gt;
| 65002&lt;br /&gt;
| 192.168.4.0/23&lt;br /&gt;
| 192.168.4.0/24&lt;br /&gt;
| 192.168.5.0/24&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Router requirements ===&lt;br /&gt;
TBA&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=Schedule&amp;diff=1178</id>
		<title>Schedule</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=Schedule&amp;diff=1178"/>
		<updated>2024-07-15T11:54:26Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Timed events&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Date &amp;amp; Time !! Length !! Name !! Contact Person !! Village/Location&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 10:00 || ? || Home Automation with Home Assistant || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 14:00 || 2h || Hotplate [[Badge]] soldering workshop || The0 || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 10:00 || ? || Kubernetes 4 Home || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 14:00 || 2h || getting started with [[KiCAD]] walkthrough || The0 || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-?? - ??:?? || 2h || [[BGP_Workshop|BGP routing workshop]] (registration required) || [[User:R3boot|&amp;quot;Lex&amp;quot; / r3boot]] || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 10:00 || ? || Running your own server @ home || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-27 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On Demand&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Name !! Contact Person !! Village/Location&lt;br /&gt;
|-&lt;br /&gt;
| [[Massage]] || [[User:Gunstick|Gunstick]] || ask at Infodesk or syn2cat table in hackcenter&lt;br /&gt;
|-&lt;br /&gt;
| [[Badge]] soldering || [[User:The0|The0]] || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stage&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Date &amp;amp; Time !! Name !! Type&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 20:00-22:00 || MADTIXX || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 20:00-20:00 || 24Hrs of AI generated hardstyle-mongolian throatsinging-polka-reggae fusion mahem &amp;amp;brvbar; TBA || AI &amp;amp;brvbar; TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 20:00-22:00 || Aluburkaseinbruder|| DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 22:00-0:00 || l33tc0re || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-27 - 22:00-0:00 || MADTIXX || DJ&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1177</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1177"/>
		<updated>2024-07-15T11:52:41Z</updated>

		<summary type="html">&lt;p&gt;R3boot: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT! You need to register for this workshop (see below), since it requires planning and preparation in advance.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal). Other distros will also work.&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
Due to the amount of configuration needed multiplied by the number of participants, there might be more then one workshop, or the workshop will be split up into a single talk and multiple workshop parts.&lt;br /&gt;
&lt;br /&gt;
=== Registration ===&lt;br /&gt;
Every participant of the workshop will receive a temporarily and private AS number and two private networks. During the workshop, we will create an &amp;quot;Internet&amp;quot; with these details. In order to register, ping r3boot on IRC or send an email to r3boot at r3blog dot nl, and I will add you to the list below:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| Neighbor&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| IP&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| AS&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Prefix&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 1&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 2&lt;br /&gt;
|-&lt;br /&gt;
| r3boot&lt;br /&gt;
|&lt;br /&gt;
| 65001&lt;br /&gt;
| 192.168.0.0/23&lt;br /&gt;
| 192.168.0.0/24&lt;br /&gt;
| 192.168.1.0/24&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Router requirements ===&lt;br /&gt;
TBA&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1176</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1176"/>
		<updated>2024-07-15T11:50:20Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT! You need to register for this workshop (see below), since it requires planning and preparation in advance.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal)&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
Due to the amount of configuration needed multiplied by the number of participants, there might be more then one workshop, or the workshop will be split up into a single talk and multiple workshop parts.&lt;br /&gt;
&lt;br /&gt;
=== Registration ===&lt;br /&gt;
Every participant of the workshop will receive a temporarily and private AS number and two private networks. During the workshop, we will create an &amp;quot;Internet&amp;quot; with these details. In order to register, ping r3boot on IRC or send an email to r3boot at r3blog dot nl, and I will add you to the list below:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| Neighbor&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| IP&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| AS&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Prefix&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 1&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 2&lt;br /&gt;
|-&lt;br /&gt;
| r3boot&lt;br /&gt;
|&lt;br /&gt;
| 65001&lt;br /&gt;
| 192.168.0.0/23&lt;br /&gt;
| 192.168.0.0/24&lt;br /&gt;
| 192.168.1.0/24&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Router requirements ===&lt;br /&gt;
TBA&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=User:R3boot&amp;diff=1175</id>
		<title>User:R3boot</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=User:R3boot&amp;diff=1175"/>
		<updated>2024-07-15T11:45:46Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:R3boot.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
DevSecOps/SRE by day, hacker by night&lt;br /&gt;
&lt;br /&gt;
Interests:&lt;br /&gt;
&lt;br /&gt;
* UNIX&lt;br /&gt;
* networking&lt;br /&gt;
* 3d design / printing&lt;br /&gt;
* NURDspace&lt;br /&gt;
* Nature&lt;br /&gt;
* Hiking&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=File:R3boot.jpg&amp;diff=1174</id>
		<title>File:R3boot.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=File:R3boot.jpg&amp;diff=1174"/>
		<updated>2024-07-15T11:45:04Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;r3boot&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=Villages/Idiopolis&amp;diff=1173</id>
		<title>Villages/Idiopolis</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=Villages/Idiopolis&amp;diff=1173"/>
		<updated>2024-07-15T11:39:51Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An idiopolis is a city of idiots, where weirdness, creativity, freaks, connectivity and the quality of life combine to create dynamic local madness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In effect, idiopolis are cities where those who can choose where to hang out, choose to freak out.&lt;br /&gt;
&lt;br /&gt;
== Gibberish ==&lt;br /&gt;
For many, the road to this village already started long ago. For its second arrival at Haxogreen, here are the idiots.&lt;br /&gt;
&lt;br /&gt;
And we&#039;re bringing Idioduinos! Expect a lot of chaos and unfinished projects. Be ready to be taken by suprise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
You can contact us on our village DECT-phone: 4346 / IDIO or on irc: OFTC/#idiopolis&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Travel ==&lt;br /&gt;
We will get there&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Villagers ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Who !! ~ arrival date/time !! ~ departure date/time&lt;br /&gt;
|-&lt;br /&gt;
| BuZz || Tuesday afternoon || yes&lt;br /&gt;
|-&lt;br /&gt;
| nzo || Tuesday afternoon || yes&lt;br /&gt;
|-&lt;br /&gt;
| berend || Tuesday afternoon || yes&lt;br /&gt;
|-&lt;br /&gt;
| The0 || Sunday afternoon || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| Pixal || Sunday afternoon || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| Tiglo || Sunday afternoon || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| Erin || Wednesday night || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| Rwn || Wednesday night || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| danieltoo || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| r3boot || Tuesday || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bigmacfoobar || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| assa || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| ? || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| ? || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idocubator services ==&lt;br /&gt;
An Idiocubator is a service that helps new and startup villages to develop by providing services such as training or space.&lt;br /&gt;
&lt;br /&gt;
We will be assisting new and exciting disruptions with:&lt;br /&gt;
&lt;br /&gt;
    Coffee/Tea&lt;br /&gt;
    Lipo charging&lt;br /&gt;
    Lipo suction (discharging of Lipo)&lt;br /&gt;
    Meme creation&lt;br /&gt;
    Laughter&lt;br /&gt;
    Offering &#039;storefront&#039; for selling kits/items/stickers/stuff&lt;br /&gt;
    -possibly- a cryptocoin to/from ccc coins exchange&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
Some of the AMAZING startups we are helping blossom into fruition:&lt;br /&gt;
&lt;br /&gt;
    Projects:EspLight&lt;br /&gt;
    IDIOwhack - Projects:IDIOduino&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
   Tents and rocks&lt;br /&gt;
   Power and network&lt;br /&gt;
&lt;br /&gt;
== Personal equipment ==&lt;br /&gt;
   Ice maker&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Activities ==&lt;br /&gt;
We tend to get very social:3.0&lt;br /&gt;
&lt;br /&gt;
We will try to host a 24/7 broadcast of Radiopolis (music/talk/noise radio) and Videopolis (Camera interpretation of Radiopolis). &lt;br /&gt;
&lt;br /&gt;
We will be bringing something to serve files with, likely with a bunch of content.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
http://idiopolis.org/&lt;br /&gt;
https://nurdspace.nl/&lt;br /&gt;
https://hackwinkel.nl/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buy-an-idiot ==&lt;br /&gt;
Our unique sponsoring scheme allows anyone to buy an idiot. Once bought, the sponsor has to provide remuneration  for the following costs we&#039;re making, and need saving:&lt;br /&gt;
&lt;br /&gt;
    Table/Chair rental: 150eu&lt;br /&gt;
    MidiDome: ~200 100eu&lt;br /&gt;
    MaxiDome: ~700 350eu&lt;br /&gt;
    Monkeyhut: ~320eu&lt;br /&gt;
    Bus rental: ~900 540eu&lt;br /&gt;
    Power rental: 55eu&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
Current ~total: 1515eu&lt;br /&gt;
&lt;br /&gt;
With ~40 members this would be about 40eu p/p&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=Villages/Idiopolis&amp;diff=1172</id>
		<title>Villages/Idiopolis</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=Villages/Idiopolis&amp;diff=1172"/>
		<updated>2024-07-15T11:38:05Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An idiopolis is a city of idiots, where weirdness, creativity, freaks, connectivity and the quality of life combine to create dynamic local madness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In effect, idiopolis are cities where those who can choose where to hang out, choose to freak out.&lt;br /&gt;
&lt;br /&gt;
== Gibberish ==&lt;br /&gt;
For many, the road to this village already started long ago. For its second arrival at Haxogreen, here are the idiots.&lt;br /&gt;
&lt;br /&gt;
And we&#039;re bringing Idioduinos! Expect a lot of chaos and unfinished projects. Be ready to be taken by suprise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
You can contact us on our village DECT-phone: 4346 / IDIO or on irc: OFTC/#idiopolis&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Travel ==&lt;br /&gt;
We will get there&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Villagers ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Who !! ~ arrival date/time !! ~ departure date/time&lt;br /&gt;
|-&lt;br /&gt;
| BuZz || Tuesday afternoon || yes&lt;br /&gt;
|-&lt;br /&gt;
| nzo || Tuesday afternoon || yes&lt;br /&gt;
|-&lt;br /&gt;
| berend || Tuesday afternoon || yes&lt;br /&gt;
|-&lt;br /&gt;
| The0 || Sunday afternoon || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| Pixal || Sunday afternoon || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| Tiglo || Sunday afternoon || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| Erin || Wednesday night || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| Rwn || Wednesday night || Sunday morning&lt;br /&gt;
|-&lt;br /&gt;
| danieltoo || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| r3boot || Tuesday || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bigmacfoobar || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| assa || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| ? || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| ? || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idocubator services ==&lt;br /&gt;
An Idiocubator is a service that helps new and startup villages to develop by providing services such as training or space.&lt;br /&gt;
&lt;br /&gt;
We will be assisting new and exciting disruptions with:&lt;br /&gt;
&lt;br /&gt;
    Coffee/Tea&lt;br /&gt;
    Lipo charging&lt;br /&gt;
    Lipo suction (discharging of Lipo)&lt;br /&gt;
    Meme creation&lt;br /&gt;
    Laughter&lt;br /&gt;
    Offering &#039;storefront&#039; for selling kits/items/stickers/stuff&lt;br /&gt;
    -possibly- a cryptocoin to/from ccc coins exchange&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
Some of the AMAZING startups we are helping blossom into fruition:&lt;br /&gt;
&lt;br /&gt;
    Projects:EspLight&lt;br /&gt;
    IDIOwhack - Projects:IDIOduino&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
   Tents and rocks&lt;br /&gt;
   Power and network&lt;br /&gt;
&lt;br /&gt;
== Personal equipment ==&lt;br /&gt;
   Ice maker&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Activities ==&lt;br /&gt;
We tend to get very social:3.0&lt;br /&gt;
&lt;br /&gt;
We will try to host a 24/7 broadcast of Radiopolis (music/talk/noise radio) and Videopolis (Camera interpretation of Radiopolis). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
http://idiopolis.org/&lt;br /&gt;
https://nurdspace.nl/&lt;br /&gt;
https://hackwinkel.nl/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buy-an-idiot ==&lt;br /&gt;
Our unique sponsoring scheme allows anyone to buy an idiot. Once bought, the sponsor has to provide remuneration  for the following costs we&#039;re making, and need saving:&lt;br /&gt;
&lt;br /&gt;
    Table/Chair rental: 150eu&lt;br /&gt;
    MidiDome: ~200 100eu&lt;br /&gt;
    MaxiDome: ~700 350eu&lt;br /&gt;
    Monkeyhut: ~320eu&lt;br /&gt;
    Bus rental: ~900 540eu&lt;br /&gt;
    Power rental: 55eu&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
Current ~total: 1515eu&lt;br /&gt;
&lt;br /&gt;
With ~40 members this would be about 40eu p/p&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=Schedule&amp;diff=1171</id>
		<title>Schedule</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=Schedule&amp;diff=1171"/>
		<updated>2024-07-15T11:35:44Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Timed events&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Date &amp;amp; Time !! Length !! Name !! Contact Person !! Village/Location&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 10:00 || ? || Home Automation with Home Assistant || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 14:00 || 2h || Hotplate [[Badge]] soldering workshop || The0 || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 10:00 || ? || Kubernetes 4 Home || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 14:00 || 2h || getting started with [[KiCAD]] walkthrough || The0 || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-?? - ??:?? || 2h || [[BGP_Workshop|BGP routing workshop]] || [[User:R3boot|&amp;quot;Lex&amp;quot; / r3boot]] || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 10:00 || ? || Running your own server @ home || Tezza || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-27 - 10:00 || ? || [[Yoga]]  || [[User:Gunstick|Gunstick]] || Yoga spot&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On Demand&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Name !! Contact Person !! Village/Location&lt;br /&gt;
|-&lt;br /&gt;
| [[Massage]] || [[User:Gunstick|Gunstick]] || ask at Infodesk or syn2cat table in hackcenter&lt;br /&gt;
|-&lt;br /&gt;
| [[Badge]] soldering || [[User:The0|The0]] || [[Villages/Idiopolis|Bormhack]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stage&lt;br /&gt;
{| class=&amp;quot;sortable wikitable smwtable&amp;quot;&lt;br /&gt;
! Date &amp;amp; Time !! Name !! Type&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-24 - 20:00-22:00 || MADTIXX || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-25 - 20:00-20:00 || 24Hrs of AI generated hardstyle-mongolian throatsinging-polka-reggae fusion mahem &amp;amp;brvbar; TBA || AI &amp;amp;brvbar; TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 20:00-22:00 || Aluburkaseinbruder|| DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-26 - 22:00-0:00 || l33tc0re || DJ&lt;br /&gt;
|-&lt;br /&gt;
| 2024-07-27 - 22:00-0:00 || MADTIXX || DJ&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1170</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1170"/>
		<updated>2024-07-15T11:35:39Z</updated>

		<summary type="html">&lt;p&gt;R3boot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? Are you looking for a way to dynamically manage routing on a diverse network? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT! You need to register for this workshop (see below), since it requires planning and preparation in advance.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal)&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
Due to the amount of configuration needed multiplied by the number of participants, there might be more then one workshop, or the workshop will be split up into a single talk and multiple workshop parts.&lt;br /&gt;
&lt;br /&gt;
=== Registration ===&lt;br /&gt;
Every participant of the workshop will receive a temporarily and private AS number and two private networks. During the workshop, we will create an &amp;quot;Internet&amp;quot; with these details. In order to register, ping r3boot on IRC or send an email to r3boot at r3blog dot nl, and I will add you to the list below:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| Neighbor&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| IP&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| AS&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Prefix&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 1&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 2&lt;br /&gt;
|-&lt;br /&gt;
| r3boot&lt;br /&gt;
|&lt;br /&gt;
| 65001&lt;br /&gt;
| 192.168.0.0/23&lt;br /&gt;
| 192.168.0.0/24&lt;br /&gt;
| 192.168.1.0/24&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Router requirements ===&lt;br /&gt;
TBA&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=User:R3boot&amp;diff=1169</id>
		<title>User:R3boot</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=User:R3boot&amp;diff=1169"/>
		<updated>2024-07-15T11:33:37Z</updated>

		<summary type="html">&lt;p&gt;R3boot: Created page with &amp;quot;DevSecOps/SRE by day, hacker by night  Interests:  * UNIX * networking * 3d design / printing * NURDspace * Nature * Hiking&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DevSecOps/SRE by day, hacker by night&lt;br /&gt;
&lt;br /&gt;
Interests:&lt;br /&gt;
&lt;br /&gt;
* UNIX&lt;br /&gt;
* networking&lt;br /&gt;
* 3d design / printing&lt;br /&gt;
* NURDspace&lt;br /&gt;
* Nature&lt;br /&gt;
* Hiking&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
	<entry>
		<id>https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1167</id>
		<title>BGP Workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.haxogreen.lu/2024/w/index.php?title=BGP_Workshop&amp;diff=1167"/>
		<updated>2024-07-15T11:26:45Z</updated>

		<summary type="html">&lt;p&gt;R3boot: Created page with &amp;quot;=== Introduction === Ever wondered how to use the protocol that binds the internet together? Are you looking for a way to dynamically manage routing on a diverse network? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:  * Routing theory * Setting up a peering * Route leaks * Aggregation * Hijacking * DDoS migitation (s/RTBH)  Assumed is that you have an understa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
Ever wondered how to use the protocol that binds the internet together? Are you looking for a way to dynamically manage routing on a diverse network? This workshop will help you understand the basics of BGP, by performing a number of tasks with BGP on a small-scale. We will work with the following subjects:&lt;br /&gt;
&lt;br /&gt;
* Routing theory&lt;br /&gt;
* Setting up a peering&lt;br /&gt;
* Route leaks&lt;br /&gt;
* Aggregation&lt;br /&gt;
* Hijacking&lt;br /&gt;
* DDoS migitation (s/RTBH)&lt;br /&gt;
&lt;br /&gt;
Assumed is that you have an understanding of Linux and the basics of networking (what is an ip, what is a subnet, what is a router, what is a switch).&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
In order to participate in this workshop, you need to have the following:&lt;br /&gt;
&lt;br /&gt;
* A working Debian system (either virtualized or bare-metal)&lt;br /&gt;
* A direct connection to the network (no nat, no routed connections)&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
Due to the amount of configuration needed multiplied by the number of participants, there might be more then one workshop, or the workshop will be split up into a single talk and multiple workshop parts.&lt;br /&gt;
&lt;br /&gt;
=== Registration ===&lt;br /&gt;
Every participant of the workshop will receive a temporarily and private AS number and two private networks. During the workshop, we will create an &amp;quot;Internet&amp;quot; with these details. In order to register, ping r3boot on IRC or send an email to r3boot at r3blog dot nl, and I will add you to the list below:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| Neighbor&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| IP&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 10%&amp;quot;| AS&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Prefix&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 1&lt;br /&gt;
! style=&amp;quot;text-align: left; width: 15%&amp;quot;| Subnet 2&lt;br /&gt;
|-&lt;br /&gt;
| r3boot&lt;br /&gt;
|&lt;br /&gt;
| 65001&lt;br /&gt;
| 192.168.0.0/23&lt;br /&gt;
| 192.168.0.0/24&lt;br /&gt;
| 192.168.1.0/24&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Router requirements ===&lt;br /&gt;
TBA&lt;/div&gt;</summary>
		<author><name>R3boot</name></author>
	</entry>
</feed>