BGP Basic — Implementasi eBGP Pada MikroTik
IDNIC Training
Implementasi akan dilakukan secara virtual menggunakan EVE-NG
Prolog
Kita sebagai Network Engineer di sebuah perusahaan. Karena kebutuhan internet dan data center yang semakin luas menuntut adanya network improvement pada perusahaan kita saat ini. Kita sudah terdaftar dan mendapatkan AS Number dan IP publik v4 v6. Saat ini kita juga sudah berlangganan 1 transit upstream secara single-homed
Topologi
Rules konfigurasi router BGP:
- Mengirimkan prefix IP publik
- Menggunakan routing filter untuk mencegah IP bogon ter-advertise ke neighbor peer BGP
- Untuk melakukan pengetesan, IP Prefix dipasang pada interface Loopback dan dilakukan ping pada prefix yang diterima
IP bogon adalah ip milik client atau berada dalam LAN
Langkah konfigurasi:
- Basic/initial config
- Config filtering
- Config BGP
- Testing link
Initial Config
- Aktifkan fitur IPv6
//MikroTik-2 dan MikroTIk-3
system package print
system package enable numbers=2//output
Flags: X - disabled
# NAME VERSION SCHEDULED
0 routeros-x86 6.48.1
1 system 6.48.1
2 X ipv6 6.48.1
- System direstart
//MikroTik-2 dan MikroTIk-3
system reboot
- Cek kembali
//MikroTik-2 dan MikroTIk-3
system package print//output
Flags: X - disabled
# NAME VERSION SCHEDULED
0 routeros-x86 6.48.1
1 system 6.48.1
2 ipv6 6.48.1
- Set bridge untuk interface loopback
//MikroTik-2 dan MikroTIk-3
interface bridge add name=loopback1 comment=Link-to-Lan
interface print
Menggunakan interface loopback karena virtual, bukan diarahkan ke end-user
- Set IP Address
//MikroTik-2
ip address add address=101.1.1.1 interface=eth2 comment=ip-ptp-bgp
ip address add address=202.2.1.1 interface=loopback1 comment=ip-lo-bgp-advipv6 address add address=2400:2400:b:1::1/64 interface=eth2 advertise=no comment=ipv6-ptp-bgp
ipv6 address add address=2404:A600:B100:1000::1/64 interface=loopback1 advertise=no comment=ipv6-lo-bgp-adv//MikroTik-3
ip address add address=101.1.1.2 interface=eth1 comment=ip-ptp-bgp
ip address add address=202.2.1.2 interface=loopback1 comment=ip-lo-bgp-advipv6 address add address=2400:2400:b:1::2/64 interface=eth1 advertise=no comment=ipv6-ptp-bgp
ipv6 address add address=2404:A600:B100:1000::2/64 interface=loopback1 advertise=no comment=ipv6-lo-bgp-adv
- Test ping ke loopback, IPv4, dan IPv6 ke MikroTik-3
//MikroTik-2
ping 101.1.1.2//output
SEQ HOST SIZE TTL TIME STATUS
0 101.1.1.2 56 64 0ms
1 101.1.1.2 56 64 0ms
sent=2 received=2 packet-loss=0% min-rtt=0ms avg-rtt=0ms max-rtt=0ms//MikroTik-3
ping 101.1.1.1//output
SEQ HOST SIZE TTL TIME STATUS
0 101.1.1.1 56 64 0ms
1 101.1.1.1 56 64 0ms
sent=2 received=2 packet-loss=0% min-rtt=0ms avg-rtt=0ms max-rtt=0ms
Filtering
Tujuan filtering supaya prefix yang kita terima (ingress) dan yang kita kirim sesuai dan tidak ada IP bogon/sampah
- Tidak menerima adv network kita sendiri dari neighbor peer
- Tidak menerima adv default route IPv4 dan IPv6 dari neighbor peer
- Tidak menerima adv IP bogon dari neighbor peer
- Menerima prefix dari neighbor peer
- Mengirim prefix dari neighbor peer
Filter Input
- Filter discard own prefix
Digunakan untuk menolak adv prefix kita sendiri guna mencegah routing loop
//MikroTik-2 dan MikroTik-3
routing filter add chain=ip-bgp-in prefix=202.2.1.0/24 action=discardrouting filter add chain=ip-bgp-in prefix=2404:A600:B100:1000::0/48 action=discard
- Filter discard default route
Digunakan untuk menolak adv default route supaya jalur routing lebih spesifik
//MikroTik-2 dan MikroTik-3
routing filter add chain=ip-bgp-in prefix=0.0.0.0/0 action=discardrouting filter add chain=ip-bgp-in prefix=::/0 action=discard
- Filter discard bogon (IPv4)
Untuk menolak adv ip bogor supaya prefix yang kita terima lebih bersih
//MikroTik-2 dan MikroTik-3
routing filter add chain=ip-bgp-in action=jump jump-target=ip-bogon
routing filter add chain=ip-bogon prefix=0.0.0.0/8 action=discard
routing filter add chain=ip-bogon prefix=10.0.0.0/8 action=discard
routing filter add chain=ip-bogon prefix=127.0.0.0/8 action=discard
routing filter add chain=ip-bogon prefix=169.254.0.0/8 action=discard
routing filter add chain=ip-bogon prefix=172.16.0.0/12 action=discard
routing filter add chain=ip-bogon prefix=192.168.0.0/16 action=discard
Filter Output
- Filter out prefix
Digunakan untuk filtrasi network prefix yang akan di adv, statement invert-match=yes digunakan untuk melakukan penandaan dan action=discard untuk drop packet pada semua prefix selain yang disebutkan
outgoing hanya boleh adv ip publik kita aja
//MikroTik-2 dan MikroTik-3
routing filter add chain=ip-bgp-out prefix=202.2.1.0/24 invert-match=yes action=discardrouting filter add chain=ip-bgp-out prefix=2404:A600:B100:1000::0/48 invert-match=yes action=discard
- Verifikasi
//MikroTik-2 dan MikroTik-3
routing filter print where chain=ip-bgp-in
routing filter print where chain=ip-bgp-out
BGP Config
- Membuat instance dan aktifkan BGP dan peer dengan router BGP neighbor IPv4
//MikroTik-2
routing bgp instance add as=1 name=ASN1 router-id=2.2.2.2//MikroTik-3
routing bgp instance add as=2 name=ASN2 router-id=3.3.3.3
Jika konfigurasi dengan IPv6, maka ngga perlu membuat instance lagi
- Konfigurasi network IPv4 yang akan di adv
//MikroTik-2 dan MikroTik-3
routing bgp network add network=202.2.1.0/24 synchronize=norouting bgp network add network=2404:A600:B100:1000::0/48 synchronize=no
- Konfigurasi peering dengan BGP neighbor
//MikroTik-2
routing bgp peer add instance=ASN1 name=to-ASN2-MikroTik-3 remote-address=101.1.1.2 remote-as=2 in-filter=ip-bgp-in out-filter=ip-bgp-outrouting bgp peer add instance=ASN1 name=to-ASN2-MikroTik-3 remote-address=2400:2400:b:1::2 remote-as=2 in-filter=ip-bgp-in out-filter=ip-bgp-out//MikroTik-3
routing bgp peer add instance=ASN2 name=to-ASN1-MikroTik-2 remote-address=101.1.1.1 remote-as=1 in-filter=ip-bgp-in out-filter=ip-bgp-outrouting bgp peer add instance=ASN2 name=to-ASN1-MikroTik-2 remote-address=2400:2400:b:1::1 remote-as=1 in-filter=ip-bgp-in out-filter=ip-bgp-out
- Verifikasi
//MikroTik-2 dan MikroTik-3
routing bgp peer print detail
routing bgp advertisements print
ip route print
ipv6 route print
Kalo flag sudah bertanda E, maka BGP sudah peer dan siap untuk bertukar prefix
Testing
- Ping ke end-user neighbor (dalam kasus ini, berarti loopback)
ping 101.1.1.1
ping 101.1.1.2ping 2400:2400:b:1::1
ping 2400:2400:b:1::2