Back to blog

Build Series  ·  MikroTik RouterOS 7  ·  Real-World Network  ·  October 2026

Build: The
Marina Network

A working harbour on the Cretan coast: eighty berths on four floating pontoons, liveaboards who stay for months, transients who arrive at dusk and leave at dawn, a fuel dock, a chandlery, and a capitaneria office that runs the booking system and takes the money. The sea eats copper and draws lightning, and the paying customers are strangers on boats a hundred metres out over the water. We build it on MikroTik in 10 tested steps.

Build Series RouterOS 7 Marina Hotspot + RADIUS Fibre over water 2.4 GHz sector PCI 5G backup

access · V10/V50 sfp+ ⇄ sfp+1 · 10G trunk single-mode fibre single-mode fibre PoE trunk 2.4 GHz sector 2.4 GHz sector ether1 · fibre ether2 · 5G WireGuard (R1 dials out) Internet Fibre ONT harbour FTTH 5G backup Chateau · passthrough Operator hub WireGuard · monitoring R1 · CCR2004 router · hotspot · RADIUS SW-CORE CRS328-24P-4S+ Pontoon A box netPower · IP66 Pontoon C box netPower · IP66 Sector AP · A Sector AP · C Boats · A V20 · metered Boats · C V20 · metered Office PCs V10 Berth mgmt V10 VoIP V10 Chandlery till V50 · pay Gate camera V40 FULL NETWORK all 10 steps built Drag the slider to build the network step by step. Devices with a config are clickable.

Full network · all steps built

Select a device to see its configuration

highlighted = lines added in the selected step · earlier steps shown plain · later steps hidden

Download the full config: MikroTik .rsc · Cisco IOS .txt — illustrative, review before use

This is part 11 of the Build series, and the one that fights the environment hardest. A marina is a small ISP sitting on a pier: the paying customers are strangers on boats out over the water, the plant runs down floating pontoons that move and corrode, and the two things that must never stop — card payments at the fuel dock and the shore-power that keeps bilge pumps running — share a site with a public hotspot for eighty boats.

The design leans on three ideas: carry everything to the pontoons on fibre, not copper, so the sea can't bridge a fault or a surge back into the office; treat every boat as a stranger and bill it like one; and keep the money and the operational systems on their own islands that the guest Wi-Fi can't touch even when it's full.

Prerequisites

01

The Brief

A fictional but very typical Cretan marina: a sheltered harbour, eighty berths, open all year, busiest from Easter to October.

Four floating pontoons (A–D) hold eighty berths, from small day-boats to a few forty-metre yachts. A stone quay runs along the shore with the capitaneria office (booking system, VoIP, staff PCs), a chandlery and café with a till, and a fuel dock at the end of the breakwater with its own card terminal. Each berth has a shore-power pedestal with a metered socket and water. Liveaboards stay for months and work from their boats; transients arrive in the evening and want Wi-Fi and a shower. Cameras watch the pontoon heads, the fuel dock and the gate. Internet is fibre to the office, with 5G as backup. The installer manages it from Heraklion.

RequirementWhere it comes from, and what it forces
R1 Wi-Fi to every berthBoats are 30–120 m out over open water, behind masts and rigging. Sector antennas on the pontoon heads, on a band that carries over water.
R2 Every boat is a strangerUnlike a villa, no two berths are one group. Client isolation on the berth network, and a credential per berth, not one shared key.
R3 Metered, billed accessWi-Fi is a product the marina sells. Per-berth vouchers with a rate cap and a quota, issued and accounted on equipment the marina owns.
R4 Payments never share fateThe fuel dock and chandlery take cards. That VLAN talks only to the acquirer — not to the LAN, not to the hotspot, not to the internet at large.
R5 Staff and payments stay onlineA busy hotspot must never slow a card authorisation or a VoIP call. Fibre primary, 5G backup, and the berths shaped hard on the backup.
R6 Survive the seaSalt corrodes, masts draw lightning, and runs are long. Fibre down the pontoons (no copper over water), surge protection at every entry, replaceable outdoor boxes.
R7 Operational safetyShore-power metering and the fuel controller are operational systems. They sit on their own VLAN, reachable only by staff, never by a boat.
R8 Remote managementThe harbour's fibre and the 5G are both behind carrier NAT. Management dials out; a dead pontoon must raise an alert, not wait for a complaint.

02

Four Design Decisions

Each one is where a marina stops behaving like the other networks in this series.

1 · Every boat is a stranger

