Jadual Kandungan
1. Prinsip kawalan aliran di bawah Linux" >1. Prinsip kawalan aliran di bawah Linux
2 Hadkan kelajuan akses IP dan Port yang ditentukan kepada mesin ini" >2 Hadkan kelajuan akses IP dan Port yang ditentukan kepada mesin ini
2.1 Lihat kad rangkaian" >2.1 Lihat kad rangkaian
2.2 Konfigurasi qdisc-class-filter" >2.2 Konfigurasi qdisc-class-filter
3.3 查看并清理配置" >3.3 查看并清理配置
3. 限制本机对指定 IP、Port 的访问速度" >3. 限制本机对指定 IP、Port 的访问速度
3.1 启用虚拟网卡" >3.1 启用虚拟网卡
3.2 配置 qdisc-class-filter" >3.2 配置 qdisc-class-filter
Rumah Tutorial sistem LINUX Gunakan TC untuk melaksanakan pengehadan semasa rangkaian secara elegan di bawah Linux

Gunakan TC untuk melaksanakan pengehadan semasa rangkaian secara elegan di bawah Linux

Feb 14, 2024 pm 12:27 PM
linux tutorial linux sistem linux arahan linux skrip shell susunan embeddedlinux Bermula dengan linux pembelajaran linux

1. Prinsip kawalan aliran di bawah Linux

Kita boleh mengawal cara paket dihantar dengan beratur. Kawalan jenis ini dipanggil pembentukan data, yang melaksanakan operasi berikut pada data:

  • Kependaman meningkat
  • Menjatuhkan bungkusan
  • Susun semula
  • Duplikat atau rosak
  • Kadar kawalan

Di bawah struktur qdisc-class-filter, tiga langkah diperlukan untuk mengawal aliran:

  • Cipta baris gilir qdisc

Memandangkan Linux mengawal trafik dengan menyusun paket, ia memerlukan baris gilir terlebih dahulu.

  • Buat klasifikasi kelas

class sebenarnya digunakan untuk mengklasifikasikan dasar trafik. Sebagai contoh, dua tahap had laju trafik boleh dibahagikan: 10MBps dan 20MBps.

  • Buat penapis penapis

Walaupun klasifikasi kelas telah dibuat, tiada IP atau port telah terikat pada kelas, jadi tiada kesan kawalan pada masa ini. Anda juga perlu mencipta penapis untuk mengikat IP dan port yang ditentukan ke kelas supaya kelas kawalan aliran boleh berkuat kuasa ke atas sumber.

TC ialah alat kawalan trafik yang disediakan oleh Linux dan salah satu infrastruktur teras komponen rangkaian seperti Cilium/eBPF.

2 Hadkan kelajuan akses IP dan Port yang ditentukan kepada mesin ini

2.1 Lihat kad rangkaian

ifconfig

