BGP adalah perekat Internet. Untuk protokol, yang diambil
pada dua serbet pada tahun 1989, secara bersamaan mengejutkan dan mengerikan bahwa ia menangani hampir semua interaksi antara ISP, menjadi bagian mendasar dari Internet.
BGP memiliki reputasi yang buruk terutama karena sifat kepercayaan dari tautan antara rekan secara default dan tugas yang sulit untuk memverifikasi keabsahan rute. Itulah sebabnya di mana-mana kami mendengar tentang peretasan BGP dengan berbagai tingkat keparahan: dari mengubah perutean
semua YouTube ke
AWS Route 53 .
Tetapi untuk memahami sifat dari peretasan ini, Anda perlu memahami topologi Internet. Mari kita mulai dengan router tunggal:
Router tunggal tidak banyak berguna jika tidak bisa merutekan apa pun. Oleh karena itu, kita akan menghubungkan router lain ke level fisik (bisa berupa apa saja: dari tembaga Ethernet dan serat optik bawah air hingga 802.11 tautan Wi-Fi).
Kemudian, dua router yang terhubung (dalam kasus kami merah dan biru) harus memahami bahwa mereka dapat merutekan lalu lintas satu sama lain. Lagi pula, titik router adalah untuk mengarahkan lalu lintas dari satu tujuan ke tujuan lain.
Seperti disebutkan di atas, cara umum untuk melakukan ini antara ISP adalah menginstal BGP di kedua sisi, dan membiarkan mereka "mengumumkan" satu sama lain bahwa mereka dapat merutekan lalu lintas:

Tetapi tidak terlalu berguna jika mereka hanya berbicara satu sama lain, tiba-tiba router merah dan biru tidak terhubung langsung? Semakin banyak router yang terhubung, semakin rumit topologi perutean yang kita bentuk. Ini dimungkinkan karena setiap peer BGP berbagi tabel routing dengan rekan-rekan lain yang terhubung:

Bagaimana router bertukar informasi satu sama lain tergantung pada kebijakan konfigurasi, dan ini biasanya tergantung pada kondisi dunia nyata untuk node tetangga. Ada berbagai pengaturan untuk klien, perjanjian pertukaran lalu lintas dan penyedia layanan yang lebih tinggi.
Karena itu, router memerlukan satu set instruksi yang diprogram untuk menyaring apa yang tidak ingin mereka berikan atau ambil dari node lain. Tetapi dari waktu ke waktu, penyerang mendapatkan akses ke router yang terhubung ke router lain yang tidak memiliki filter tersebut. Memperbaiki ini pada tingkat perangkat lunak
sangat sulit , karena memerlukan perubahan pada router masing-masing penyedia. Upaya sebelumnya
tidak tersebar luas .
BGP memiliki cara untuk menyandikan informasi menggunakan rute yang disebut komunitas. Ini didefinisikan dalam RFC1997 (sayangnya, ditulis pada tahun 1996, sedikit terlewatkan). Komunitas dapat dilampirkan ke deklarasi rute dan terdiri dari nomor 32-bit. Dalam praktiknya, nilai ini dibagi menjadi dua angka 16-bit (satu untuk ASN dan satu untuk sinyal yang terkait dengan / untuk ASN ini):

Mereka digunakan untuk mengirimkan informasi tambahan tentang rute, misalnya, di mana penyedia mengambil rute ini:

Ini berguna dalam hal penyaringan. Misalnya, jika Anda memiliki banyak penyedia dan Anda mencoba untuk tidak mengeluarkan lalu lintas di luar negara, maka Anda dapat menggunakan komunitas yang sesuai untuk mengarahkan lalu lintas di sepanjang rute ini.
Itu membuat saya berpikir. Apa lagi yang bisa saya berikan sinyal melalui komunitas? Dan seberapa jauh Anda bisa melangkah?
Setelah beberapa pengujian, ternyata setiap jaringan
Tier-1 menghapus komunitas, kecuali untuk
Level 3 sebelumnya , yang memungkinkan transfer komunitas dari router sumber ke klien. Ini juga berarti bahwa satu router dapat mengirim informasi ke orang lain, bahkan tanpa koneksi langsung.
Pertempuran laut
Mengetahui tentang keberadaan saluran komunikasi tidak langsung melalui BGP, saya ingin entah bagaimana menggunakan ini untuk membangun beberapa komunikasi non-tradisional. Saya memilih "pertempuran laut" sebagai medianya, karena permainan ini membutuhkan transmisi sejumlah informasi minimum (koordinat X dan Y, serta informasi tentang tembakan terakhir: mengenai atau gagal).
Dua game di BGP dua komunitas telah dibuat.

Seluruh permainan cocok dalam dua angka 16-bit, memungkinkan permainan yang andal melalui dua komunitas.
Karena pertempuran laut adalah permainan untuk dua orang, saya mengundang
AS203729 untuk bermain. Terhubung ke BGP di New York, dan instalasi saya berfungsi di London.
Saat merencanakan permainan, kami berasumsi bahwa karena frekuensi memperbarui rute, kami dapat
mengurangi lalu lintas BGP . Karena kami berdua duduk di lalu lintas produksi nyata, kami sepakat untuk mengatur timer 30 detik untuk setiap gerakan, karena redaman akan menyebabkan kegagalan pada server produksi.
Lalu lintas lain juga melewati router game, jadi saya harus menjaga daemon routing online dan tidak mungkin untuk menggunakan daemon BGP khusus. Untuk mengatasi batasan ini, biner game menghasilkan dan memuat ulang konfigurasi BIRD menggunakan soket kontrol daemon untuk memilih perubahan rute.
Dengan pengaturan ini, pada 16 Mei 2018,
AS206924 dan
AS203729 mungkin memainkan permainan papan pertama dalam sejarah yang dilakukan murni di BGP.

Permainan berjalan lancar, dengan pengecualian jeda 45 menit karena redaman di atas. Ini terjadi di pihak saya dan membuat Level 3 menerapkan rute yang kurang optimal untuk lalu lintas saya selama 45 menit. Untuk mencegah terulangnya situasi, kami memutuskan untuk beralih ke periode 90 detik antara gerakan.
Meskipun demikian, pukulan terakhir ke armada teman saya
AS203729 diberikan pada langkah 68. Yang menjadikan saya pemenang pertama dari permainan papan yang dilakukan menggunakan protokol perutean Internet publik.
Apakah itu logis? Mungkin tidak. Apakah itu menyenangkan?
Astaga, ya.Kode sumber telah
diterbitkan di kedua sisi, meskipun saya tidak menyarankan mengulangi percobaan ini.
Sampai waktu berikutnya!