Saya ingin mematikan segmentasi tcp pada server CentOS5. Menggunakan ethtool perintahnya adalah ethtool -K eth0 tso off
Namun, pengaturan ini hanya berlanjut untuk sesi ini. Bagaimana saya bisa membuatnya bertahan melalui reboot?
centos
linux-networking
ethtool
Gus E
sumber
sumber
Jawaban:
Dari halaman web ini :
Anda dapat memasukkan perintah ethtool di
/etc/rc.local
(atau yang setara dengan distribusi Anda) tempat perintah dijalankan setelah runlevel saat ini selesai, tetapi ini tidak ideal. Layanan jaringan mungkin telah dimulai selama perintah runlevel dan ethtool cenderung mengganggu lalu lintas jaringan. Akan lebih disukai untuk menerapkan perintah ketika antarmuka dibesarkan.Layanan jaringan di CentOS memiliki kemampuan untuk melakukan ini. Script
/etc/sysconfig/network-scripts/ifup-post
memeriksa keberadaan/sbin/ifup-local
, dan jika ada, berjalan dengan nama antarmuka sebagai parameter (misalnya:/sbin/ifup-local eth0
)Kita dapat membuat file ini dengan sentuhan
/sbin/ifup-local
membuatnya dapat dieksekusi denganchmod +x /sbin/ifup-local
mengatur konteks SELinux denganchcon --reference /sbin/ifup /sbin/ifup-local
dan kemudian membukanya di editor.Sebuah skrip sederhana untuk menerapkan pengaturan yang sama ke semua antarmuka akan menjadi seperti ini
Perlu diingat ini akan mencoba menerapkan pengaturan ke SEMUA antarmuka, bahkan loopback.
Jika kita memiliki antarmuka yang berbeda, kita ingin menerapkan pengaturan yang berbeda, atau ingin melewatkan loopback, kita dapat membuat pernyataan kasus
Sekarang pengaturan ethtool diterapkan ke antarmuka saat mereka mulai, semua gangguan potensial terhadap komunikasi jaringan dilakukan saat antarmuka muncul, dan server Anda dapat terus melakukan booting dengan kapabilitas jaringan penuh.
sumber
Untuk RHEL7 di / etc / sysconfig / network-scripts / ifcfg- * Anda mungkin memiliki:
ETHTOOL_OPTS = "- K $ {DEVICE} harus dihapus"
jika lebih banyak opsi maka gunakan like
ETHTOOL_OPTS = "- K $ {DEVICE} gso off; -K $ {DEVICE} hapus; -K $ {DEVICE} tso off"
Anda harus memiliki PERANGKAT secara alami didefinisikan dalam file ifcfg Anda.
Tidak diperlukan skrip rc.local atau ifup tambahan. Mudah bagi Anda dalam sistem penyebaran generik.
sumber
Jika Anda menggunakan RHEL7 (atau yang serupa) dan menggunakan Network Manager alih-alih /etc/init.d/network untuk mengontrol antarmuka Anda, jawaban yang diusulkan tidak akan berfungsi, karena / sbin / ifup-local (serta ifdown-pra-lokal) dan ifdown-local ) tidak akan pernah dieksekusi.
Alih-alih menempatkan skrip Anda ke /etc/NetworkManager/dispatcher.d/ dan pastikan layanan NetworkManager-dispatcher diaktifkan
Petunjuk: Operator hanya akan melakukan kick ketika NetworkManager membuat perubahan pada antarmuka, itu tidak perlu dijalankan atau apa pun, jadi jika statusnya berbunyi
itu baik-baik saja!
Pastikan juga skrip Anda adalah:
Sekarang NetworkManager akan meneruskan dua (2) variabel ke operator:
dan memungkinkan chaining skrip (seperti / etc / rc ...) untuk memiliki kontrol atas urutan di mana operator akan menjalankannya:
Pesanan akan naik pada koneksi
dan turun pada putuskan
dan seterusnya.
Jadi untuk mencapai apa yang dicari OP, Anda bisa meletakkan sesuatu seperti ini:
di /etc/NetworkManager/dispatcher.d/20-ethtool
Dan menyebutnya sehari.
Bersulang
sumber
if [ "$1" = "eth0" ] && [ "$2" = "up" ]; then
Saya mengalami masalah dengan jawaban yang diterima (yang, saya cepat-cepat menambahkan, saya merasa sangat membantu) karena saya menggunakan antarmuka terikat.
Butuh beberapa saat untuk menemukan apa yang terjadi, tetapi saya menemukan bahwa ketika memunculkan ikatan, atau bahkan ketika memunculkan budak ikatan secara individu,
ifup-local
skrip tidak akan dipanggil untuk antarmuka budak. Saya berasumsi bahwa ini karena antarmuka slave tidak memiliki alamat IP yang ditugaskan untuk mereka.Untuk mengatasinya, saya memodifikasi saya
ifup-local
untuk mem-parsing isi/proc/bonding/bondX
untuk antarmuka yang telah dibesarkan, jika itu adalah ikatan, untuk mendapatkan nama antarmuka budak, dan kemudian melakukan hal-hal yang diperlukan dengan mereka.Pada akhirnya saya
ifup-local
tampak seperti berikut:Peringatan: isi / proc / net / bonding / bondX mungkin berbeda untuk versi yang berbeda dari RedHat / Fedora / CentOS dengan yang saya gunakan ketika saya menulis skrip, jadi perintah untuk mengeluarkan nama antarmuka slave mungkin tidak berfungsi .
sumber
Di luar topik, untuk pengguna Ubuntu yang datang ke sini, seperti saya, ini sebagai catatan:
Di Ubuntu, cara buku teks untuk melakukannya adalah dengan mengedit file / etc / network / interfaces yang pada gilirannya dibaca oleh skrip init.d / pre-up-up, dll. Jadi file / etc / network / interfaces mungkin terlihat seperti ini:
Itu yang dikatakan dokter, tetapi tidak berhasil . Mungkin logika parsing dalam skrip pra-naik dan naik sedikit tanggal dan mereka tidak menguraikan pengaturan yang diperlukan dari file antarmuka. Tidak tahu Setidaknya, itu tidak berhasil untuk saya.
Jadi solusi hack-ish tetapi berfungsi untuk saat ini adalah masih membuat / mengedit file /etc/rc.local lokal dan menyatakan perintah yang akan dikeluarkan di sana (tetapi perhatikan bahwa ini dapat mengganggu jaringan selama beberapa detik setelah antarmuka telah diangkat). Jadi memiliki ini:
di /etc/rc.local adalah solusi yang berfungsi untuk memperlambat antarmuka sebagaimana dimaksud di atas.
Di Ubuntu 17.04 dan lebih tinggi
Ubuntus yang lebih baru menggunakan Systemd, dan dengan demikian file rc.local tidak perlu dieksekusi saat mencapai runlevel 'start', misalnya. Layanan "rc-local" harus diaktifkan. Meskipun tampaknya secara default, untuk alasan kompatibilitas ke belakang, mungkin - pastikan untuk memeriksa statusnya dengan
sudo systemctl status rc-local
sumber
pre-up
direktif bekerja untuk saya di Linux Mint 17.3 untuk menetapkan bendera TSO, terima kasih :)Saya menemukan bahwa pengaturan jenis konfigurasi ini
/etc/network/interfaces
benar-benar berfungsi untuk Ubuntu (memang saya menggunakannya untuk mematikanlarge-receive-offload
, tetapi itu tidak terlalu menjadi masalah):sumber
Untuk Ubuntu, Anda dapat melakukan ini dengan menambahkan baris berikut di
/etc/network/interfaces
:post-up di sini akan melakukan operasi yang diberikan setelah membuka antarmuka spesifik.
sumber
Ya, itu tidak dapat dilakukan menggunakan file konfigurasi untuk saat ini. Anda dapat memasang perintah
/etc/init.d/rc.local
dan itu harus dilakukan.File itu dieksekusi pada urutan terakhir dari urutan booting sehingga tso akan dimatikan untuk antarmuka.
sumber