The villa treats one booking as one trust group and lets devices see each other. A marina is the opposite: the boat in A17 and the boat in A18 are two unrelated customers who happen to share an antenna. So the berth network has client isolation on, and access is sold per berth as a voucher, not handed out as one shared key that leaks down the dock.

2 · Fibre, not copper, down the pontoons

Copper between the shore and a floating pontoon is a bad idea three ways: the run is long, the two ends sit at different ground potentials over salt water (galvanic current), and a mast is a lightning rod wired straight back to your office switch. Single-mode fibre solves all three — it carries hundreds of metres, it's a dielectric so there's no galvanic path and no surge conductor, and PoE for the antenna is generated locally in the pontoon box.

3 · 2.4 GHz sectors over the water

Over open water with masts in the way, reach beats throughput. 2.4 GHz travels further and diffracts around rigging better than 5 GHz, and a boat only needs enough for streaming and video calls, not a gigabit. Sector antennas on each pontoon head aim down the fairway so the signal follows the line of boats instead of spraying across the harbour.

4 · Billing on the box, not in the cloud

A cloud captive-portal is one more thing that breaks when the WAN does — and it puts the customer list on someone else's server. RouterOS runs the Hotspot and User Manager on the router itself: vouchers, quotas and per-berth accounting live on hardware the marina owns, and a boat that's already logged in keeps working through a WAN outage.

03

The Address & VLAN Plan

Six VLANs. The berth VLAN is a /22 because a full marina plus guests is a lot of phones; the rest are small and quiet.

VLAN · subnetWho lives here · notes
10 STAFF · 10.80.10.0/24Office PCs, the berth-management/booking server .20, VoIP phones. Runs the marina.
20 BERTH · 10.80.20.0/22The metered hotspot, SSID Marina-WiFi, client-isolated. Pool 10.80.20.10–10.80.23.254.
30 OT · 10.80.30.0/24Shore-power pedestals & meters, the fuel-dock controller, AIS receiver and weather station.
40 CCTV · 10.80.40.0/24Cameras at the pontoon heads, the fuel dock, the gate and the boatyard. Reservations.
50 PAY · 10.80.50.0/24Card terminals: fuel dock and chandlery. Sealed — reaches the acquirer and nothing else.
99 MGMT · 10.80.99.0/24R1 .1, SW-CORE .11, pontoon boxes .21–.24, APs. WireGuard to the operator hub: 10.251.0.0/24.
WANether1: fibre (DHCP, carrier NAT). ether2: 5G in passthrough (DHCP, carrier NAT).
SHORE · QUAY Capitaneria office · V10 Chandlery till · V50 SW-CORE · R1 · rack Fuel dock · V50 + V30 THE WATER A B C D AP AP AP AP sector →shore-power V30 · camera V40 Each pontoon head is an IP66 box fed by single-mode fibre (gold); it powers the sector antenna and the pontoon's shore-power meters and camera.

04

The Policy Matrix

Rows start, columns receive. Default deny. Payment reaches one destination; the berths reach only the sea of the internet.

FROM ↓ · TO → Staff Berths OT Cameras Payment Internet Staff · V10 — ✕ ✓ meters ✓ view ✕ ✓ Berths · V20 ✕ ✕ isolated ✕ ✕ ✕ ✓ metered OT · V30 ✕ ✕ — ✕ ✕ ◐ vendor Cameras · V40 ✕ ✕ ✕ — ✕ ◐ cloud Payment · V50 ✕ ✕ ✕ ✕ — ◐ acquirer Operator · WG ◐ support ✕ ◐ support ◐ support ✕ — allowed limited to the host/port shown denied (default) same zone / n.a. All enforced in R1's forward chain. Berths are client-isolated: every boat is a separate customer, so unlike the villa, devices in V20 cannot see each other.

Two cells carry the design. Payment → Internet is limited to the acquirer's hosts on 443 and nothing else, so a compromised till can't be a pivot. Berths → Berths is denied: client isolation means the boat next door is as unreachable as a boat in another harbour, which is the opposite of the villa's rule and the whole point of selling access per berth.

04b

Requirements Traceability

Every requirement from the brief, the steps that implement it, the config that does it, and the test that proves it.

