Yusuke membuat lubang tepat di NAT Anda
Penafian : Ini bukan aplikasi obrolan siap produksi. Meskipun membuat koneksi terenkripsi AES client <-> client
dan client <-> server
, kode ini belum diaudit atau diuji oleh spesialis keamanan mana pun. Ini hanyalah sebuah latihan bagi saya untuk mempelajari lebih lanjut tentang jaringan dan teknologi P2P serta memberikan beberapa contoh teknologi yang digunakan bagi orang lain yang tertarik untuk mempelajarinya. Selain itu, klien udp tidak menerapkan protokol yang menjamin keberhasilan pengiriman pesan sehingga beberapa pesan akan hilang karena koneksi yang tidak stabil.
Klik gambar di atas untuk menonton video YouTube tentang cara kerja aplikasi obrolan. Terminal di sudut kanan atas di-SSH menjadi VPS yang menjalankan server pertemuan. Terminal di kanan bawah adalah terminal UI. Aplikasi web di sebelah kiri adalah GUI.
go get github.com/wilfreddenton/udp-hole-punching
Paket utamanya adalah server pertemuan. Temukan VPS atau sesuatu untuk menampungnya. Anda dapat menjalankan semuanya secara lokal tetapi tidak akan benar-benar menguji apakah pelubangan berfungsi atau tidak karena dilakukan pada mesin yang sama. Pastikan server memiliki port TCP dan UDP yang terbuka untuk lalu lintas masuk dari 0-65535.
Untuk menjalankannya:
go install
Ada dua UI yang dapat Anda gunakan gui
yaitu UI web dan term-ui
yang merupakan UI terminal. Anda dapat menggunakan kombinasi UI apa pun.
Sebelum Anda menggunakannya, Anda harus membuka file main.go
dan mengalihkan konstanta serverTCPIP
dan serverUDPIP
ke alamat IP server pertemuan Anda (tanpa port).
Untuk menjalankan UI web
cd gui/ui
npm install
npm run build
cd ..
go install
gui
jika server pertemuan Anda berjalan secara lokal atau gui -serverIP=<server IP here>
localhost:8000
Untuk memutuskan sambungan dan memulai obrolan baru cukup segarkan.
Untuk menjalankan UI terminal
cd term-ui
go install
term-ui
jika server rendezvouse Anda berjalan secara lokal term-ui -serverIP=<server IP here>
Untuk memutuskan sambungan dan memulai obrolan baru ctrl-c
untuk keluar dari program dan menjalankannya kembali.
Jika bukan teman maka dapatkan akses ke komputer di belakang router lain dan atur klien di sana.
Jalankan klien dan berikan PeerID dari satu klien ke klien lain dan jika topologi jaringan mengizinkan pelubangan maka Anda akan membuat koneksi terenkripsi antara klien.
ID
rekan yang ingin diajak berkomunikasiUntuk membuat penerapan pelubangan sedikit lebih sederhana, klien tidak mencoba menyambung ke alamat IP pribadi masing-masing. Klien yang menggunakan NAT yang sama akan tetap dapat terhubung tetapi mereka akan melakukannya dengan alamat IP publik dan bukan alamat IP pribadi. Router yang saya uji sepertinya memahami bahwa rekan-rekannya berada di jaringan lokalnya dan memfasilitasi koneksi tanpa harus pergi ke internet luar.