STUN Server: apa itu, cara kerja dan di mana digunakan

Penulis: IT Sectr Diterbitkan: 2026-06-02 Waktu membaca: 8 mnt

STUN Server — adalah server dari protokol Session Traversal Utilities for NAT (STUN), yang memungkinkan klien menentukan alamat IP eksternal dan port-nya sendiri, serta jenis Network Address Translation (NAT) di belakangnya. Menurut IETF RFC 5389, 2008, STUN adalah komponen wajib infrastruktur WebRTC yang memastikan pembuatan koneksi peer-to-peer langsung antara klien di belakang NAT.

Poin Utama

  • STUN Server — simpul jaringan yang membantu klien menentukan alamat IP publik dan jenis NAT untuk mengatur koneksi P2P.
  • Prinsip — klien mengirim permintaan STUN, server merespons dengan alamat IP dan port asal permintaan, mengungkapkan data alamat eksternal klien.
  • Peran di WebRTC — server STUN digunakan pada tahap ICE Candidate Gathering untuk mengumpulkan kandidat dan memeriksa kemungkinan koneksi langsung.
  • Keterbatasan — STUN tidak bekerja dengan NAT simetris (Symmetric NAT), di mana alamat eksternal berubah untuk setiap host tujuan.
  • Alternatif — jika STUN gagal, server TURN digunakan yang meneruskan lalu lintas melalui simpul relay.

Apa itu STUN Server

STUN Server (Session Traversal Utilities for NAT) — adalah layanan jaringan yang beroperasi berdasarkan protokol yang didefinisikan dalam RFC 5389 dan diperbarui dalam RFC 8489. Tugas utama server STUN adalah memberikan informasi kepada klien tentang alamat IP publik dan port-nya sendiri yang terlihat dari jaringan eksternal, serta menentukan jenis perangkat NAT antara klien dan internet.

Arsitektur STUN mencakup dua komponen: klien STUN yang tertanam dalam aplikasi (misalnya, browser atau aplikasi WebRTC native) dan server STUN yang ditempatkan di jaringan publik. Klien mengirim STUN Binding Request ke server, yang dalam responsnya menunjukkan alamat IP dan port sumber permintaan — yaitu alamat publik klien yang dilihat oleh server. Dengan membandingkan data ini dengan alamat lokal, klien dapat menentukan jenis NAT apa yang digunakan di jaringannya.

Protokol STUN

STUN bekerja melalui UDP (port 3478 secara default) atau TCP (port 3478 atau 5349 untuk TLS). Pesan STUN terdiri dari header 20-byte dan sejumlah atribut yang bervariasi. Header berisi jenis pesan (Binding Request, Binding Response, Binding Error Response), panjang, dan pengidentifikasi transaksi unik (96 bit) yang memungkinkan pencocokan permintaan dan respons. Setiap Binding Response berisi atribut XOR-MAPPED-ADDRESS — alamat eksternal klien, yang dikodekan dengan masking untuk melindungi dari serangan berdasarkan penyadapan lalu lintas STUN.

Cara kerja server STUN

Server STUN bekerja berdasarkan protokol permintaan-respons sederhana. Klien yang berada di belakang NAT membentuk Binding Request dan mengirimkannya ke server STUN. Server menerima paket, mengekstrak dari header UDP alamat IP sumber dan port pengirim, kemudian membentuk Binding Response dengan mengemas alamat ini ke dalam atribut XOR-MAPPED-ADDRESS. Respons dikirim kembali ke alamat sumber permintaan.

Klien menerima respons dan mengekstrak XOR-MAPPED-ADDRESS, yang berisi alamat IP eksternal dan port yang ditetapkan oleh perangkat NAT. Kemudian klien membandingkan alamat ini dengan alamat lokalnya (RFC 1919 — privat). Jika alamat cocok — klien tidak berada di belakang NAT. Jika berbeda — klien berada di belakang NAT, dan alamat eksternal digunakan sebagai kandidat untuk ICE (Interactive Connectivity Establishment) di WebRTC.

Proses Deteksi NAT (NAT Discovery)

Server STUN memungkinkan penentuan jenis NAT melalui serangkaian permintaan uji. Klien mengirim permintaan dengan berbagai flag (CHANGE-REQUEST) dan menganalisis respons. Siklus deteksi lengkap mencakup pengiriman permintaan ke berbagai alamat IP dan port server STUN. Jika server merespons permintaan dengan port yang diubah — NAT jenis Restricted Cone. Jika tidak merespons permintaan dengan port dan IP yang diubah — NAT jenis Symmetric. Informasi ini sangat penting untuk pemilihan strategi ICE di WebRTC.

Server STUN dan jenis NAT