RequirementImplemented inKey configProven by
R1 Wi-Fi to every berthstep 42.4 GHz sector APs, CAPsMAN, one SSID over the fairway"Walk the pontoons" drill
R2 Every boat a strangerstep 4 · step 5client isolation on V20; per-berth vouchers"Neighbour sweep" drill
R3 Metered, billed accessstep 5Hotspot + User Manager, rate cap + quota per profile"Voucher" drill
R4 Payments never share fatestep 6V50 forward rule: acquirer-only on 443; nothing else"Payment isolation" drill
R5 Staff & payments onlinestep 7 · step 8fibre/5G failover; berth throttled on 5G; VoIP + card auth prioritised"Busy pontoon" & "WAN out" drills
R6 Survive the seastep 3 · step 10single-mode fibre; surge at entries; replaceable pontoon boxes"Pull a pontoon box" drill
R7 Operational safetystep 6OT on V30, reachable only from staff V10"OT reach" drill
R8 Remote managementstep 9WireGuard dial-out; netwatch per pontoon"Remote care" drill

The build

Bottom to Top, One Layer at a Time

Rack and office first, water last, billing and backup at the end. Every step ends with a checkpoint.

Ten steps: the core switch, the router, fibre to the pontoons, Wi-Fi over the water, the hotspot and billing, the firewall, dual-WAN, fair-sharing, remote care, and power with hardening. Configure on the bench with the pontoon boxes before they go out over the water, and use Safe Mode (Ctrl+X) for every bridge change. A mistake at the end of a 120-metre pontoon in a gale is a different kind of mistake.

05 · Step 1 of 10

The Core Switch & the Office

One PoE switch in the office rack: the staff, the booking server, the till and the gate camera, with trunks waiting for R1 and the pontoons.

▲ Show step 1 in the interactive topology · see what this step adds, and click any device for its config

SW-CORE — CRS328-24P-4S+
/system identity set name=SW-CORE
# enforcement OFF now, ON at the end (lock-out safety)
/interface bridge add name=bridge vlan-filtering=no
/interface bridge port
# uplink to R1 (10G) + two fibre runs to the pontoon-head switches
add bridge=bridge interface=sfp-sfpplus1 frame-types=admit-only-vlan-tagged comment="R1"
add bridge=bridge interface=sfp-sfpplus2 frame-types=admit-only-vlan-tagged comment="ptA/B"
add bridge=bridge interface=sfp-sfpplus3 frame-types=admit-only-vlan-tagged comment="ptC/D"
# office access ports: staff on V10, the chandlery till on the payment V50
add bridge=bridge interface=ether1 pvid=10 comment="staff PCs"
add bridge=bridge interface=ether2 pvid=10 comment="berth-management server"
add bridge=bridge interface=ether3 pvid=10 comment="VoIP"
add bridge=bridge interface=ether8 pvid=50 comment="chandlery card terminal"
/interface bridge vlan
add bridge=bridge vlan-ids=10,20,30,40,50 tagged=sfp-sfpplus1,sfp-sfpplus2,sfp-sfpplus3
add bridge=bridge vlan-ids=99 tagged=bridge,sfp-sfpplus1,sfp-sfpplus2,sfp-sfpplus3
/interface vlan add name=v99-mgmt interface=bridge vlan-id=99
/ip address add address=10.80.99.11/24 interface=v99-mgmt
/ip route add gateway=10.80.99.1
# a quay is a public place: dead-end every unused jack
/interface ethernet disable ether9,ether10,ether11,ether12,ether13,ether14,ether15
/interface bridge set bridge vlan-filtering=yes

The core switch carries every office device and hands three trunks upward: one to R1, two to the fibre runs that will feed the pontoons. The chandlery till is the only office port on the payment VLAN, and it's a physically separate jack in a locked position behind the counter. As everywhere in this series, VLAN filtering goes on last, after the uplink is proven, so a typo can't lock you out of the rack.

Checkpoint: test this before building the next step

06 · Step 2 of 10

The Router: VLANs, DHCP, DNS

A CCR2004 as router-on-a-stick: a gateway per VLAN, a big /22 pool for the boats, upstream DNS that doesn't clash with the failover probe.

▲ Show step 2 in the interactive topology · see what this step adds, and click any device for its config

