Hello all, I am new to the group. I am having issues trying to get bird configured to do what I need. I have Bird running in a datacenter with eBGP public ASN that should announce /24 and /48 and /64. I then want to route that over OpenVPN to OPNsense where I have bird connected with iBGP over openvpn and sending /28 of the /24 and /64 of the /48 down to the OPNsense that is running FRR iBGP and setup on DMZ interface.
I had eBGP working to the peers at the datacenter, but after a reboot it never worked again for ipv4, IPv6 still shows announcing, but doesn't seem to be working either. I am confused as to if I am required to have the /48 static routes to the eBGP router as well as the /24? Since I am not routing those I am sending smaller subnets to each location. My plan is to have two ASN eBGP routers in different locations that will handle routing and failover if a location goes down that connect to 4 different location using iBGP sending each /28 and /64 (maybe 2 /64). That way if needed I could route the public IPs for he DMZ to any cluster we have in different locations to allow them push as close to 100% uptime as I can. Design so far: eBGP-Vegas: 209.x.x.55 iBGP-Dallas: 10.77.77.1 eBGP ASN assigned has routes: route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 209.x.x.1 0.0.0.0 UG 100 0 0 eth0 10.0.0.0 10.144.144.1 255.255.255.0 UG 5000 0 0 ztjlhw736o 10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0 10.77.77.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 10.144.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ztjlhw736o 23.x.x.0 10.77.77.1 255.255.255.240 UG 0 0 0 tun0 209.x.x.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 209.x.x.1 0.0.0.0 255.255.255.255 UH 100 0 0 eth0 The provider says I must announce the /48 before I announce the /64. I am not sure if I even need to announce the /64. I announce the /24 only not the /28 on public side eBGP. This is the part that I don't get. If I don't put routes to next-hop for 23.x.x.0/24 via 10.77.77.1 If I don't do a static route then eBGP ignores the prefix and doesn't announce it. I did try multi-protocol for eBGP and put it all under one session but seems they don't have it configure on the other end to allow one session. What is the correct way to announce for the /24 and /48 and route to other locations the /28 and /48 prefixes? I don't want to bind the /24 or /48 (or at least I don't think we need to) just as I need to break them up into smaller subnets. I can ping from my DMZ in the OPnsense firewall thru the VPN to 10.77.77.2 so iBGP is getting its routes and they work. But still can't figure out what I am doing wrong with eBGP to get it working. They told me I don't need multihop on the eBGP side and must announce the full prefix too, but if I don't put a route it never exports the prefixes. Maybe I am missing something. I am new to this. Yes I do have passwords on all the sessions, just didn't include them in the config. Any help or direct would be appreciated. If you need more information, let me know. Jason Here is my bird.conf: # Configure logging #log syslog all; log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug }; # Set router ID. It is a unique identification of your router. router id 209.x.x.55; # Restrict network interfaces BIRD works with protocol direct { interface "lo"; interface "eth0"; interface "tun0"; } # For IPv4 protocol kernel kernel_ipv4 { ipv4; persist; scan time 60; } # For IPv6 protocol kernel kernel_ipv6 { ipv6; persist; scan time 60; } # The Device protocol gets information about network interfaces. protocol device { scan time 60; } # Define static routes for IPv4 protocol static { ipv4; route 23.x.x.0/24 via 10.77.77.1; route 23.x.x.0/28 via 10.77.77.1; } # Define static routes for IPv6 protocol static { ipv6; route 2620:X:X::/48 via fd12:3456:X:1::2; route 2620:X:X:1::/64 via fd12:3456:X:1::2; } filter ipv4_filter_private { if net ~ 23.x.x.0/28 then { accept; } reject; } filter ipv4_filter_public { if net ~ 23.x.x.0/28 then { reject; } if net ~ 23.x.x.0/24 then { accept; } reject; } filter ipv6_filter { if net ~ [2620:x:x::/48, 2620:x:x:1::/64] then { accept; } reject; } filter dallas_ipv6_filter { if net = 2620:x:x:1::/64 then { accept; } reject; } # BGP configuration for peer_as53xxx_v4 protocol bgp neighbor_53xxx_v4 { debug all; local as 16xxx; source address 209.x.x.55; local 209.x.x.55; passive no; keepalive time 20; hold time 60; multihop; neighbor 169.x.x.179 as 53xxx; ipv4 { import none; export filter ipv4_filter_public; }; } # BGP configuration for peer_as53xxx protocol bgp neighbor_53xxx_v6 { debug all; local as 16xxx; source address 2605:x:x:713::2; local 2605:x:x:713::2; passive no; keepalive time 20; hold time 60; multihop; neighbor 2605:x:x::2 as 53xxx; ipv6 { import none; export filter ipv6_filter; }; } protocol bgp OPNsense_iBGP_Dallas { debug all; local as 16xxx; source address 10.77.77.2; neighbor 10.77.77.1 as 64512; multihop; ipv4 { import none; export filter ipv4_filter_private; next hop self; }; ipv6 { import none; #import filter ipv6_filter; export filter dallas_ipv6_filter; #export none; next hop self; }; } Here are stats of bird: birdc show proto all BIRD 2.0.7 ready. Name Proto Table State Since Info direct1 Direct --- up 11:36:52.931 kernel_ipv4 Kernel master4 up 11:36:52.931 Channel ipv4 State: UP Table: master4 Preference: 10 Input filter: ACCEPT Output filter: REJECT Routes: 0 imported, 0 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 0 0 --- 0 0 Export updates: 4 0 4 --- 0 Export withdraws: 0 --- --- --- 0 kernel_ipv6 Kernel master6 up 11:36:52.931 Channel ipv6 State: UP Table: master6 Preference: 10 Input filter: ACCEPT Output filter: REJECT Routes: 0 imported, 0 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 0 0 --- 0 0 Export updates: 4 0 4 --- 0 Export withdraws: 0 --- --- --- 0 device1 Device --- up 11:36:52.931 static1 Static master4 up 11:36:52.931 Channel ipv4 State: UP Table: master4 Preference: 200 Input filter: ACCEPT Output filter: REJECT Routes: 2 imported, 0 exported, 2 preferred Route change stats: received rejected filtered ignored accepted Import updates: 2 0 0 0 2 Import withdraws: 0 0 --- 0 0 Export updates: 0 0 0 --- 0 Export withdraws: 0 --- --- --- 0 static2 Static master6 up 11:36:52.931 Channel ipv6 State: UP Table: master6 Preference: 200 Input filter: ACCEPT Output filter: REJECT Routes: 2 imported, 0 exported, 2 preferred Route change stats: received rejected filtered ignored accepted Import updates: 2 0 0 0 2 Import withdraws: 0 0 --- 0 0 Export updates: 0 0 0 --- 0 Export withdraws: 0 --- --- --- 0 neighbor_53xxx_v4 BGP --- up 11:36:57.076 Established BGP state: Established Neighbor address: 169.x.x.179 Neighbor AS: 53xxx Local AS: 16xxx Neighbor ID: 169.x.x.179 Local capabilities Multiprotocol AF announced: ipv4 Route refresh Graceful restart 4-octet AS numbers Enhanced refresh Long-lived graceful restart Neighbor capabilities Multiprotocol AF announced: ipv4 ipv6 Route refresh Graceful restart Restart time: 120 AF supported: ipv4 ipv6 AF preserved: 4-octet AS numbers Enhanced refresh Long-lived graceful restart Session: external multihop AS4 Source address: 209.x.x.55 Hold timer: 53.667/60 Keepalive timer: 13.062/20 Channel ipv4 State: UP Table: master4 Preference: 100 Input filter: REJECT Output filter: ipv4_filter_public Routes: 0 imported, 1 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 1726 0 --- 1726 0 Export updates: 2 0 1 --- 1 Export withdraws: 0 --- --- --- 0 BGP Next hop: 209.x.x.55 IGP IPv4 table: master4 neighbor_53xxx_v6 BGP --- up 11:36:57.630 Established BGP state: Established Neighbor address: 2605:x:x::2 Neighbor AS: 53xxx Local AS: 16xxx Neighbor ID: 169.x.x.179 Local capabilities Multiprotocol AF announced: ipv6 Route refresh Graceful restart 4-octet AS numbers Enhanced refresh Long-lived graceful restart Neighbor capabilities Multiprotocol AF announced: ipv4 ipv6 Route refresh Graceful restart Restart time: 120 AF supported: ipv4 ipv6 AF preserved: 4-octet AS numbers Enhanced refresh Long-lived graceful restart Session: external multihop AS4 Source address: 2605:x:x:713::2 Hold timer: 55.462/60 Keepalive timer: 11.057/20 Channel ipv6 State: UP Table: master6 Preference: 100 Input filter: REJECT Output filter: ipv6_filter Routes: 0 imported, 2 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 12 0 --- 12 0 Export updates: 2 0 0 --- 2 Export withdraws: 0 --- --- --- 0 BGP Next hop: 2605:x:x:713::2 IGP IPv6 table: master6 OPNsense_iBGP_Dallas BGP --- up 11:36:55.259 Established BGP state: Established Neighbor address: 10.77.77.1 Neighbor AS: 64512 Local AS: 16xxx Neighbor ID: 10.77.77.1 Local capabilities Multiprotocol AF announced: ipv4 ipv6 Route refresh Graceful restart 4-octet AS numbers Enhanced refresh Long-lived graceful restart Neighbor capabilities Multiprotocol AF announced: ipv4 ipv6 Route refresh Extended message Graceful restart 4-octet AS numbers ADD-PATH RX: ipv4 ipv6 TX: Enhanced refresh Long-lived graceful restart LL stale time: 0 AF supported: AF preserved: ipv4 ipv6 Session: external multihop AS4 Source address: 10.77.77.2 Hold timer: 8.540/9 Keepalive timer: 1.429/3 Channel ipv4 State: UP Table: master4 Preference: 100 Input filter: REJECT Output filter: ipv4_filter_private Routes: 0 imported, 1 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 1 0 --- 1 0 Export updates: 2 0 1 --- 1 Export withdraws: 0 --- --- --- 0 BGP Next hop: 10.77.77.2 IGP IPv4 table: master4 Channel ipv6 State: UP Table: master6 Preference: 100 Input filter: REJECT Output filter: dallas_ipv6_filter Routes: 0 imported, 1 exported, 0 preferred Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 1 0 --- 1 0 Export updates: 2 0 1 --- 1 Export withdraws: 0 --- --- --- 0 BGP Next hop: fd12:x:x:1::2 IGP IPv6 table: master6 root@localhost:/etc/bird# birdc show route all BIRD 2.0.7 ready. Table master4: 23.x.x.0/28 unicast [static1 11:36:52.931] * (200) via 10.77.77.1 on eth0 Type: static univ 23.x.x.0/24 unicast [static1 11:36:52.931] * (200) via 10.77.77.1 on eth0 Type: static univ Table master6: 2620:x:x:1::/64 unicast [static2 11:36:52.931] * (200) via fd12:x:x:1::2 on tun0 Type: static univ 2620:x:x::/48 unicast [static2 11:36:52.931] * (200) via fd12:x:x:1::2 on tun0 Type: static univ