Server STUN mampu menentukan empat jenis utama NAT, yang masing-masing mempengaruhi kemungkinan pembentukan koneksi P2P secara berbeda. Jenis NAT menentukan apakah STUN dapat menyediakan koneksi langsung antara dua klien. Dari jenis NAT tergantung kandidat ICE mana — host, server reflexive, atau relay — yang akan digunakan untuk koneksi.

Jenis NATPerilakuSTUN berfungsiICE Fallback
Full ConeHost eksternal mana pun dapat mengirim paket ke klienYaServer Reflexive
Restricted ConeHanya host yang pernah dikirimi paket oleh klienYaServer Reflexive
Port RestrictedSeperti Restricted, tetapi juga memfilter berdasarkan port sumberYaServer Reflexive
Symmetric NATAlamat eksternal unik untuk setiap pasangan host:portTidakRelay (TURN)

Symmetric NAT — satu-satunya jenis yang tidak dapat diatasi oleh STUN. Pada Symmetric NAT, setiap permintaan baru ke host tujuan baru mendapatkan alamat eksternal yang berbeda (IP dan/atau port). Karena server STUN melaporkan alamat untuk koneksi dengan server STUN itu sendiri, alamat ini tidak dapat digunakan untuk koneksi dengan klien lain. Dalam kasus seperti itu, di WebRTC digunakan server TURN untuk meneruskan lalu lintas. Menurut penelitian (Ford et al., RFC 3489, 2003), sekitar 8–10% dari semua perangkat NAT di internet bersifat simetris.

Penggunaan server STUN di WebRTC

Server STUN diintegrasikan ke dalam WebRTC melalui konfigurasi RTCPeerConnection. Browser atau aplikasi native menggunakan STUN untuk mengumpulkan kandidat ICE, yang kemudian dipertukarkan melalui Signaling Server. Dalam konfigurasi WebRTC, server STUN ditentukan dalam array iceServers dengan awalan stun: untuk UDP atau stuns: untuk koneksi TLS.

Mari kita lihat contoh konfigurasi server STUN di JavaScript saat membuat RTCPeerConnection untuk aplikasi WebRTC.

js
const config = {
    iceServers: [
        {
            urls: "stun:stun.l.google.com:19302"
        },
        {
            urls: "stun:stun1.l.google.com:19302"
        }
    ]
};

const pc = new RTCPeerConnection(config);

pc.onicecandidate = (event) => {
    if (event.candidate) {
        console.log("Kandidat ICE:", event.candidate.candidate);
    }
};

const offer = await pc.createOffer();
await pc.setLocalDescription(offer);

Dalam contoh ini, server STUN publik Google (stun.l.google.com:19302) digunakan. Saat membuat offer atau answer, browser secara otomatis mengirim STUN Binding Request ke server yang ditentukan, menerima alamat eksternal (server reflexive candidate) dan menambahkannya ke daftar kandidat ICE. Setelah semua kandidat terkumpul, mereka dikirim ke mitra jarak jauh melalui Signaling Server untuk mencoba membuat koneksi P2P langsung.

Jenis Kandidat ICE dan STUN

Dalam proses ICE ada tiga jenis kandidat: host (alamat lokal), srflx (server reflexive — diperoleh dari STUN) dan relay (diteruskan melalui TURN). Server STUN memastikan munculnya kandidat srflx, yang memiliki prioritas lebih tinggi daripada relay, karena koneksi melalui STUN bersifat langsung dan tidak memerlukan penerusan. Proses ICE memeriksa semua kombinasi kandidat (lokal dan diperoleh dari STUN) dari kedua pihak, dimulai dari prioritas tertinggi.

Keterbatasan protokol STUN

Server STUN memiliki keterbatasan fundamental terkait arsitektur protokol. Keterbatasan utama adalah ketidakmampuan bekerja dengan Symmetric NAT, di mana setiap permintaan baru ke host eksternal mendapatkan port eksternal yang unik. Dalam hal ini, alamat yang diperoleh dari server STUN tidak dapat digunakan untuk koneksi dengan mitra lain, karena NAT telah membuat ikatan hanya untuk komunikasi dengan server STUN itu sendiri.

