bsd/ospf | bsd/ospf-n-bgp | bsd/bgp | cisco/ospf | cisco/ospf-n-bgp | cisco/bgp
Here we have three OSPF routers sharing a single area, and with a global default route.
Router IDs (type Router) do not need to have a true IP on the wire. Those do not conflict with routed IPs (type Network).
There’s no default route defined on any router here but on router2.
Enable forwarding
sysctl net.inet.ip.forwarding=1 echo net.inet.ip.forwarding=1 >> /etc/sysctl.conf
vpcs*
ip 10.0.0.1/24 10.0.0.254 ip 10.3.3.1/24 10.3.3.254 save
workstation (libvirt)
no need for static routes because we’re doing NAT within the PoC (on router2)
router*
hostname router1 hostname router2 hostname router3 vi /etc/myname router1 router2 router3 vi /etc/hostname.vio0 inet 10.1.1.1/24 inet 10.1.1.254/24 inet 10.2.2.1/24 vi /etc/hostname.vio1 inet 10.0.0.254/24 inet 10.2.2.254/24 inet 10.3.3.254/24 # router2 only --- gateway gets defined there vi /etc/hostname.vio2 dhcp ls -lF /etc/mygate # no exist
apply network setup
sh /etc/netstart
router*
vi /etc/ospfd.conf # router1 router-id 1.1.1.1 redistribute connected area 0.0.0.0 { interface vio0 } # router2 has a default route router-id 2.2.2.2 redistribute connected redistribute default area 0.0.0.0 { interface vio0 interface vio1 } # router3 router-id 3.3.3.3 redistribute connected area 0.0.0.0 { interface vio0 } chmod 600 /etc/ospfd.conf
make sure there’s NO DEFAULT GATEWAY defined but on router2
netstat -rn -f inet
you will need your own nat for all your networks to reach virbr0 (192.168.122.0/24)
router2 only
mv /etc/pf.conf /etc/pf.conf.dist vi /etc/pf.conf pass out on vio2 from 10.0.0.0/24 to any nat-to (vio2) pass out on vio2 from 10.1.1.0/24 to any nat-to (vio2) pass out on vio2 from 10.2.2.0/24 to any nat-to (vio2) pass out on vio2 from 10.3.3.0/24 to any nat-to (vio2) pfctl -nf /etc/pf.conf pfctl -f /etc/pf.conf
try it once in debug mode
ospfd -d ^C
enable at boot-time and start
tail -f /var/log/daemon rcctl enable ospfd rcctl start ospfd
check status and terminate
rcctl check ospfd rcctl stop ospfd
show your neighbors, shared and aquired routes
ospfctl show neighbor ospfctl show rib ospfctl show fib ospf
then ping a leaf node from one side of the network to another, and also try to reach the public network to some DNS open relay that actually conflicts with some of our router IDs (does NOT conflict)
vpcs1
ping 10.4.4.1 trace 10.4.4.1 ping 1.1.1.1 trace 1.1.1.1
in case you’re having your own workstation instead e.g. the left-hand leaf node, you need to tune the routes as it has a better default route already.
(linux)
ip route add 10.0.0.0/24 via 192.168.122.X ip route add 10.1.1.0/24 via 192.168.122.X ip route add 10.2.2.0/24 via 192.168.122.X ip route add 10.3.3.0/24 via 192.168.122.X
enabling auth between routers
interface xnf0 { auth-type simple auth-key PASSWORD-HERE }
ospfd.conf — Open Shortest Path First daemon configuration file https://man.openbsd.org/ospfd.conf.5
OpenBGPD Presentations and Papers http://www.openbgpd.org/papers.html
Routing with OpenBSD https://www.openbsd.org/papers/linuxtag06-network/index.html
OpenBSD FAQ - Networking https://www.openbsd.org/faq/faq6.html
OpenBSD FAQ - System Management https://www.openbsd.org/faq/faq10.html
Howto OSPF sous OpenBSD https://wiki.evolix.org/HowtoOpenBSD/OSPF
VPLS basic test setup https://github.com/rwestphal/openbsd-ldpd/wiki/VPLS-basic-test-setup
Configure Some Basic OSPF Routing Scenarios https://www.alliedtelesis.com/sites/default/files/documents/configuration-guides/howto_aw-_config_basic_ospf_routing_revd.pdf
How to configure OSPF Default Route https://networklessons.com/ospf/how-to-configure-ospf-default-route