From 51fa62e4673987eac47630ba78343091fde6e68e Mon Sep 17 00:00:00 2001 From: thesysadmindev Date: Mon, 29 Jul 2024 22:20:35 +1000 Subject: [PATCH] Addition of MikroTik guide and updated README.md The MikroTik guide on ROV implementation has been created, and the amendment to the README.md file to reflect that route validation enables an operator to reject routes instead of either rejecting or setting a lower preference per the IETF draft "Guidance to Avoid Carrying RPKI Validation States in Transitive BGP Path Attributes" (https://datatracker.ietf.org/doc/html/draft-ietf-sidrops-avoid-rpki-state-in-bgp) as well as the intro of an Acknowledgements section. --- README.md | 8 +++-- docs/tutorial-routerconfig/mikrotik.md | 41 +++++++++++++++++++++++-- static/img/mikrotik_winbox_rpki1.png | Bin 0 -> 37869 bytes 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 static/img/mikrotik_winbox_rpki1.png diff --git a/README.md b/README.md index ea95ecf..01a932d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ rpkihub.au is a site designed to help network operators deploy Route Origin Auth It will detail the steps to publish Route Origin Authorisations (ROAs) with the five Regional Internet Registries (APNIC, ARIN, RIPE NCC, LACNIC and AFRINIC) which is the most common method. It will also detail how to install, setup and configure Krill from NLnet Labs (https://nlnetlabs.nl/projects/routing/krill/) for the more advanced users who may wish to manage their own RPKI Certificate Authority. -The site will also go into detail about configuring Route Object Validation (ROV) on your BGP sessions to validate ROAs using Relying Party (RP) software. This component is important as it enables you to either reject or set a lower preference on the routes for which the origin Autonomous System Number (ASN) has not been authorised. +The site will also go into detail about configuring Route Object Validation (ROV) on your BGP sessions to validate ROAs using Relying Party (RP) software. This component is important as it enables you to reject routes for which the origin Autonomous System Number (ASN) has not been authorised. Eventually, I will also go into detail on how to install and configure RPKI Relying Party (RP) software for your network to use to validate ROAs. @@ -12,4 +12,8 @@ This site is still a work in progress, and has a long way to go. There are many Thanks for your support, hope this helps, and would love to hear if and how this has helped you! -\- Christopher Hawker \ No newline at end of file +\- Christopher Hawker + +## Acknowledgements + + - [Job Snijders](https://datatracker.ietf.org/person/job@fastly.com) - He has provided some valuable insight and information which would have taken me quite some time to pick up on and introduce. \ No newline at end of file diff --git a/docs/tutorial-routerconfig/mikrotik.md b/docs/tutorial-routerconfig/mikrotik.md index e083e42..65cf917 100644 --- a/docs/tutorial-routerconfig/mikrotik.md +++ b/docs/tutorial-routerconfig/mikrotik.md @@ -2,6 +2,43 @@ sidebar_position: 2 --- -# Mikrotik Configuration +# MikroTik Configuration -To Be Written \ No newline at end of file +MikroTik's RouterOS v7 supports the RPKI to Router Protocol (RTR) as defined in RFC8210. To enable route object validation, fortunately the process is rather straightforward (depending on how complex your route filters are). + +Before you can configure your router, it requires that you have either installed your preferred validator software onto a server, or have access to one. + +## Step 1 - Connecting to your Validator + +Connect to your router using SSH or Telnet and execute the below commands: + +``` +/routing/bgp/rpki +add group=rtrGroup1 address=192.0.2.110 port=8282 refresh-interval=30 +``` + +Otherwise if you prefer to use WinBox for router management connect to your router, and in the menu on the left go to Routing > RPKI. When the RPKI window opens, click on the blue + button. Enter the group name, address, port number and refresh interval. + +
+![New RPKI validator configuration window](/img/mikrotik_winbox_rpki1.png) + +📷 Figure: New RPKI validator configuration window. +
+ +To confirm that your validator is configured correctly you can issue the following command: + +``` +/routing/rpki/rpki-check group=rtrGroup1 prefix=103.0.0.0/16 origin-as=4608 +``` + +## Step 2 - Configuring BGP route validation + +To configure route validation, you will need to do so in your route filters. This is by far easier to do so on the command line, either via SSH/Telnet or the Terminal window in WinBox. + +``` +/routing/filter/rule +add chain=bgp_in rule="rpki-verify rtrGroup1" +add chain=bgp_in rule="if (rpki invalid) { reject } else { accept }" +``` + +You can take a look at MikroTik's [Route Selection and Filters](https://help.mikrotik.com/docs/display/ROS/Route+Selection+and+Filters) page for additional functionality regarding route filtering. \ No newline at end of file diff --git a/static/img/mikrotik_winbox_rpki1.png b/static/img/mikrotik_winbox_rpki1.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ecb49b58c488bd408cb09313f2e07bd17a1811 GIT binary patch literal 37869 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 mV*XYa`oF&2Y2(Z5nl+gaiK=|Zqu_