Mengapa Linux tidak menggunakan rentang port IANA Ephemeral?

30

Menurut Wikipedia

Internet Assigned Numbers Authority (IANA) menyarankan kisaran 49152 hingga 65535 untuk port dinamis atau pribadi. Banyak kernel Linux menggunakan kisaran port 32768 hingga 61000.

Meskipun tampaknya ada beberapa penyimpangan historis dari rentang yang disarankan IANA, tampaknya canggung bahwa Windows Vista, Windows 7, Windows Server 2008, FreeBSD 4.6+ dan banyak lainnya telah menyetujui kisaran ini namun Linux tetap menonjol.

Melihat ke dalamnya, lihatlah:

$ cat /proc/sys/net/ipv4/ip_local_port_range 
32768   61000

Mengapa Linux belum mengadopsi rentang standar?

Evan Carroll
sumber

Jawaban:

21

Ada saat ketika IANA hanya menetapkan port hingga 1023. Lihat RFC1700 . Pada suatu waktu ini adalah standar. Sebagian besar waktu saya tidak mengalami kesulitan menemukan ketika hal-hal berubah dalam aliran RFC tetapi untuk pertanyaan tentang mengubah port dari 1024 ke 49152 dari terdaftar menjadi ditugaskan saya datang pendek.

Dalam hal sejarah Linux, ada pertanyaan yang diajukan tentang ip_local_port_range default pada tahun 2007. Pada saat itu diputuskan untuk menggunakan rentang Linux yang Anda sebutkan karena takut bahwa nomor port yang tinggi dapat menyebabkan masalah dan memulai kisaran 49152 mungkin meninggalkan terlalu sedikit nomor port di kolam renang. Lihat ini dan utasnya. Pikiran yang diungkapkan pada saat itu adalah bahwa mulai 32768 adalah dalam semangat prosedur IANA, jika tidak sepenuhnya sesuai. Dalam membaca ini saya menyimpulkan bahwa pengembang mengasumsikan sebagian besar tugas akan terjadi dari bagian bawah rentang dan naik. Pada tulisan ini saya menghitung lebih dari 100 nomor port yang ditetapkan (tidak termasuk protokol berbeda sebagai terpisah) antara 32768 dan 49152, sehingga telah bertahan cukup baik selama lima tahun terakhir.

Saya tidak tahu mengapa kisaran ini dianggap terlalu kecil, tetapi saya dapat membayangkan dua alasan:

  1. Nomor port diacak untuk menggagalkan serangan tertentu. Semakin banyak alamat di kolam, semakin baik pertahanan ini dapat bekerja.
  2. Server aktivitas tinggi mungkin mengalami masalah dengan kelelahan nomor port. Meskipun port mungkin fana, penggunaannya tidak instan. Khususnya soket dapat bertahan beberapa menit setelah TCP ditutup.

Posting blog ini menyentuh pada nomor 2, dan menyarankan jawaban jika Anda ingin sistem Linux Anda menggunakan berbagai port lokal yang berbeda. (Menggunakan /etc/sysctl.d untuk menentukan rentang yang Anda suka. Ada juga entri ip_local_reserved_ports yang mungkin berguna jika konflik muncul. Ini cocok dengan entri / proc / sys yang Anda kutip.)

Singkatnya. Default Linux tidak sesuai dengan spesifikasi IANA saat ini, tetapi sistem Linux tertentu dapat, jika diinginkan.

John S Gruber
sumber
1
Menurut RFC 6056 , "Seperti disebutkan dalam Bagian 2.1, port dinamis terdiri dari kisaran 49152-65535. Namun, algoritma pemilihan port sesaat harus menggunakan seluruh rentang 1024-65535." - Kedengarannya seperti nilai yang ip_local_port_rangeseharusnya tidak digunakan.
Evan Carroll
1
Berikut adalah utas tentang Linux yang menggunakan port di dekat langit
Evan Carroll
@evan RFC 6056 selanjutnya mengatakan bahwa "nomor port yang mungkin diperlukan untuk menyediakan layanan tertentu di host lokal TIDAK HARUS dimasukkan dalam kumpulan nomor port yang tersedia untuk pengacakan port sesaat" dan bahwa "administrator harus mengidentifikasi layanan yang mungkin ditawarkan oleh tuan rumah lokal dan HARUS mengecualikan hanya port terdaftar yang sesuai " tapi itu bukan sesuatu yang biasanya disediakan oleh OS untuk Anda lakukan. Satu-satunya mekanisme pengecualian praktis adalah menaikkan batas bawah.
jmb