R1 — CCR2004-16G-2S+ · bridge, VLAN gateways, DHCP, DNS
/system identity set name=R1
/interface bridge add name=bridge vlan-filtering=no
/interface bridge port
add bridge=bridge interface=sfp-sfpplus1 frame-types=admit-only-vlan-tagged comment="core"
/interface bridge vlan
add bridge=bridge vlan-ids=10,20,30,40,50 tagged=bridge,sfp-sfpplus1
add bridge=bridge vlan-ids=99 tagged=bridge,sfp-sfpplus1
/interface vlan
# one interface per VLAN = router-on-a-stick; each is that VLAN gateway
add name=v10-staff interface=bridge vlan-id=10
add name=v20-berth interface=bridge vlan-id=20
add name=v30-ot    interface=bridge vlan-id=30
add name=v40-cctv  interface=bridge vlan-id=40
add name=v50-pay   interface=bridge vlan-id=50
add name=v99-mgmt  interface=bridge vlan-id=99
/ip address
add address=10.80.10.1/24 interface=v10-staff
# /22 for berths: room for a full marina of boats plus their guests
add address=10.80.20.1/22 interface=v20-berth
add address=10.80.30.1/24 interface=v30-ot
add address=10.80.40.1/24 interface=v40-cctv
add address=10.80.50.1/24 interface=v50-pay
add address=10.80.99.1/24 interface=v99-mgmt
# the berth pool is handed out behind the hotspot (step 5); 1h leases
/ip pool add name=p-berth ranges=10.80.20.10-10.80.23.254
/ip dhcp-server add name=d-berth interface=v20-berth address-pool=p-berth lease-time=1h
/ip dhcp-server network add address=10.80.20.0/22 gateway=10.80.20.1 dns-server=10.80.20.1
# … staff, OT, CCTV and payment all use host reservations
/ip dns set allow-remote-requests=yes servers=9.9.9.9,149.112.112.112
/system ntp client set enabled=yes servers=time.cloudflare.com
/interface bridge set bridge vlan-filtering=yes

The CCR2004 has the headroom a marina's NAT table needs — a full hotspot is hundreds of devices behind one address. Each VLAN gets its .1 gateway; the berth VLAN is a /22 so a packed summer weekend plus every guest's phone still fits. The berth DHCP leases are short (an hour) because boats come and go all day. Upstream DNS is Quad9, leaving 1.1.1.1 free to become the failover probe in step 7.

Checkpoint: test this before building the next step

07 · Step 3 of 10

Fibre Down the Pontoons

Single-mode fibre out to each pontoon head, into an IP66 box that powers the antenna and the pontoon's wired plant.

▲ Show step 3 in the interactive topology · see what this step adds, and click any device for its config

Pontoon A head — netPower 16P, fed by single-mode fibre
/system identity set name=SW-PONTOON-A
/interface bridge add name=bridge vlan-filtering=no
/interface bridge port
# fibre back to SW-CORE: no copper over the water, so no galvanic path
add bridge=bridge interface=sfp1 frame-types=admit-only-vlan-tagged comment="fibre to core"
# the sector AP rides a trunk: mgmt V99 untagged, berth SSID on V20
add bridge=bridge interface=ether1 pvid=99 comment="sector AP (PoE, trunk)"
# wired pontoon plant: shore-power pedestals (OT) and the pontoon-head camera
add bridge=bridge interface=ether2 pvid=30 comment="shore-power pedestals A"
add bridge=bridge interface=ether3 pvid=40 comment="pontoon-head camera"
/interface bridge vlan
add bridge=bridge vlan-ids=20,99 tagged=sfp1,ether1
add bridge=bridge vlan-ids=30,40 tagged=sfp1
/interface vlan add name=v99-mgmt interface=bridge vlan-id=99
/ip address add address=10.80.99.21/24 interface=v99-mgmt
/ip route add gateway=10.80.99.1
# salt and lightning will kill this box one day; its config restores from the hub
/interface bridge set bridge vlan-filtering=yes

This is the step that keeps the sea out of the office. Each pontoon head is a sealed outdoor box with an SFP fibre uplink and a small PoE switch; the fibre is a dielectric, so there is no copper bridging two different ground potentials over salt water and no metallic path for a mast strike to follow back to the rack. The box powers the sector antenna locally and picks up the pontoon's shore-power meters and camera. Treat it as a consumable: when salt or lightning eventually takes one, a replacement restores its config from the hub and is back in minutes.

Fibre over water is not fibre in a building

Use outdoor, gel-filled or armoured single-mode with marine-rated conduit along the pontoon, and leave a service loop at the hinge where the pontoon moves against the shore — that flex point is where a cable dies first. Terminate with pre-polished connectors in the dry box, not in the open air over the water.

Checkpoint: test this before building the next step

08 · Step 4 of 10

Wi-Fi Over the Water

Sector antennas on the pontoon heads, one open SSID over the fairway, a hidden one for staff — all pushed from R1.

▲ Show step 4 in the interactive topology · see what this step adds, and click any device for its config

R1 — CAPsMAN: an open berth SSID over the water, a hidden staff SSID
/interface wifi datapath
add name=dp-berth bridge=bridge vlan-id=20
add name=dp-staff bridge=bridge vlan-id=10
/interface wifi security
# berth SSID is OPEN — the hotspot (step 5) does the authentication, not WPA
add name=sec-open authentication-types="" disabled=no
add name=sec-staff authentication-types=wpa2-psk,wpa3-psk passphrase="********"
/interface wifi configuration
# 2.4 GHz: it reaches further over open water and bends around masts better than 5 GHz
add name=cfg-berth ssid=Marina-WiFi security=sec-open datapath=dp-berth country=Greece \
    .channel.band=2ghz-ax
