GNU/Linux >> Belajar Linux >  >> Linux

Bisakah TCP menyediakan lebih dari 65535 port?

Melihat RFC untuk TCP:RFC 793 - Protokol Kontrol Transmisi, jawabannya tampaknya tidak karena fakta bahwa header TCP dibatasi hingga 16-bit untuk bidang port sumber/tujuan.

Apakah IPv6 memperbaiki keadaan?

Tidak. Meskipun IPv6 akan memberi kita ruang alamat IP yang jauh lebih besar, 32-bit vs. 128-bit, tidak ada upaya untuk meningkatkan batasan paket TCP 16-bit untuk nomor port. Menariknya, RFC untuk IPv6:Protokol Internet, Spesifikasi Versi 6 (IPv6), bidang IP perlu diperluas.

Saat TCP menjalankan IPv6, metode yang digunakan untuk menghitung checksum diubah, sesuai RFC 2460:

Setiap transport atau protokol lapisan atas lainnya yang menyertakan alamat dari header IP dalam penghitungan checksumnya harus dimodifikasi untuk digunakan di atas IPv6, agar menyertakan alamat IPv6 128-bit, bukan alamat IPv4 32-bit.

Jadi bagaimana Anda bisa mendapatkan lebih banyak port?

Salah satu pendekatannya adalah menumpuk alamat IP tambahan menggunakan lebih banyak antarmuka. Jika sistem Anda memiliki banyak NIC, ini lebih mudah, tetapi bahkan dengan hanya satu NIC, seseorang dapat menggunakan antarmuka virtual (alias. alias) untuk mengalokasikan lebih banyak IP jika diperlukan.

CATATAN: Menggunakan alias telah digantikan oleh iproute2 yang dapat Anda gunakan untuk menumpuk alamat IP pada satu antarmuka (mis. eth0 ) sebagai gantinya.

Contoh

$ sudo ip link set eth0 up
$ sudo ip addr add 192.0.2.1/24 dev eth0
$ sudo ip addr add 192.0.2.2/24 dev eth0
$ ip addr show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc
      pfifo_fast state DOWN qlen 1000
    link/ether 00:d0:b7:2d:ce:cf brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.1/24 brd 192.0.2.255 scope global eth1
    inet 192.0.2.2/24 scope global secondary eth1

Sumber:iproute2:Kehidupan setelah ifconfig

Referensi

  • OpenWrt Wiki » Dokumentasi » Jaringan » Antarmuka Jaringan Linux
  • Beberapa perintah berguna dengan iproute2
  • Linux Advanced Routing &Traffic Control HOWTO
  • Beberapa rute default/IP gateway publik di Linux
  • lembar contekan iproute2 - situs web Daniil Baturin

Apakah mungkin untuk mengatur sistem Linux sehingga menyediakan lebih dari 65.535 port?

Tidak.

Tujuannya adalah agar lebih dari 65 ribu daemon mendengarkan pada sistem tertentu.

Maka Anda membutuhkan:

  • sebuah iptables konfigurasi yang mengalihkan pada lalu lintas konten atau

  • "layanan broker layanan" atau "layanan multipleksor" yang akan menerima koneksi masuk pada satu port dan merutekannya ke daemon yang sesuai "di belakangnya". Jika Anda ingin protokol standar lolos tanpa modifikasi, Anda mungkin harus menerapkan pengendapan/pengenalan protokol dalam layanan multipleksor ini, dengan cara yang akan dianalisis oleh IDS atau firewall lapisan-7; 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 kinerjanya akan minimal dibandingkan dengan beban 2^16+ pendengar yang berjalan.

Daemon di Linux dapat mendengarkan soket unix yang ada di sistem file, sehingga "layanan multipleksor" Anda dapat mempertahankan pemetaan internal port eksternal <-> soket unix internal. Anda mungkin akan mengalami batas proses kernel (proses 32Kbyte?) sebelum kehabisan inode pada sistem file modern apa pun.


Hanya karena tidak ada jawaban yang bagus, saya ingin bergabung.

Salah satu cara untuk melakukannya adalah dengan menambahkan opsi IP yang menentukan ekstensi port. Opsi harus dirancang agar sesuai dengan bagian opsional header IP dan akan dilewati oleh lompatan yang tidak diketahui.

Anda akan menggunakan opsi ini dan ini adalah informasi informasi 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 memanfaatkan opsi tidak peduli bagaimana penerapannya, perangkat lunak dan firewall yang ada akan mengabaikan paket atau memprosesnya seperti biasa menggunakan nilai di bidang port sumber dan tujuan.

Singkatnya, ini tidak mudah dilakukan dan akan lebih baik dilakukan dengan menggunakan satu pendengar yang dapat digunakan kembali dan data yang terkandung dalam payload paket.

Anda juga dapat dengan 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 header SessionId bersama dengan berbagai header lain dalam payload paket IP untuk menentukan koneksi apa yang dikeluarkan permintaan dan bertindak sesuai mis. jika soket dari mana pesan dikirim tidak sama dengan alamat jarak jauh soket yang sesuai dengan sesi, maka seseorang dapat mengizinkan sesi diperbarui dengan soket baru untuk diproses, menolak pesan atau berbagai tindakan lainnya tergantung pada aplikasinya.

Server Http juga dapat melakukan ini atau jenis server lainnya.

Hal utama yang harus diingat saat mengizinkan penggunaan kembali porta adalah Anda juga harus mempertimbangkan alamat IP sumber.


Linux
  1. CentOS / RHEL :Cara mengkonfigurasi vsftpd untuk menggunakan port selain port default 20 dan 21

  2. Bagaimana saya bisa mematikan TCP port 16969 di Bash?

  3. Bagaimana saya bisa menjalankan SSH pada port selain 22?

  1. Bagaimana saya bisa memeriksa port mana yang sibuk dan port mana yang kosong di mesin Linux saya?

  2. Pantau Lalu Lintas TCP pada port tertentu

  3. Apakah secara teoritis mungkin untuk menggunakan pintu belakang pada port yang lebih tinggi dari 65535?

  1. 14 port jaringan umum yang harus Anda ketahui

  2. Bisakah saya menggunakan ufw untuk mengatur port forward?

  3. Ikat ke port kurang dari 1024 tanpa akses root