eth0: flags=4163  mtu 1500
        inet 1.1.1.1  netmask 255.255.254.0  broadcast 1.1.1.1
        inet6 1::1:1:1:1  prefixlen 64  scopeid 0x20
        ether 1:1:1:1:1:1  txqueuelen 1000  (Ethernet)
        RX packets 2980910  bytes 2662352343 (2.4 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1475969  bytes 122254809 (116.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Salin selepas log masuk

2.2 Konfigurasi qdisc-class-filter

  • Buat baris gilir akar qdisc
rreeee
  • Buat kelas peringkat pertama untuk mengikat semua sumber lebar jalur

Perhatikan bahawa unit di sini ialah 6 MBps,也就是 48 Mbps.

tc qdisc add dev eth0 root handle 1: htb default 1
Salin selepas log masuk
  • Buat kelas subkategori

Anda boleh mencipta berbilang subkategori untuk mengurus trafik sumber dengan cara yang halus.

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 6MBps burst 15k
Salin selepas log masuk

Di sini ceil menetapkan had atas Dalam keadaan biasa, had laju ialah 6MBps, tetapi apabila rangkaian melahu, ia boleh mencapai 10 MBps.

  • Buat penapis penapis, hadkan IP
rreeee

Tambahkan strategi kelas pada 1.2.3.4 进行限制带宽为 1:10,也就是 6MBps。当然,你也可以直接给网段 1.2.0.0/16 di sini.

2.3 查看并清理配置

  • 查看 class 配置
tc class show dev eth0

class htb 1:10 parent 1:1 leaf 10: prio 0 rate 48Mbit ceil 80Mbit burst 15Kb cburst 1600b 
class htb 1:1 root rate 48Mbit ceil 48Mbit burst 15Kb cburst 1590b
Salin selepas log masuk
  • 查看 filter 配置
tc filter show dev eth0

filter parent 1: protocol ip pref 1 u32 chain 0 
filter parent 1: protocol ip pref 1 u32 chain 0 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 1 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 f

lowid 1:10 not_in_hw 


  match 01020303/ffffffff at 16
Salin selepas log masuk
  • 清理全部配置
tc qdisc del dev eth0 root
Salin selepas log masuk

3. 限制本机对指定 IP、Port 的访问速度

由于排队规则主要是基于出口方向,不能对入口方向的流量(Ingress)进行限制。因此,我们需要将流量重定向到 ifb 设备上,再对 ifb 的出口流量(Egress)进行限制,以最终达到控制的目的。

3.1 启用虚拟网卡

  • 将在 ifb 设备
modprobe ifb numifbs=1
Salin selepas log masuk
  • 启用 ifb0 虚拟设备
ip link set dev ifb0 up
Salin selepas log masuk

3.2 配置 qdisc-class-filter

  • 添加 qdisc
tc qdisc add dev eth0 handle ffff: ingress
Salin selepas log masuk
  • 重定向网卡流量到 ifb0
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress re

direct dev ifb0
Salin selepas log masuk
  • 添加 class 和 filter
tc qdisc add dev ifb0 root handle 1: htb default 10

tc class add dev ifb0 parent 1:0 classid 1:1 htb rate 6Mbps

tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 6Mbps

tc filter add dev ifb0 parent 1:0 protocol ip prio 16 u32 match ip dst 1.2.3.4  flowid 1:

10
Salin selepas log masuk

3.3 查看并清理配置

  • 下面是限速本机对指定 IP 访问的监控图
Linux 下使用 TC 优雅的实现网络限流

进入的流量被限制在 6 MBps 以下,而出去的流量不被限制。

  • 查看 class 配置
tc class show dev ifb0

class htb 1:10 parent 1:1 prio 0 rate 48Mbit ceil 48Mbit burst 1590b cburst 1590b 

class htb 1:1 root rate 48Mbit ceil 48Mbit burst 1590b cburst 1590b 
Salin selepas log masuk
  • 查看 filter 配置
tc filter show dev ifb0

filter parent 1: protocol ip pref 16 u32 chain 0 
filter parent 1: protocol ip pref 16 u32 chain 0 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 16 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 

flowid 1:10 not_in_hw 

  match 01020304/ffffffff at 16
Salin selepas log masuk
  • 清理全部配置
tc qdisc del dev eth0 ingress
tc qdisc del dev ifb0 root
modprobe -r ifb
Salin selepas log masuk

Atas ialah kandungan terperinci Gunakan TC untuk melaksanakan pengehadan semasa rangkaian secara elegan di bawah Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara memulakan nginx di linux Cara memulakan nginx di linux Apr 14, 2025 pm 12:51 PM

Langkah -langkah untuk memulakan Nginx di Linux: Periksa sama ada Nginx dipasang. Gunakan SistemCTL Mula Nginx untuk memulakan perkhidmatan Nginx. Gunakan SistemCTL Dayakan NGINX untuk membolehkan permulaan automatik Nginx pada permulaan sistem. Gunakan Status SistemCTL Nginx untuk mengesahkan bahawa permulaan berjaya. Lawati http: // localhost dalam pelayar web untuk melihat halaman selamat datang lalai.

Cara memeriksa sama ada nginx dimulakan Cara memeriksa sama ada nginx dimulakan Apr 14, 2025 pm 01:03 PM

Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Cara menyelesaikan ralat nginx403 Cara menyelesaikan ralat nginx403 Apr 14, 2025 pm 12:54 PM

Pelayan tidak mempunyai kebenaran untuk mengakses sumber yang diminta, mengakibatkan ralat NGINX 403. Penyelesaian termasuk: Periksa keizinan fail. Semak konfigurasi .htaccess. Semak konfigurasi Nginx. Konfigurasikan keizinan Selinux. Semak peraturan firewall. Menyelesaikan masalah lain seperti masalah penyemak imbas, kegagalan pelayan, atau kesilapan lain yang mungkin.

Perbezaan antara centos dan ubuntu Perbezaan antara centos dan ubuntu Apr 14, 2025 pm 09:09 PM

Perbezaan utama antara CentOS dan Ubuntu adalah: asal (CentOS berasal dari Red Hat, untuk perusahaan; Ubuntu berasal dari Debian, untuk individu), pengurusan pakej (CentOS menggunakan yum, yang memberi tumpuan kepada kestabilan; Ubuntu menggunakan APT, untuk kekerapan yang tinggi) Pelbagai tutorial dan dokumen), kegunaan (CentOS berat sebelah ke arah pelayan, Ubuntu sesuai untuk pelayan dan desktop), perbezaan lain termasuk kesederhanaan pemasangan (CentOS adalah nipis)

Penjelasan terperinci mengenai Prinsip Docker Penjelasan terperinci mengenai Prinsip Docker Apr 14, 2025 pm 11:57 PM

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

CentOS berhenti penyelenggaraan 2024 CentOS berhenti penyelenggaraan 2024 Apr 14, 2025 pm 08:39 PM

CentOS akan ditutup pada tahun 2024 kerana pengedaran hulu, RHEL 8, telah ditutup. Penutupan ini akan menjejaskan sistem CentOS 8, menghalangnya daripada terus menerima kemas kini. Pengguna harus merancang untuk penghijrahan, dan pilihan yang disyorkan termasuk CentOS Stream, Almalinux, dan Rocky Linux untuk memastikan sistem selamat dan stabil.

Cara memasang centos Cara memasang centos Apr 14, 2025 pm 09:03 PM

Langkah Pemasangan CentOS: Muat turun Imej ISO dan Burn Bootable Media; boot dan pilih sumber pemasangan; Pilih susun atur bahasa dan papan kekunci; Konfigurasikan rangkaian; memisahkan cakera keras; Tetapkan jam sistem; Buat pengguna root; pilih pakej perisian; Mulakan pemasangan; Mulakan semula dan boot dari cakera keras selepas pemasangan selesai.

Cara menggunakan desktop docker Cara menggunakan desktop docker Apr 15, 2025 am 11:45 AM

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

See all articles