add name=cfg-staff ssid=Marina-Staff security=sec-staff datapath=dp-staff country=Greece \
    hide-ssid=yes
/interface wifi capsman set enabled=yes interfaces=v99-mgmt
# the sector antennas point down the fairway; one config provisions every pontoon AP
/interface wifi provisioning
add action=create-dynamic-enabled supported-bands=2ghz-ax \
    master-configuration=cfg-berth slave-configurations=cfg-staff

One controller on R1 provisions every pontoon AP with the same two SSIDs: an open Marina-WiFi that the hotspot will gate in step 5, and a hidden WPA3 Marina-Staff for the harbour-master's tablet. The berth SSID runs on 2.4 GHz on purpose — over open water, with masts and rigging in the way, reach and diffraction matter more than the throughput 5 GHz would add. The sectors point down the fairway so the beam follows the line of boats.

The mast is the obstacle

A metal mast and a boom full of rigging sit right between the antenna and the cockpit where people use their phones. Mount the sector high on the pontoon-head pole so it looks over the near boats, accept that 2.4 GHz is congested (every boat's own hotspot is on it), and plan co-channel reuse across pontoons the way you would cells, not like one big AP.

Checkpoint: test this before building the next step

09 · Step 5 of 10

Metered Berth Billing

The open SSID becomes a product: a voucher per berth, a rate cap, a fair quota, all issued and accounted on the router.

R1 — Hotspot on V20, User Manager (RADIUS) on the same box
# the captive portal lives on the berth gateway
/ip hotspot profile
add name=marina hotspot-address=10.80.20.1 dns-name=wifi.marina login-by=http-chap,cookie \
    use-radius=yes
/ip hotspot add name=berth interface=v20-berth address-pool=p-berth profile=marina
# User Manager v5 is the RADIUS server, running on R1 itself → point RADIUS at loopback
/radius add service=hotspot address=127.0.0.1 secret="********"
/user-manager set enabled=yes
/user-manager/router add name=self address=127.0.0.1 shared-secret="********"
# a rate cap and a fair daily quota per boat; a week-long profile for a transient berth
/user-manager/limitation add name=lim-berth rate-limit=20M/5M
/user-manager/profile add name=berth-week name-for-users="7-day berth" validity=7d
/user-manager/profile-limitation add profile=berth-week limitation=lim-berth
# one voucher per slip, printed at the office on arrival; the code is never logged
/user-manager/user add name=A17 password="<voucher>" shared-users=3
/user-manager/user add name=A17 attributes=... # bind to profile berth-week
# walled garden: the booking page and the card host stay reachable before login
/ip hotspot walled-garden
add dst-host=book.marina.example action=allow
add dst-host=*.acquirer.example action=allow

The hotspot turns the open Wi-Fi into something the office sells. User Manager — RouterOS's own RADIUS server — runs on R1 itself, so the customer list and the accounting never leave the marina's hardware, and a boat that has already logged in keeps working even if the WAN drops. The office prints a voucher per berth on arrival, tied to a profile that sets the stay length, the rate cap and a fair daily quota. The walled garden keeps the booking page and the card host reachable before anyone logs in, so a guest can pay for access and the fuel dock can take a card without a session.

The voucher is loot — treat it like it

Generate voucher codes with real randomness, hand them out on paper, and never write the code to the log or an e-mail body (log that a voucher was issued, not the code). Set shared-users to match a boat's realistic device count; one voucher for a whole pontoon is how a marina ends up running an open relay.

Checkpoint: test this before building the next step

10 · Step 6 of 10

Firewall: Money, Power, Strangers

Payment reaches the acquirer and nothing else. OT answers only to staff. Every boat gets the internet and no neighbours.

R1 — interface lists, input and forward chains
/interface list
add name=WAN
add name=MGMT
/interface list member
add list=MGMT interface=v99-mgmt
# a named host group: where the card terminals are allowed to talk
/ip firewall address-list
add list=ACQUIRER address=203.0.113.0/24 comment="card acquirer (example)"
/ip firewall filter
# input = TO the router; established back in, then judge only NEW
add chain=input action=accept connection-state=established,related,untracked
add chain=input action=drop connection-state=invalid
add chain=input action=accept in-interface-list=MGMT
# berths reach the router only for DNS/DHCP and the hotspot portal
add chain=input action=accept in-interface=v20-berth protocol=udp dst-port=53,67
add chain=input action=accept in-interface=v20-berth protocol=tcp dst-port=53,64872,64873
add chain=input action=drop log=yes log-prefix=IN-DROP
# forward = THROUGH the router; default-deny at the end
add chain=forward action=accept connection-state=established,related,untracked
add chain=forward action=drop connection-state=invalid
# payment: the till VLAN reaches ONLY the acquirer, nothing on the LAN, nothing else out
add chain=forward action=accept in-interface=v50-pay dst-address-list=ACQUIRER \
    protocol=tcp dst-port=443
# staff run the marina: book boats, read the meters, watch the cameras
add chain=forward action=accept in-interface=v10-staff out-interface=v30-ot
add chain=forward action=accept in-interface=v10-staff out-interface=v40-cctv
add chain=forward action=accept in-interface=v10-staff out-interface-list=WAN
# OT and cameras reach only their own clouds (step 8 shapes them), never the LAN
add chain=forward action=accept in-interface=v30-ot out-interface-list=WAN
add chain=forward action=accept in-interface=v40-cctv out-interface-list=WAN
# berths: the internet and nothing else — and never each other
add chain=forward action=accept in-interface=v20-berth out-interface-list=WAN
add chain=forward action=accept in-interface-list=MGMT
add chain=forward action=drop log=yes log-prefix=FWD-DROP

The forward chain is the marina's property line. The payment VLAN is allowed exactly one thing — the acquirer on 443 — so a compromised terminal is a dead end, not a pivot onto the booking server or the hotspot. The operational VLAN (shore-power, fuel controller, AIS) answers only to staff on V10 and otherwise reaches just its vendors' clouds. The berths reach the internet and, by the absence of any rule and by client isolation, nothing and no one else on the network.

Checkpoint: test this before building the next step

11 · Step 7 of 10

Dual-WAN: Fibre & 5G

Fibre carries the harbour; 5G catches it when the fibre drops, with the hotspot throttled so staff and payments keep their share.

▲ Show step 7 in the interactive topology · see what this step adds, and click any device for its config

R1 — fibre primary, 5G backup, failover by recursive route
/interface list member add list=WAN interface=ether1
/interface list member add list=WAN interface=ether2
/ip dhcp-client add interface=ether1 add-default-route=no use-peer-dns=no comment="fibre"
# 5G as a passthrough modem; its default route sits at a worse distance (backup)
/ip dhcp-client add interface=ether2 default-route-distance=2 use-peer-dns=no comment="5G"
/ip route
# recursive main route: reachable only while the probe through fibre answers
add dst-address=1.1.1.1/32 gateway=ether1 scope=10 comment="probe via fibre"
add dst-address=0.0.0.0/0 gateway=1.1.1.1 target-scope=11 check-gateway=ping distance=1 \
    comment="main: fibre"
/ip firewall nat add chain=srcnat action=masquerade out-interface-list=WAN
# on 5G, the hotspot (berth Wi-Fi) is throttled hard; staff, payments and VoIP are not
/ip firewall mangle add chain=forward action=mark-packet new-packet-mark=berth-5g \
    in-interface=v20-berth out-interface=ether2 passthrough=no
/queue tree add name=berth-on-5g parent=global packet-mark=berth-5g max-limit=15M \
    queue=pcq-download-default

Fibre is the primary path with a recursive route whose health is a ping through the fibre gateway; 5G sits behind it at a worse distance and takes over on failure. The difference from the villa is who gets protected: here the guests are the ones squeezed on the backup. When the harbour runs on 5G, the berth hotspot is throttled to a trickle so that a card authorisation, a VoIP call to a chandler, and the booking system keep working. Paying boats stay connected, just slowly, which is the honest trade on a backup link.

Checkpoint: test this before building the next step

12 · Step 8 of 10

Fair Share, Priority Where It Pays

CAKE shares the fibre fairly between boats; VoIP and card authorisations ride above the crowd.

R1 — CAKE for the berths, priority for VoIP and card auth
# CAKE shares the fibre fairly per host first: one busy boat cannot starve the others
/queue type
add name=cake-up kind=cake cake-diffserv=diffserv4 cake-nat=yes cake-flowmode=dual-srchost
add name=cake-down kind=cake cake-diffserv=diffserv4 cake-flowmode=dual-dsthost
/ip firewall mangle
# lift VoIP and card-auth into the priority tin so a full hotspot never delays them
add chain=prerouting action=change-dscp new-dscp=46 src-address=10.80.10.0/24 \
    protocol=udp dst-port=10000-20000 comment="VoIP RTP"
add chain=prerouting action=change-dscp new-dscp=34 src-address=10.80.50.0/24 \
    comment="card auth"
add chain=forward action=mark-packet new-packet-mark=from-fibre in-interface=ether1 \
    passthrough=no
/queue tree
add name=wan-up parent=ether1 queue=cake-up max-limit=90M
add name=wan-down parent=global packet-mark=from-fibre queue=cake-down max-limit=450M

CAKE gives per-host fairness, so one liveaboard pulling a system update can't starve forty other boats, and its NAT mode sees the real inside host behind the masquerade. On top of that, the two flows that must never wait — VoIP from the office and card authorisations from the payment VLAN — are marked into CAKE's priority tin, so even a saturated hotspot doesn't add a beat of delay to a phone call or a card tap. Set the limit just under the fibre's real throughput, because CAKE only controls latency when the queue lives in R1.

Checkpoint: test this before building the next step

13 · Step 9 of 10

Remote Management & Monitoring

The marina dials out to the operator. Then it reports a dead pontoon before a sailor does.

▲ Show step 9 in the interactive topology · see what this step adds, and click any device for its config

R1 — WireGuard to the operator hub, alerts and remote logs
/interface wireguard add name=wg-ops listen-port=13231
/interface wireguard peers add interface=wg-ops comment="operator hub" \
    public-key="<hub public key>" endpoint-address=hub.example.net endpoint-port=51820 \
    allowed-address=10.251.0.0/24 persistent-keepalive=25s
/ip address add address=10.251.0.31/24 interface=wg-ops
/interface list member add list=MGMT interface=wg-ops
/system logging action add name=hub target=remote remote=10.251.0.1
/system logging add topics=warning action=hub
# watch the fibre path and every pontoon switch; a dead pontoon is a silent outage
/tool netwatch add host=1.1.1.1 interval=30s type=simple \
    down-script=":log warning \"fibre DOWN\"" up-script=":log warning \"fibre UP\""
/tool netwatch add host=10.80.99.21 interval=60s type=simple \
    down-script=":log warning \"Pontoon A offline\""

Both WANs are behind carrier NAT, so management is an outgoing WireGuard tunnel to the operator's hub, exactly as in the coffee shop. With the keepalive it survives the switch to 5G and reconnects itself. The valuable addition here is a netwatch per pontoon: a flooded or lightning-struck pontoon box goes quiet, and the operator sees Pontoon A offline in the hub's log — an outage that would otherwise surface as a liveaboard walking up the dock to complain.

Checkpoint: test this before building the next step

14 · Step 10 of 10

Power, Lightning & Salt

A harbour cuts power, draws lightning and breathes salt. The network rides through the first, survives the second, and is built to be repaired after the third.

ItemWhat and why
UPSA line-interactive UPS in the rack carries R1, SW-CORE and the 5G modem through the brown-outs a harbour sees when big boats draw shore power. Set it to restart loads automatically when power returns.
Lightning & surgeThe pontoon masts are the tallest things for a mile. Fibre keeps a strike off the data path; still fit surge protection on the shore-power feed into every pontoon box, and bond the box to the pontoon's earth.
Salt & ingressIP66/67 enclosures, stainless fixings, dielectric grease on every outdoor connector, and drip loops so water runs off the cable, not into the gland. Budget a service visit before each season.
Replaceable pontoon boxesKeep a spare box pre-staged. A swap pulls its config from the hub and it rejoins in minutes; nothing depends on hand-tuning out on the water.
HardeningManagement only from the MGMT list (V99 + the tunnel), the default admin disabled, DHCP snooping on SW-CORE with the uplink trusted, and the hotspot's RADIUS secret and voucher store kept off any synced or world-readable location (see hardening).
Checkpoint: the handover test

15

Verify Before the Season

Run these at handover, write the results in the marina's documentation, and repeat the WAN and power drills before each season.

Drill (requirement)What must happen
Walk the pontoons (R1)A phone on a video call walks the length of each pontoon without dropping; the far berth is usable.
Neighbour sweep (R2)From Marina-WiFi, a scan finds only the gateway. No other boat, camera, meter or till answers.
Voucher (R3)A voucher logs in, applies its rate cap and quota, and expires at the end of the stay; the code never appears in a log.
Payment isolation (R4)From the till VLAN, only the acquirer answers on 443; the LAN and the rest of the internet do not.
Busy pontoon & WAN out (R5)Under a saturated hotspot, a card auth and a VoIP call stay fast; on 5G, berths throttle and payments don't.
Pull a pontoon box (R6)Swapping in the spare restores from the hub; the pontoon is back within minutes with nobody re-typing config.
OT reach (R7)Staff reach the shore-power controller and the fuel dock; a boat on the berth VLAN cannot.
Remote care (R8)The operator reaches R1 through the tunnel over fibre and over 5G; a dead pontoon raises a log alert.

16

Residual Risk

What the network can't do on its own, and what covers each gap.

17

The Attacker's View

I test networks like this for a living. Here's what I'd try against a marina full of strangers on boats, and why each one is a decision rather than an oversight.

18

Lab It in CHR / GNS3

The routing, the hotspot, billing, failover and queues all run on CHR. The fibre, the sectors and salt water don't.

This postIn the lab
R1 + dual-WANA CHR with two WAN links fed by two "ISP" CHRs handing out carrier-NAT addresses; pull one to test the recursive failover.
Hotspot + User ManagerFully testable on CHR: create a profile and a voucher, connect a VM to V20, and watch the portal, the rate cap and the accounting.
Pontoon boxes, fibreCHR bridges; a plain virtual link stands in for each fibre run.
Sector Wi-FiSkip it, or tag VMs into V20 to stand in for boats.

19

Bill of Materials

Indicative EU street prices, late 2026, excluding VAT. Fibre, conduit and the marine install labour dwarf the electronics and vary by harbour.

ItemIndicative (EUR, ex VAT)
R1 · CCR2004-16G-2S+380 – 480
SW-CORE · CRS328-24P-4S+ + DAC440 – 560
4× pontoon box (netPower 16P + IP66 enclosure + SPD)300 – 420 each
4× 2.4 GHz sector AP (mANTBox-class)150 – 220 each
5G backup (Chateau 5G ax)220 – 320, plus a data SIM
UPS + per-pontoon surge protection400 – 700
Electronics total≈ 3,500 – 5,500, plus single-mode fibre, marine conduit and install

Appendix

The Same Design on Cisco

Same marina and VLANs on Cisco's line. The Cisco tabs on the config blocks above show where it differs; this appendix covers the rest.

RoleThis post → Cisco
R1 + 5GCCR2004 + Chateau 5G → Catalyst 8200 with a cellular module
SW-CORE (PoE)CRS328-24P-4S+ → Catalyst 9300-24P
Pontoon boxesnetPower → Catalyst IE3300 rugged, IP-rated switches
Sector Wi-FimANTBox → Catalyst outdoor APs / Ultra-Reliable Wireless Backhaul
Billing / captive portalHotspot + User Manager → ISE guest portal (a separate appliance/licence)
Indicative total≈ 3,500 – 5,500 → ≈ 16,000 – 26,000 EUR ex VAT
What actually changes in the design

The billing is the big divergence. RouterOS runs the hotspot, the RADIUS server and the voucher store on the router you already bought; the Cisco equivalent is ISE (or a third-party captive-portal appliance) as a separate box with its own licence, and the accounting lives there instead of on the marina's router. And there is no CAKE, so per-boat fairness becomes a shaper with fair-queue plus an LLQ class for VoIP and card auth.

For a single marina, MikroTik is the clear fit. Cisco makes sense only when a port authority already standardises on it across many harbours.

Takeaways

  1. Every boat is a stranger. Client-isolate the berth network and sell access per berth, the mirror image of the villa's one-group rule.
  2. Carry the pontoons on fibre, not copper. It beats the distance, the galvanic path and the lightning conductor in one move, and generates PoE locally.
  3. Pick reach over throughput over water. 2.4 GHz sectors down the fairway, planned like cells, beat a faster band that can't get past a mast.
  4. Own the billing. Hotspot and User Manager on the router keep the customer list and the money-path on the marina's own hardware and survive a WAN outage.
  5. Seal the money and the safety systems. Payment reaches only the acquirer; shore-power and fuel answer only to staff; neither shares fate with a full hotspot.
  6. Build the pontoon boxes to be replaced. Salt and lightning win eventually; a spare that restores from the hub turns an outage into a short swap.

This is part 11 of the Build series. Earlier: the café chain, the holiday villa, the festival, the off-grid farm. The marina is the one that fights salt water and lightning for a living.

Running a marina or harbour in Crete?

I build marina networks like this one: metered Wi-Fi that reaches the far berth, a sealed money-path at the fuel dock, shore-power and cameras kept apart, fibre that keeps the sea out of your rack, and remote care so a dead pontoon is a message, not a complaint.

Network & IT consulting in Crete →