Keterbatasan kedua terkait dengan fakta bahwa STUN tidak menyediakan penerusan data. Jika koneksi P2P langsung tidak memungkinkan (kedua pihak berada di belakang Symmetric NAT), STUN tidak menyediakan jalur alternatif untuk transmisi data. Dalam hal ini diperlukan server TURN, yang bertindak sebagai penerus lalu lintas media antara pihak, menerima data dari satu peserta dan mengirimkannya ke peserta lain melalui alamat IP publiknya.

  • Symmetric NAT — STUN tidak bekerja dengan NAT simetris, karena alamat eksternal unik untuk setiap host tujuan dan tidak dapat digunakan kembali untuk P2P.
  • Firewall Deep Packet Inspection — beberapa firewall memblokir lalu lintas STUN dengan mendeteksinya berdasarkan tanda tangan protokol dalam paket UDP pada port 3478.
  • IPv6 — di jaringan IPv6, NAT biasanya tidak digunakan, sehingga STUN tidak diperlukan, tetapi WebRTC di IPv6 dapat menggunakan kandidat host tanpa perlu STUN atau TURN.
  • Ketergantungan pada ketersediaan — server STUN harus dapat diakses oleh klien pada tahap pembentukan koneksi, jika tidak kandidat srflx tidak akan terkumpul.
  • Keamanan — protokol STUN rentan terhadap serangan amplifikasi (amplification attack) jika server dikonfigurasi dengan tidak benar dan merespons permintaan dengan alamat sumber palsu.

Meskipun memiliki keterbatasan, server STUN tetap menjadi komponen penting infrastruktur WebRTC. Dalam sebagian besar kasus (80–90%), koneksi P2P langsung dapat dibuat dengan bantuan STUN, yang memungkinkan menghindari biaya penerusan TURN dan mengurangi latensi transmisi data media. Untuk aplikasi WebRTC publik, disarankan menggunakan kombinasi server STUN dan TURN dengan fallback otomatis untuk menjamin koneksi dalam segala kondisi jaringan.

Pertanyaan yang Sering Diajukan

Apa itu server STUN dengan kata sederhana?

Server STUN — adalah cermin di internet yang memberi tahu klien alamat IP eksternalnya. Ketika komputer berada di belakang router (NAT), ia tidak mengetahui alamat publiknya. Server STUN membantu mengetahuinya sehingga komputer lain dapat terhubung secara langsung.

Bagaimana server STUN digunakan di WebRTC?

Di WebRTC, server STUN ditentukan dalam konfigurasi RTCPeerConnection. Browser mengirim permintaan STUN untuk mendapatkan alamat eksternal kandidat (srflx). Kandidat ini diteruskan ke mitra jarak jauh melalui Signaling Server, dan ICE mencoba membuat koneksi langsung di antara mereka.

Apa perbedaan antara server STUN dan TURN?

STUN membantu mengetahui alamat eksternal untuk koneksi P2P langsung. TURN meneruskan lalu lintas melalui server sendiri ketika P2P tidak memungkinkan. STUN adalah cermin, TURN adalah perantara. TURN membebani server dan menambah latensi, oleh karena itu STUN lebih disukai.

Server STUN publik apa yang dapat digunakan?

Google menyediakan server STUN gratis: stun.l.google.com:19302, stun1.l.google.com:19302. Twilio juga menyediakan infrastruktur STUN + TURN melalui layanan Network Traversal Service. Untuk aplikasi produksi, lebih baik menggunakan server STUN/TURN sendiri atau komersial dengan ketersediaan terjamin.

Mengapa STUN tidak bekerja dengan Symmetric NAT?

Symmetric NAT membuat pemetaan port eksternal yang unik untuk setiap pasangan alamat lokal:alamat tujuan eksternal. Alamat yang diterima klien dari server STUN terikat pada koneksi dengan server STUN ini. Ketika mitra lain mencoba menggunakan alamat ini, Symmetric NAT memblokir paket karena pemetaan port berbeda untuk alamat tujuan baru.

Kesimpulan

  • STUN Server — simpul jaringan yang mengimplementasikan protokol RFC 5389 untuk menentukan alamat IP eksternal dan port klien di belakang NAT.
  • Prinsip kerja — klien mengirim Binding Request, server merespons dengan XOR-MAPPED-ADDRESS yang berisi alamat publik sumber permintaan.
  • Jenis NAT — STUN bekerja dengan Full Cone, Restricted Cone, dan Port Restricted NAT, tetapi tidak dapat mengatasi Symmetric NAT.
  • Peran di WebRTC — STUN digunakan pada tahap ICE Candidate Gathering untuk membentuk kandidat srflx dengan alamat eksternal.
  • Keterbatasan — tidak bekerja dengan Symmetric NAT, dapat diblokir oleh firewall DPI, tidak menyediakan penerusan data.
  • Server gratis — stun.l.google.com:19302 dan server STUN publik lainnya cukup untuk pengujian dan sebagian besar skenario.
  • Rekomendasi — selalu gunakan STUN dalam kombinasi dengan server TURN sebagai fallback untuk menjamin koneksi dalam segala kondisi jaringan.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga