## Overview
This covers the complete static routing configuration for a chain of 8 Cisco routers, connecting a T-Lab OPNsense gateway through to a test PC on a dedicated LAN segment at the far end.
## Physical Layout
```
[OPNsense - Dell R210 II]
192.168.1.1
|
[Cisco Catalyst 4849]
(Layer 2 — no config needed)
|
R1 ← Cisco 2900
WAN: 192.168.1.107 (static, from OPNsense LAN)
|
192.168.10.0/30
|
R2
|
192.168.20.0/30
|
R3
|
192.168.30.0/30
|
R4
|
192.168.40.0/30
|
R5
|
192.168.50.0/30
|
R6
|
192.168.60.0/30
|
R7
|
192.168.70.0/30
|
R8
LAN: 192.168.80.1
|
192.168.80.0/24
|
[Test PC]
(DHCP from R8)
```
---
## Network Summary
|Link|Left Side|IP|Right Side|IP|Mask|
|---|---|---|---|---|---|
|Link 1|R1|`192.168.10.1`|R2|`192.168.10.2`|`/30`|
|Link 2|R2|`192.168.20.1`|R3|`192.168.20.2`|`/30`|
|Link 3|R3|`192.168.30.1`|R4|`192.168.30.2`|`/30`|
|Link 4|R4|`192.168.40.1`|R5|`192.168.40.2`|`/30`|
|Link 5|R5|`192.168.50.1`|R6|`192.168.50.2`|`/30`|
|Link 6|R6|`192.168.60.1`|R7|`192.168.60.2`|`/30`|
|Link 7|R7|`192.168.70.1`|R8|`192.168.70.2`|`/30`|
|R8 LAN|R8|`192.168.80.1`|Test PC|DHCP|`/24`|
> All point-to-point links use `255.255.255.252` (`/30`), providing exactly 2 usable host addresses per link.
## Routing Logic
Every router must have a static route for **every network it is not directly connected to.**
- Traffic heading **toward the test PC** → next-hop is always the **right-hand neighbour**
- Traffic heading **toward OPNsense** → next-hop is always the **left-hand neighbour**
---
## Router Configurations
### R1 — Cisco 2900 (T-Lab Entry Point)
R1's WAN interface should be set as a **static IP** to prevent the OPNsense return route from breaking on DHCP renewal.
```
Router1> enable
Router1# configure terminal
! Set static WAN IP
Router1(config)# interface GigabitEthernet0/0
Router1(config-if)# ip address 192.168.1.107 255.255.255.0
Router1(config-if)# no shutdown
Router1(config-if)# exit
! Default route toward OPNsense
Router1(config)# ip route 0.0.0.0 0.0.0.0 192.168.1.1
! Route to test PC LAN
Router1(config)# ip route 192.168.80.0 255.255.255.0 192.168.10.2
! Routes to all downstream link subnets
Router1(config)# ip route 192.168.20.0 255.255.255.252 192.168.10.2
Router1(config)# ip route 192.168.30.0 255.255.255.252 192.168.10.2
Router1(config)# ip route 192.168.40.0 255.255.255.252 192.168.10.2
Router1(config)# ip route 192.168.50.0 255.255.255.252 192.168.10.2
Router1(config)# ip route 192.168.60.0 255.255.255.252 192.168.10.2
Router1(config)# ip route 192.168.70.0 255.255.255.252 192.168.10.2
```
---
### R2
```
Router2> enable
Router2# configure terminal
! Routes toward test PC (rightward)
Router2(config)# ip route 192.168.80.0 255.255.255.0 192.168.20.2
Router2(config)# ip route 192.168.30.0 255.255.255.252 192.168.20.2
Router2(config)# ip route 192.168.40.0 255.255.255.252 192.168.20.2
Router2(config)# ip route 192.168.50.0 255.255.255.252 192.168.20.2
Router2(config)# ip route 192.168.60.0 255.255.255.252 192.168.20.2
Router2(config)# ip route 192.168.70.0 255.255.255.252 192.168.20.2
! Route toward OPNsense (leftward)
Router2(config)# ip route 192.168.1.0 255.255.255.0 192.168.10.1
```
---
### R3
```
Router3> enable
Router3# configure terminal
! Routes toward test PC (rightward)
Router3(config)# ip route 192.168.80.0 255.255.255.0 192.168.30.2
Router3(config)# ip route 192.168.40.0 255.255.255.252 192.168.30.2
Router3(config)# ip route 192.168.50.0 255.255.255.252 192.168.30.2
Router3(config)# ip route 192.168.60.0 255.255.255.252 192.168.30.2
Router3(config)# ip route 192.168.70.0 255.255.255.252 192.168.30.2
! Routes toward OPNsense (leftward)
Router3(config)# ip route 192.168.1.0 255.255.255.0 192.168.20.1
Router3(config)# ip route 192.168.10.0 255.255.255.252 192.168.20.1
```
---
### R4
```
Router4> enable
Router4# configure terminal
! Routes toward test PC (rightward)
Router4(config)# ip route 192.168.80.0 255.255.255.0 192.168.40.2
Router4(config)# ip route 192.168.50.0 255.255.255.252 192.168.40.2
Router4(config)# ip route 192.168.60.0 255.255.255.252 192.168.40.2
Router4(config)# ip route 192.168.70.0 255.255.255.252 192.168.40.2
! Routes toward OPNsense (leftward)
Router4(config)# ip route 192.168.1.0 255.255.255.0 192.168.30.1
Router4(config)# ip route 192.168.10.0 255.255.255.252 192.168.30.1
Router4(config)# ip route 192.168.20.0 255.255.255.252 192.168.30.1
```
---
### R5 (Middle)
```
Router5> enable
Router5# configure terminal
! Routes toward test PC (rightward)
Router5(config)# ip route 192.168.80.0 255.255.255.0 192.168.50.2
Router5(config)# ip route 192.168.60.0 255.255.255.252 192.168.50.2
Router5(config)# ip route 192.168.70.0 255.255.255.252 192.168.50.2
! Routes toward OPNsense (leftward)
Router5(config)# ip route 192.168.1.0 255.255.255.0 192.168.40.1
Router5(config)# ip route 192.168.10.0 255.255.255.252 192.168.40.1
Router5(config)# ip route 192.168.20.0 255.255.255.252 192.168.40.1
Router5(config)# ip route 192.168.30.0 255.255.255.252 192.168.40.1
```
---
### R6
```
Router6> enable
Router6# configure terminal
! Routes toward test PC (rightward)
Router6(config)# ip route 192.168.80.0 255.255.255.0 192.168.60.2
Router6(config)# ip route 192.168.70.0 255.255.255.252 192.168.60.2
! Routes toward OPNsense (leftward)
Router6(config)# ip route 192.168.1.0 255.255.255.0 192.168.50.1
Router6(config)# ip route 192.168.10.0 255.255.255.252 192.168.50.1
Router6(config)# ip route 192.168.20.0 255.255.255.252 192.168.50.1
Router6(config)# ip route 192.168.30.0 255.255.255.252 192.168.50.1
Router6(config)# ip route 192.168.40.0 255.255.255.252 192.168.50.1
```
---
### R7
```
Router7> enable
Router7# configure terminal
! Route toward test PC (rightward)
Router7(config)# ip route 192.168.80.0 255.255.255.0 192.168.70.2
! Routes toward OPNsense (leftward)
Router7(config)# ip route 192.168.1.0 255.255.255.0 192.168.60.1
Router7(config)# ip route 192.168.10.0 255.255.255.252 192.168.60.1
Router7(config)# ip route 192.168.20.0 255.255.255.252 192.168.60.1
Router7(config)# ip route 192.168.30.0 255.255.255.252 192.168.60.1
Router7(config)# ip route 192.168.40.0 255.255.255.252 192.168.60.1
Router7(config)# ip route 192.168.50.0 255.255.255.252 192.168.60.1
```
---
### R8 (Far End — Test PC Gateway)
```
Router8> enable
Router8# configure terminal
! Static WAN address
Router8(config)# interface [WAN-interface]
Router8(config-if)# ip address 192.168.70.2 255.255.255.252
Router8(config-if)# no shutdown
Router8(config-if)# exit
! LAN interface for test PC
Router8(config)# interface [LAN-interface]
Router8(config-if)# ip address 192.168.80.1 255.255.255.0
Router8(config-if)# no shutdown
Router8(config-if)# exit
! Default route — sends all unknown traffic back up the chain
Router8(config)# ip route 0.0.0.0 0.0.0.0 192.168.70.1
```
> Use `show ip interface brief` to identify the correct interface names before applying.
## Verification
### Check Routing Tables
Run on every router — look for `S` (static) entries:
```
show ip route
```
### Check Interface Status
Both `Status` and `Protocol` columns must show `up`:
```
show ip interface brief
```
### Test End-to-End Ping
From R1, ping the test PC gateway:
```
ping 192.168.80.1
```
From R1, ping with source interface to verify return path:
```
ping 192.168.80.1 source GigabitEthernet0/0
```
### Trace the Full Path
```
traceroute 192.168.80.1
```
Expected output: **R1 → R2 → R3 → R4 → R5 → R6 → R7 → R8**
## Troubleshooting
|Symptom|Likely Cause|Fix|
|---|---|---|
|Ping fails at a specific hop|Missing static route on that router|Run `show ip route` — look for missing `S` entry|
|Traffic goes out but no reply|Missing OPNsense return route, or missing leftward route on a router|Check OPNsense routes and verify leftward routes on each router|
|Interface down|Interface not enabled|Run `show ip interface brief`, apply `no shutdown`|
|Wrong next-hop|Typo in `ip route` command|Next-hop must be the **neighbour's** IP, not your own|
|R1 route breaks after reboot|R1 WAN is still on DHCP|Set R1 WAN to static `192.168.1.107` as shown above|
## Key Concepts
**`/30` point-to-point links** — Using `255.255.255.252` gives exactly 2 usable host addresses per link, which is all that is needed between two routers. This conserves address space.
**Longest prefix match** — When a router has multiple routes that could match a destination, it always uses the most specific one (the longest prefix). This is why OPNsense's local `/24` route takes priority over any `/16` summary.
**Default route** (`0.0.0.0/0`) — A catch-all used on R1 (toward OPNsense) and R8 (toward the chain). Matches any destination not covered by a more specific route.
**Static vs dynamic routing** — This guide uses fully manual static routing. In larger networks, protocols like **OSPF** or **EIGRP** would build these tables automatically. Static routing is excellent for learning because it requires you to understand every path explicitly.