GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan tc untuk menunda paket hanya ke satu alamat IP

Solusi 1:

Jawaban yang dipilih salah/tidak lengkap. Saya menghadapi masalah serupa, jawaban yang dipilih memberikan bantuan, tetapi tidak cukup.

Pertama, perintah berikut tidak terlalu diperlukan.

tc qdisc del dev eth0 root

Ini akan 'menghapus' root qdisc, tetapi segera diganti dengan yang pfifo_fast (agar Anda tidak kehilangan konektivitas).

Perintah kedua:

tc qdisc tambahkan dev eth0 root handle 1:prio

Akan mengganti qdisc pfifo_fast dengan yang prio. Secara default, antrean prio memiliki 3 band (0, 1, 2) yang masing-masing dikelola oleh satu kelas (1:1, 1:2, dan 1:3).

Paket akan dikirim ke salah satu band tersebut dengan menggunakan bidang TOS dari paket IP. Konfigurasi ini ditampilkan saat Anda menjalankan:

tc qdisc ls

melihat nilai 'priomap'.

Kemudian, Anda menambahkan netem qdisc:

tc qdisc tambahkan dev eth0 parent 1:1 handle 2:netem delay 500ms

Dengan perintah ini, Anda menunda semua lalu lintas yang menuju pita 1:1 (hingga filter terpasang).

Namun ada dua peringatan:

  • Lalu lintas Anda dapat memiliki nilai TOS yang berbeda dan kemudian dikirim ke band lain.
  • Prio qdisc dapat dikonfigurasi sehingga lalu lintas beralih ke band lain.

Berikut ini memecahkan masalah saya agar tidak terpengaruh oleh netem saat filter tidak diterapkan. Alih-alih langkah-langkah di atas, saya melakukan:

tc qdisc tambahkan dev eth0 root handle 1:prio priomap 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

Ini akan mengirimkan semua lalu lintas secara default ke pita 1:3.

Kemudian, saya menambahkan aturan untuk menunda lalu lintas:

tc qdisc tambahkan dev eth0 parent 1:1 handle 10:netem delay 100ms 10ms

Ini membuat qdisc di band 0, tetapi karena semua lalu lintas masuk ke band 3, itu tidak memengaruhi saya.

Setelah itu, saya menambahkan filter:

filter tc tambahkan protokol dev eth0 ip induk 1:0 prio 1 u32 cocokkan ip dst 10.0.0.1/32 cocokkan ip dport 80 0xffff flowid 1:1

Sekarang dengan filter, hanya IP/port yang dipilih yang akan terpengaruh, karena kami mengalihkan lalu lintas yang dipilih ke pita 0.

Semua lalu lintas lainnya terus tidak terpengaruh karena terus mengalir ke jalur 3.

Solusi 2:

Ok, saya memecahkan masalah saya sendiri. Ternyata jika Anda mengeksekusi 3 baris pertama di atas ("tc qdisc"), itu akan menunda semua paket karena belum ada filter. Baris ke-4 mengubahnya menjadi hanya menunda paket dari alamat IP tunggal itu. Garis filter tambahan dapat ditambahkan untuk menambahkan alamat IP tambahan ke daftar "tertunda". Jadi:jangan membuat baris "penundaan netem" tanpa filter yang mengarah ke sana.


Linux
  1. Cara mengubah alamat MAC menggunakan macchanger di Kali Linux

  2. Cara Memantau Aktivitas Ethernet Di Linux Menggunakan Arpwatch

  3. Cara mengubah alamat situs WordPress di phpmyadmin menggunakan SQL

  1. Mengapa Garis Miring Balik Tunggal Ditampilkan Saat Menggunakan Kutipan?

  2. Fail2Ban Howto:Memblokir Alamat IP Menggunakan Fail2ban dan IPTables

  3. Dapatkan alamat antarmuka jaringan lokal hanya menggunakan proc?

  1. Temukan Hanya Kejadian Pertama Menggunakan Only Grep?

  2. Dapatkan alamat MAC menggunakan skrip shell

  3. Arahkan hanya lalu lintas tertentu melalui VPN