Introduction
I'm attempting to set up basic communication with the RIPv2 protocol between two hosts running the BIRD routing daemon.
I've got Host A
with an interface enp0
that has address 10.0.1.50/24
.
I've got another host Host B
with an interface enp1
that has address 10.1.1.25/24
. These interfaces are directly connected by cable. I can ping between both machines if I add a static route on both machines.
Configuration Files
I have the following bird.conf
on Host A
:
protocol kernel {
learn; # Learn all alien routes from the kernel
persist; # Don't remove routes on bird shutdown
scan time 20; # Scan kernel routing table every 20 seconds
export all; # Default is export none
}
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}
protocol direct {
interface "enp0"
}
protocol rip MyRIP {
export all;
import all;
interface "enp0" { mode multicast;};
}
The bird.conf
on Host B
is identical except the enp0
is replaced with enp1
Initial Results
After starting the bird daemon on both hosts, I can do a tcpdump -ni enp0 -vv
13:21:41.943537 IP (tos 0xc0, ttl 1, id 4933, offset 0, flags [none], proto UDP (17), length 132)
10.1.1.25.520 > 224.0.0.9.7742: [udp sum ok] UDP, length 104
13:21:41.943704 IP (tos 0xc0, ttl 1, id 150, offset 0, flags [none], proto UDP (17), length 272)
10.0.1.50.520 > 224.0.0.9.7742: [bad udp cksum 0xec48 -> 0x1219!] UDP, length 244
I can hop inside the birdcl
command-line and run show rip neighbors
and get an empty table.
Making it work
If I set the addresses to be on the same subnet, I can run show rip neighbors
and I can see 10.0.1.50
in my lists of neighbors.
Wrap-up
How can I get these routers to list each other as neighbors if the two ends of the link aren't on the same subnet?
I must have some sort of incorrect mental picture of how networks work, don't routers need talk to neighbors which aren't on the same subnet all the time?
I'm not hung up on a BIRD-specific answer.