Routers [[https://mikrotik.com/|MikroTik]] offer professional solutions at affordable prices, ideal for personal use. Whether you're looking for routers, switches or Wi-Fi access points, they all work under the same roof. [[https://mikrotik.com/software|RouterOS]]. Whatever the device, each model can fulfil the roles of router, firewall and witch. You can start with a model like the [[https://mikrotik.com/product/RB750r2|hEX lite]], available for around **40€**.
You can also test RouterOS on a virtual [[https://mikrotik.com/software|machine virtual]] for 24 hours
I've also created a project that lets you test Mikrotik router configurations in docker images. [[https://github.com/badele/network-lab|Voir the project page]]
====== Features ======
MikroTik routers offer the following features:
* **Network :**
* [[https://help.mikrotik.com/docs/spaces/ROS/pages/328068/Bridging+and+Switching|Bridge]]
* [[https://help.mikrotik.com/docs/spaces/ROS/pages/88014957/VLAN|VLAN]]
* QoS([[https://help.mikrotik.com/docs/spaces/ROS/pages/11993091/QoS+with+Switch+Chip|Hardware]] / Software)
* DHCP server
* Switching ([[https://help.mikrotik.com/docs/spaces/ROS/pages/21725254/Spanning+Tree+Protocol#SpanningTreeProtocol-STPandRSTP|STP, RSTP]])
* **Routing :**
* Static and dynamic routing ([[https://fr.wikipedia.org/wiki/Open_Shortest_Path_First|OSPF]], [[https://fr.wikipedia.org/wiki/Border_Gateway_Protocol|BGP]], [[https://fr.wikipedia.org/wiki/Routing_Information_Protocol|RIP]], [[https://fr.wikipedia.org/wiki/Multiprotocol_Label_Switching|MPLS]])
* [[https://help.mikrotik.com/docs/spaces/ROS/pages/4390920/Load+Balancing|Load Balancing]]
* [[https://help.mikrotik.com/docs/spaces/ROS/pages/26476608/Failover+WAN+Backup|Failover]]
* **Security :**
* Firewall ([[https://help.mikrotik.com/docs/spaces/ROS/pages/28606504/DDoS+Protection|Protection DDoS]], [[https://help.mikrotik.com/docs/spaces/ROS/pages/154042369/Port+knocking|Port knocking]])
* VPN ([[https://help.mikrotik.com/docs/spaces/ROS/pages/11993097/IPsec|IPsec]], [[https://help.mikrotik.com/docs/spaces/ROS/pages/2031655/OpenVPN|OpenVPN]], [[https://help.mikrotik.com/docs/spaces/ROS/pages/2031645/SSTP|SSTP]], [[https://help.mikrotik.com/docs/spaces/ROS/pages/69664792/WireGuard|WireGuard]])
* **Wi-Fi :**
* ([[https://help.mikrotik.com/docs/spaces/ROS/pages/1409149/AP+Controller+CAPsMAN|AP Controller]], [[https://help.mikrotik.com/docs/spaces/ROS/pages/56459266/HotSpot+-+Captive+portal|Hotspot]])
For more information, see the [[https://help.mikrotik.com/docs/spaces/ROS/pages/19136707/Software+Specifications|documentation]] .
====== Features in detail ======
===== Safe Mode =====
The **Safe Mode** protects against configuration errors that could lead to loss of access.
From the command line, press **''%%CTRL-x%%''** to activate this mode, identified by the indication **''%%%%''** in the prompt.
**How does it work?**
In Safe Mode, the router periodically tests the connectivity between itself and the administrator's SSH session. If a loss of connection is detected, it restores the previous configuration.
To save your changes while remaining connected, deactivate Safe Mode by pressing **''%%CTRL-x%% again''**.
===== Firewall =====
MikroTik routers incorporate two types of firewall: Layer 2 and Layer 3.
==== Layer 3 example ====
/ip/firewall/filter
# Input
add action=accept chain=input comment="accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=input comment="drop invalid" connection-state=invalid
add action=accept chain=input comment="accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="drop all not coming from LAN" in-interface-list=!LAN log=yes log-prefix=BAN
# Forward
add action=fasttrack-connection chain=forward comment="fasttrack" connection-state=established,related hw-offload=yes
add action=accept chain=forward comment="accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=forward comment="drop invalid" connection-state=invalid
add action=drop chain=forward comment="drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
# Masquerade
/ip firewall nat
add action=masquerade chain=srcnat comment="masquerade" ipsec-policy=out,none out-interface-list=WAN
===== VLAN =====
VLANs can be used to isolate several network flows within the same bridge. This makes it possible, for example, to separate traffic between the LAN and a DMZ without any interaction between them. Here are two important concepts:
* **Tagged (trunk)** Adding a VLAN number to the Ethernet header of the IP packet, for compatible devices. ([[https://fr.wikipedia.org/wiki/IEEE_802.1Q|802.1Q]]).
* **Untagged** Removal of the VLAN number to make the packet accessible to standard devices.
==== Example ====
The following example configures two VLANs: **LAN (2)** and **DMZ (3)**. All ports are dedicated to the LAN, except :
* ''%%ether10%%'' for the DMZ.
* ''%%ether2%%''used as a tagged trunk to transport LAN and DMZ flows.
# Désactiver temporairement le filtrage VLAN
/interface/bridge
set [find where name="bridge"] vlan-filtering=no
# Associer tous les ports au VLAN-LAN (PVID 2)
/interface/bridge/port
set [find] pvid=2
# Associer ether10 au VLAN-DMZ (PVID 3)
set [find where interface=ether10] pvid=3
# Configurer le trunk (ether2)
/interface/bridge/vlan
add bridge=bridge comment=eth2-lan tagged=ether2,bridge vlan-ids=2
add bridge=bridge comment=eth2-dmz tagged=ether2,bridge vlan-ids=3
# Créer les interfaces VLAN
/interface/vlan
add interface=bridge name=vlan-lan vlan-id=2
add interface=bridge name=vlan-dmz vlan-id=3
# Adressage IP
/ip/address
add address=192.168.2.254/24 interface=vlan-lan
add address=192.168.3.254/24 interface=vlan-dmz
# Configurer les pools DHCP
/ip/pool
add name=dhcp-lan ranges=192.168.2.128/25
add name=dhcp-dmz ranges=192.168.3.128/25
# Ajouter les serveurs DHCP
/ip/dhcp-server
add address-pool=dhcp-lan interface=vlan-lan
add address-pool=dhcp-dmz interface=vlan-dmz
=== Application of the configuration ===
To preserve all the previous configuration (still in ''%%%%''), I resort to safe mode by pressing the keys **CTRL-x**.
I can now activate the **VLAN filtering**by executing the following commands (remembering to enable save mode):
# Note: Press [CTRL-x] In the terminal prompt, after the prompt line, you must see text
# Enable vlan filtering
/interface/bridge
set [find where name="bridge"] ] vlan-filtering=yes
===== Practical tools =====
==== Logs ====
View logs in real time :
''%%/log/print follow%%''
Filter logs by keyword :
''%%/log/print where message~"BAN"%%''
14:33:48 firewall,info BAN INPUT 80 input: in:ether1 out:(unknown 0), connection-state:new src-mac aa:bb:cc:dd:dd:ee, proto TCP (SYN), 80.75.212.9:50264->192.168.0.88:80, len 40
14:37:55 firewall,info BAN INPUT 80 input: in:ether1 out:(unknown 0), connection-state:new src-mac aa:bb:cc:dd:dd:ee, proto TCP (SYN), 62.169.22.37:40244->192.168.0.88:80, len 40
15:13:31 firewall,info BAN INPUT 80 input: in:ether1 out:(unknown 0), connection-state:new src-mac aa:bb:cc:dd:dd:ee, proto TCP (SYN), 194.50.16.198:57018->192.168.0.88:80, len 40
15:22:55 firewall,info BAN INPUT 80 input: in:ether1 out:(unknown 0), connection-state:new src-mac aa:bb:cc:dd:dd:ee, proto TCP (SYN), 93.174.93.12:60000->192.168.0.88:80, len 40
==== Ping ====
Testing an IP address :
''%%/tool/ping address=8.8.8.8 count=5%%''
SEQ HOST SIZE TTL TIME STATUS
0 8.8.8.8 56 249 27ms336us
1 8.8.8.8 56 249 28ms654us
2 8.8.8.8 56 249 28ms473us
3 8.8.8.8 56 249 28ms657us
4 8.8.8.8 56 249 28ms434us
==== Sniffer ====
Capture network traffic on an interface :
''%%/tool/sniffer/quick duration=1%%''
INTERFACE TIME NUM DIR SRC-MAC DST-MAC VLAN SRC-ADDRESS DST-ADDRESS PROTOCOL SIZE CPU
ether2 0.904 668 <- aa:bb:cc:dd:dd:ee aa:bb:cc:dd:dd:ee 254 192.168.254.114:33842 142.251.37.234:443 (https) ip:tcp 109 0
bridge 0.904 669 <- aa:bb:cc:dd:dd:ee aa:bb:cc:dd:dd:ee 254 192.168.254.114:33842 142.251.37.234:443 (https) ip:tcp 109 0
vlan-lan 0.904 670 <- aa:bb:cc:dd:dd:ee aa:bb:cc:dd:dd:ee 192.168.254.114:33842 142.251.37.234:443 (https) ip:tcp 105 0
ether1 0.904 671 -> aa:bb:cc:dd:dd:ee aa:bb:cc:dd:dd:ee 192.168.88.22:33842 142.251.37.234:443 (https) ip:tcp 105 0
ether1 0.919 672 <- aa:bb:cc:dd:dd:ee aa:bb:cc:dd:dd:ee 140.82.121.3 192.168.88.22 ip:icmp 98 0
vlan-lan 0.919 673 -> aa:bb:cc:dd:dd:ee aa:bb:cc:dd:dd:ee 140.82.121.3 192.168.254.100 ip:icmp 98 0
bridge 0.919 674 -> aa:bb:cc:dd:dd:ee aa:bb:cc:dd:dd:ee 254 140.82.121.3 192.168.254.100 ip:icmp 102 0
==== Torch ====
Analyse live network flows:
''%%/tool/torch interface=ether1 src-address=0.0.0.0/0 dst-address=0.0.0.0/0 ip-protocol=any mac-protocol=any%%%''
MAC-PROTOCOL IP-PROTOCOL SRC-ADDRESS DST-ADDRESS TX RX TX-PACKETS RX-PACKETS
ip icmp 140.82.121.3 192.168.88.22 784bps 784bps 1 1
ip icmp 142.251.37.227 192.168.88.22 784bps 784bps 1 1
ip icmp 192.168.0.1 192.168.88.22 41.9kbps 41.9kbps 5 5
ip tcp 18.197.249.189 192.168.88.22 1488bps 976bps 2 1
ip tcp 45.45.148.7 192.168.88.22 1248bps 1728bps 2 3
ip tcp 71.18.255.144 192.168.88.22 17.6kbps 51.3kbps 9 11
==== System Resources ====
Displaying router resources :
''%%/system/resource print%%''
uptime: 1d23h10m42s
version: 7.14.1 (stable)
build-time: 2024-03-08 12:50:23
factory-software: 6.44.6
free-memory: 906.9MiB
total-memory: 1024.0MiB
cpu: ARM
cpu-count: 4
cpu-frequency: 533MHz
cpu-load: 0%
free-hdd-space: 418.5MiB
total-hdd-space: 512.0MiB
write-sect-since-reboot: 140623
write-sect-total: 1569203
bad-blocks: 0%
architecture-name: arm
board-name: RB4011iGS+5HacQ2HnD
platform: MikroTik
==== Updating Packages ====
Display and update package versions:
''%%/system package update check-for-updates%%''
channel: stable
installed-version: 7.14.1
latest-version: 7.16.2
status: New version is available
Installing the update :
''%%/system package update install%%''
==== RouterOS update ====
Display RouterOS version and update :
''%%/system routerboard print%%''
routerboard: yes
model: RB4011iGS+5HacQ2HnD
revision: r2
serial-number: D43B0C96671D
serial-number: DXXXXXXXXXXX
firmware-type: al2
factory-firmware: 6.45.9
current-firmware: 6.45.9
upgrade-firmware: 7.16.2
Update and restart :
/system routerboard upgrade
/system reboot
====== Sources ======
* Website
* [[https://fr.wikipedia.org|fr.wikipedia.org]]
* [[https://help.mikrotik.com|help.mikrotik.com]]
* [[https://mikrotik.com|mikrotik.com]]
* [[en:CharteIA]]
* openai
* Rephrasing sentences
* Correction of spelling mistakes