Apakah mungkin untuk mengatur sistem Linux sehingga menyediakan lebih dari 65.535 port? Maksudnya adalah agar lebih dari 65k daemon mendengarkan pada sistem yang diberikan.
Jelas ada port yang digunakan sehingga ini tidak mungkin karena alasan itu, jadi anggap ini sebagai latihan teoritis dalam mencoba memahami di mana TCP akan membatasi dalam melakukan sesuatu seperti ini.
Jawaban:
Melihat RFC untuk TCP: RFC 793 - Transmission Control Protocol , jawabannya tampaknya tidak karena fakta bahwa header TCP terbatas pada 16-bit untuk bidang port sumber / tujuan.
Apakah IPv6 meningkatkan hal-hal?
Tidak. Meskipun IPv6 akan memberi kita ruang alamat IP yang jauh lebih besar, 32-bit vs 128-bit, itu tidak membuat upaya untuk meningkatkan batasan paket TCP 16-bit untuk nomor port. Menariknya RFC untuk IPv6: Protokol Internet, Versi 6 (IPv6) Spesifikasi , bidang IP perlu diperluas.
Jadi bagaimana Anda bisa mendapatkan lebih banyak port?
Salah satu pendekatan adalah menumpuk alamat IP tambahan menggunakan lebih banyak antarmuka. Jika sistem Anda memiliki beberapa NIC, ini lebih mudah, tetapi bahkan hanya dengan satu NIC, Anda dapat menggunakan antarmuka virtual (alias. Alias ) untuk mengalokasikan lebih banyak IP jika diperlukan.
CATATAN: Menggunakan alias telah digantikan dengan
iproute2
yang dapat Anda gunakan untuk menumpuk alamat IP pada satu antarmuka (yaitueth0
).Contoh
Sumber: iproute2: Kehidupan setelah ifconfig
Referensi
sumber
Nggak.
Maka Anda membutuhkan:
sebuah
iptables
konfigurasi yang pengalihan pada konten lalu lintas atau"layanan broker layanan" atau "layanan multiplexor" yang akan menerima koneksi masuk pada satu port dan mengarahkannya ke daemon yang sesuai "di belakangnya". Jika Anda ingin protokol standar untuk lulus tanpa dimodifikasi Anda mungkin harus menerapkan sniffing protokol / pengenalan dalam layanan multiplexor ini, dengan cara bahwa firewall IDS atau layer-7 akan di-anaylze; Sepenuhnya mungkin dengan sebagian besar protokol.
Per item kedua, Anda dapat merancang layanan ini untuk menangani lebih dari 2 ^ 16 "port" jika Anda benar-benar menginginkannya. Saya yakin dampak kinerja akan minimal dibandingkan dengan beban 2 ^ 16 + pendengar berjalan.
Daemon di Linux dapat mendengarkan pada soket unix yang ada di sistem file, sehingga "layanan multipleksor" Anda dapat mempertahankan pemetaan internal port eksternal <-> soket unix internal. Anda kemungkinan akan mengalami batas proses kernel (proses 32Kbyte?) Sebelum kehabisan inode pada sistem file modern apa pun.
sumber
Hanya karena tidak ada jawaban yang baik saya ingin berpadu.
Salah satu cara untuk melakukan ini adalah dengan menambahkan opsi IP yang menentukan ekstensi port. Opsi harus dirancang agar sesuai dengan bagian opsional dari header IP dan akan dilewati oleh hop yang tidak dikenal.
Anda akan menggunakan opsi ini dan informasi informasinya untuk memperluas sumber, tujuan, atau kedua nomor port.
Keterbatasan tidak akan bekerja secara otomatis dalam perangkat lunak yang ada hanya dengan menambahkan opsi, mereka harus ditulis ulang untuk mengambil keuntungan dari opsi tidak peduli bagaimana itu diterapkan, perangkat lunak yang ada dan firewall akan mengabaikan paket atau memprosesnya seperti biasa menggunakan nilai di bidang port sumber dan tujuan.
Singkatnya itu tidak mudah dilakukan dan akan lebih baik dilakukan dengan menggunakan pendengar tunggal yang dapat digunakan kembali dan data yang terkandung dalam muatan paket.
Anda juga dapat lebih mudah mengizinkan penggunaan kembali port dalam perangkat lunak, yang dapat membantu mengatasi batasan ini dengan menggunakan kembali port server untuk beberapa koneksi klien.
Rtsp misalnya dapat menggunakan tajuk SessionId bersama dengan berbagai tajuk lainnya dalam muatan paket IP untuk menentukan koneksi apa yang diminta oleh permintaan dan bertindak sesuai misalnya, jika soket dari mana pesan dikirim tidak sama dengan soket. alamat jarak jauh yang sesuai dengan sesi kemudian maka seseorang dapat memperbolehkan sesi diperbarui dengan soket baru untuk diproses, menolak pesan atau berbagai tindakan lain tergantung pada aplikasi.
Server Http juga dapat melakukan ini atau jenis server lainnya.
Hal utama yang perlu diingat ketika mengizinkan penggunaan kembali port adalah bahwa Anda juga harus memperhitungkan alamat IP sumber.
sumber
Ya kamu bisa !
Ini telah dilakukan sebelumnya, misalnya server enkripsi Edgehill, yang memiliki> 25.000.000 deamons berjalan secara online.
sumber