As a child, I often struggled with managing my home network. For example, my home had three floors and three routers. I wanted to make sure that devices connected to each router could communicate with each other. However, if I turned on DHCP Server on each of the routers, the routers would become independent networks that couldn’t communicate with each other.

Later, I discovered that by using a bridge to turn one router into a DHCP server and the others into AP or switch, I could achieve the same network and interconnectivity.

However, this time we want to build a “remote network” that crosses L3, and we can’t use the same DHCP Server to connect. Therefore, we will have two networks.

Previously, I shared a tutorial on FRRouting installation, so we can also use BGP and VPN Tunnel to build interconnectivity between different networks.

Prerequisites

The router must be a Linux system or a router that can use BGP.
e.g. RouterOS, Cisco IOS, Junos, etc.

Linux routing packages, recommended as follows:

Router:

  • R1
  • R2

Using FRRouting to Create BGP Interconnectivity

This article will use FRRouting as a demonstration.

PS. Both routers must support BGP, otherwise NAT devices must be used for interconnectivity.

Configuring Router IP Addresses

First, we configure the IP addresses of the routers on both sides.

R1:

  • 10.0.1.1/24
  • DHCP assigns 10.0.1.2 - 10.0.1.254

R2:

  • 10.0.2.1/24
  • DHCP assigns 10.0.2.2 - 10.0.2.254

Then we announce network 10.0.1.0/24 from router A to B. Correspondingly, router B announces network 10.0.2.0/24 to A.

Checking Status

After the BGP Session between the two sides is established, we check the system routing table ip route.

You should see the following route:
10.0.1.0/24 via peer_tunnel_ip dev tunnel0 proto bgp metric 20

Then you can try using mtr or ping to see if the devices behind the other router’s network are connected!

Configuration File

R1

Current configuration:
!
frr version 7.3.1
frr defaults traditional
hostname gateway-tw
log syslog informational
service integrated-vtysh-config
!
router bgp 209557
 neighbor 10.121.1.22 remote-as 209557
 neighbor 10.121.1.22 description JP-Gateway
 !
 address-family ipv4 unicast
  network 10.0.1.0/24
 exit-address-family
!
line vty
!
end

R2

Current configuration:
!
frr version 7.3.1
frr defaults traditional
hostname gateway-tw
log syslog informational
service integrated-vtysh-config
!
router bgp 209557
 neighbor 10.121.1.21 remote-as 209557
 neighbor 10.121.1.21 description TW-Gateway
 !
 address-family ipv4 unicast
  network 10.0.2.0/24
 exit-address-family
!
line vty
!
end

After completion, the effect will be similar to this:

Follow-up

If you do not want to use BGP or OSPF, you can also add a Static Route directly using the ip route command.

ip route add 10.0.1.0/24 via peer_tunnel_ip dev tunnel_interfaces