Port tcp sumber Debian Stretch * selalu * genap


9

Saat men-debug beberapa perilaku aneh dengan penyeimbang beban Azure, saya perhatikan bahwa tumpukan TCP Debian Stretch lokal saya hanya membuat koneksi TCP dengan port genap. Saya tidak memulai satu jabat tangan TCP dengan port sumber ganjil. Apakah itu dimaksudkan?

Jawaban:


12

Ini untuk mengurangi pertikaian antara connect()dan bind()(muncul di Linux 4.2; Jessie memiliki 3.16 dan Stretch memiliki 4.9):

komit 07f4c90062f8fc7c8c26f8f95324cbe8fa3145a5
Penulis: Eric Dumazet 
Tanggal: Minggu 24 Mei 14:49:35 2015 -0700

    tcp / dccp: cobalah untuk tidak menghabiskan ip_local_port_range di connect ()

    Masalah lama pada server sibuk adalah port TCP kecil yang tersedia
    range (/ proc / sys / net / ipv4 / ip_local_port_range) dan default
    alokasi berurutan port sumber di connect () system call.

    Jika host memiliki banyak sesi TCP aktif, kemungkinannya besar
    sangat tinggi sehingga semua port digunakan oleh setidaknya satu aliran,
    dan pengikatan berikutnya (0) upaya gagal, atau harus memindai sebagian besar
    ruang untuk menemukan slot.

    Dalam tambalan ini, saya mengubah titik awal di __inet_hash_connect ()
    sehingga kami mencoba mendukung bahkan port [1], meninggalkan port ganjil untuk bind ()
    pengguna.

    Kami masih melakukan pencarian berurutan, jadi tidak ada jaminan, tapi
    jika menghubungkan () target sangat berbeda, hasil akhirnya adalah kita pergi
    lebih banyak port yang tersedia untuk diikat (), dan kami sebarkan di seluruh rentang,
    menurunkan waktu untuk menghubungkan () dan mengikat () untuk menemukan slot.

    Strategi ini hanya berfungsi dengan baik jika / proc / sys / net / ipv4 / ip_local_port_range
    genap, yaitu jika nilai awal / akhir memiliki paritas yang berbeda.

    Oleh karena itu, default / proc / sys / net / ipv4 / ip_local_port_range diubah menjadi
    32768 - 60999 (bukan 32768 - 61000)

    Tidak ada perubahan pada aspek keamanan di sini, hanya beberapa hashing yang buruk
    skema akhirnya dapat dipengaruhi oleh perubahan ini.

    [1]: Properti ganjil / genap bergantung pada paritas nilai ip_local_port_range

Anda mungkin juga ingin melihat tindak lanjut komit 1580ab63fc9a03593072cc5656167a75c4f1d173 .


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.