Page 1 of 1

BuyVM BGP - no IPv6 advertisements

Posted: Fri Apr 12, 2024 12:29 am
by neelc
I'm running a private LNS for the purpose of running an IPv6 tunnel via L2TP. I have my own ASN and IP and am advertising them on a BuyVM VPS. I am running CHR 7.14.2.

My problem is, when I advertise IPv6, CHR can establish a BGP session but isn't advertising prefixes:
[admin@MikroTik] /routing/bgp> connection/print
Flags: D - dynamic, X - disabled, I - inactive 
 0   name="buyvm" 
     remote.address=2605:6400:ffff::2 .as=53667 
     local.address=2605:6400:XX:X::1 .role=ebgp 
     tcp-md5-key="XXXXXXXX" connect=yes listen=yes routing-table=main 
     as=XXXXX multihop=yes 
[admin@MikroTik] /routing/bgp> session/print
Flags: E - established 
 0 E name="buyvm-1" 
     remote.address=2605:6400:ffff::2 .as=53667 .id= 
     .capabilities=mp,rr,gr,as4,err,llgr .afi=ip,ipv6 .hold-time=4m 
     .messages=7 .bytes=137 .gr-time=120 .gr-afi=ip,ipv6 .eor=ip 
     local.address=2605:6400:XX:X::1 .as=XXXXX .id=198.98.XX.XX
     .capabilities=mp,rr,gr,as4 .messages=6 .bytes=114 .eor="" 
     output.procid=20 .network=bgpnet 
     input.procid=20 ebgp 
     multihop=yes hold-time=3m keepalive-time=1m uptime=5m52s770ms 
     last-started=2024-04-11 17:00:40 prefix-count=0 
[admin@MikroTik] /routing/bgp> advertisements/print

[admin@MikroTik] /routing/bgp>
My config is:
set slot1 slot=slot1
set slot2 slot=slot2
/interface ethernet
set [ find default-name=ether1 ] arp=proxy-arp disable-running-check=no
/ip pool
add name=ppp-pool ranges=
/ipv6 pool
add name=ppp-pd prefix=2602:XXX:2::/48 prefix-length=56
/ppp profile
set *0 dhcpv6-pd-pool=ppp-pd remote-address=ppp-pool
/routing bgp template
set default as=XXXXX router-id=198.98.XX.XX
/interface l2tp-server server
set enabled=yes
/ip dhcp-client
add interface=ether1
/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=\
    established,related hw-offload=yes
add action=accept chain=forward connection-state=established,related
/ipv6 route
add gateway=2605:6400:10::1
add dst-address=2605:6400:ffff::2/128 gateway=2605:6400:10::1
add blackhole dst-address=2602:XXX:2::/48
add blackhole dst-address=2602:XXX:3::/48
/ipv6 address
add address=2605:6400:XX:X::1/48 advertise=no interface=ether1
/ipv6 firewall address-list
add address=2602:XXX:2::/48 list=bgpnet
add address=2602:XXX:3::/48 list=bgpnet
/ppp secret
add name=neel service=l2tp
add name=joyent remote-address=198.98.XX.XXX service=l2tp
/routing bgp connection
add as=XXXXX connect=yes disabled=no input.accept-nlri=bgpnet listen=yes \
    local.address=2605:6400:XX:X::1 .role=ebgp multihop=yes name=buyvm \ remote.address=2605:6400:ffff::2 .as=53667 \
I got BGP working on OpenBGPD on both FreeBSD and Rocky Linux, but FreeBSD is a very slow IPv4-only LNS and accel-ppp on Rocky has buggy IPv6.

I'm not a professional network engineer, I nearly passed a CCNA but then decided to become a software engineer instead and in turn am only now getting my head around BGP.

Re: BuyVM BGP - no IPv6 advertisements

Posted: Fri Apr 12, 2024 1:28 pm
by Cha0s
You need to create a routing filter that will accept your prefixes and then apply it to the outgoing filter of your bgp connection.

something like
/routing filter rule
add chain=BGP-OUT disabled=no rule="if ( dst == 2602:XXX:2::/48 ) { accept; }"
add chain=BGP-OUT disabled=no rule="if ( dst == 2602:XXX:3::/48 ) { accept; }"

Re: BuyVM BGP - no IPv6 advertisements

Posted: Sat Apr 13, 2024 7:57 am
by neelc
Unfortunately, that didn't work for BuyVM.

I learned BuyVM's BGP implementation is very finicky. BuyVM is awesome for many reasons, but their BGP really sucks.

I was able to get CHR BGP working on Neptune Networks. Neptune has a terrible control panel, it fails all the time. But hey, their BGP actually works with CHR.

Re: BuyVM BGP - no IPv6 advertisements

Posted: Sat Apr 13, 2024 3:50 pm
by Cha0s
What do those providers have to do with what MikroTik advertises to them or anyone else?

Re: BuyVM BGP - no IPv6 advertisements

Posted: Thu Apr 18, 2024 9:00 pm
by neelc
I figured out the real issue: I needed
in the
/routing bgp connection
. Apparently RouterOS runs BGP on IPv4 by default, MikroTik support while very slow was very helpful in this case.

So yay, I have a dual-stack tunnelbroker LNS now. Yay!

Neptune initially advertised IPv6 for some reason, but stopped after a while.