“Trickle” bilen Linux ulgamyndaky programmalar tarapyndan ulanylýan tor zolagyny nädip çäklendirmeli


Bir programmanyň ähli tor zolagynda agdyklyk edýän ýagdaýlara duş geldiňizmi? Eger-de bir programma ähli trafigiňizi iýen ýaly bir ýagdaýa düşen bolsaňyz, zolakly geçirijilik has arzan programmanyň roluna baha berersiňiz.

Systema-da ulgam dolandyryjysy ýa-da diňe Linux ulanyjysy bolsaňyz, toruňyzyň giňliginiň ýekeje programma tarapyndan ýakylmaýandygyna göz ýetirmek üçin programmalar üçin ýüklemegiň we göçürip almagyň tizligini nädip dolandyrmalydygyny öwrenmeli.

[Şeýle hem halamagyňyz mümkin: Linux-da tor ulanylyşyny derňemek üçin 16 peýdaly zolakly gözegçilik gurallary]

Trickle näme?

Trickle, haýsydyr bir biriniň elýeterli geçiriş zolagynyň hemmesini (ýa-da köpüsini) ýapmagynyň öňüni almak üçin, programmalaryň ýükleniş we göçürip almak tizligini dolandyrmaga mümkinçilik berýän tor giňligi has pes gural.

Birnäçe söz bilen aýdylanda, müşderi-serwer gurşawynda geçirijilik giňliginiň emele gelmeginiň nusgawy mysaly bolup, her ulanyjynyň gözegçiliginden tapawutlylykda, her bir amaly esasda tor trafik tizligini gözegçilikde saklamaga mümkinçilik berýär, belki-de biz has köp guranymyzdyr. bilen tanyş.

Trickle nähili işleýär?

Mundan başga-da, bir kynçylyk, her ulgam üçin ileri tutulýan ugurlary kesgitlemäge kömek edip biler, şonuň üçin tutuş ulgam üçin umumy çäkler kesgitlenende, ileri tutulýan programmalar awtomatiki usulda has giň zolakly geçer.

Bu meseläni ýerine ýetirmek üçin, kynçylyk, TCP birikmelerini ulanyp, rozetkalara maglumat iberilişine we alynmagyna ýol çäklerini kesgitleýär. Maglumat geçiriş nyrhlaryndan başga-da, haýsydyr bir pursatda emele gelýän prosesiň özüni alyp barşyny hiç hili üýtgetmeýändigini bellemelidiris.

Trickle näme edip bilmez?

Başgaça aýdylanda, ýeke-täk çäklendirme, SUID ýa-da SGID bitleri bilen statiki baglanyşdyrylan programmalar ýa-da ikilikler bilen işlemez, sebäbi şekilli proses bilen baglanyşykly tor rozetkasynyň arasynda ýerleşmek üçin dinamiki baglanyşyk we ýüklemek ulanylýar. Trickle soňra bu iki programma üpjünçiliginiň arasynda proksi hökmünde çykyş edýär.

Çekmek işlemek üçin superuser artykmaçlyklaryny talap etmeýändigi sebäpli, ulanyjylar öz ulag çäklerini kesgitläp bilerler. Bu islenip bilinmeýänligi sebäpli, ulgam ulanyjylarynyň geçip bilmejek umumy çäklerini nädip kesgitlemelidigini öwreneris. Başgaça aýdylanda, ulanyjylar henizem traffik nyrhlaryny dolandyryp bilerler, ýöne ulgam dolandyryjysy tarapyndan kesgitlenen çäklerde hemişe.

Bu makalada, Linux serwerindäki programmalar tarapyndan ulanylýan tor geçirijilik giňligini nädip çäklendirip boljakdygyny düşündireris.

Zerur traffigi döretmek üçin müşderide (CentOS serweri - dev1: 192.168.0.17) we serwerde vsftpd (Debian - dev2: 192.168.0.15) üçin ncftpput we ncftpget (iki gural hem ncftp gurmak arkaly elýeterlidir) ulanarys. görkeziş maksatlary. Şol görkezmeler RedHat, Fedora we Ubuntu esasly ulgamlarda-da işleýär.

Linux-da ncftp we vsftpd gurmak

1. RHEL/CentOS 8/7 üçin, EPEL ammaryny işlediň. Enterprise Linux (EPEL) üçin goşmaça paketler, Fedora taslamasy tarapyndan goldanylýan ýokary hilli erkin we açyk programma üpjünçiliginiň ammarydyr we Red Hat Enterprise Linux we CentOS ýaly aýlawlary bilen 100% laýyk gelýär. Trickle we ncftp ikisi hem bu ammardan elýeterli.

2. ncftp-i aşakdaky ýaly guruň:

# yum update && sudo yum install ncftp		[On RedHat based systems]
# aptitude update && aptitude install ncftp	[On Debian based systems]	

3. FTP serwerini aýratyn serwerde guruň. FTP öz-özünden howpsuz bolmasa-da, faýllary ýüklemek ýa-da göçürip almak üçin howpsuzlyk zerur bolmadyk ýagdaýlarda henizem giňden ulanylýar.

Bu makalada müşderiniň nyrhlaryny görkezmek üçin ulanýarys we müşderiniň stdout-da geçiş nyrhlaryny görkezýändigi sebäpli, başga bir sene we wagt üçin ulanylmaly ýa-da ulanylmaly däldigi barada çekişme goýarys.

# yum update && yum install vsftpd 		[On RedHat based systems]
# apt update && apt install vsftpd 	[On Debian based systems]

Indi, FTP serwerinde /etc/vsftpd/vsftpd.conf faýlyny aşakdaky ýaly redaktirläň:

$ sudo nano /etc/vsftpd/vsftpd.conf
OR
$ sudo /etc/vsftpd.conf

Aşakdaky üýtgeşmeler giriziň:

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

Şondan soň häzirki sessiýaňyz üçin vtftpd-e Başlamak we geljekki aýaklarda awtomatiki başlamak üçin giňişleýin ediň:

# systemctl start vsftpd 		[For systemd-based systems]
# systemctl enable vsftpd
# service vsftpd start 			[For init-based systems]
# chkconfig vsftpd on

4. Uzakdan girmek üçin SSH düwmeleri bolan CentOS/RHEL damjasynda FTP serwerini gurnamagy saýlasaňyz, OUTSIDE köküniň öýünde gerekli mazmuny ýüklemek we göçürip almak üçin degişli katalog we faýl rugsatlary bilen parol bilen goralan ulanyjy hasaby gerek bolar. katalog.

Soňra brauzeriňize aşakdaky URL girizip, öý katalogyna göz aýlap bilersiňiz. Giriş penjiresi, FTP serwerinde dogry ulanyjy hasaby we parolyny sorar.

ftp://192.168.0.15

Hakyky tanamak üstünlikli bolsa, öý katalogyňyzyň mazmunyny görersiňiz. Soňra bu gollanmada, öňki ädimlerde ýüklenen faýllary görkezmek üçin şol sahypany täzeläp bilersiňiz.

Linux-da Trickle nädip gurmaly

Indi ýum ýa-da apt arkaly trikl guruň.

Üstünlikli gurnamagy üpjün etmek üçin, guralyň özüni gurmazdan ozal gurlan paketleriň döwrebapdygyna (ýum täzelenmesini ulanyp) göz ýetirmek gowy tejribe hasaplanýar.

# yum -y update && yum install trickle 		        [On RedHat based systems]
# apt -y update && apt install trickle 	[On Debian based systems]

Çekişiň islenýän ikilik bilen işlejekdigini ýa-da ýokdugyny barlaň. Öň düşündirşimiz ýaly, kynçylyk diňe dinamiki ýa-da umumy kitaphanalary ulanyp ikilikler bilen işlär. Bu guraly belli bir programma bilen ulanyp biljekdigimizi barlamak üçin, ldd sanaw dinamiki garaşlylyklary aňladýan meşhur ldd kömekçisini ulanyp bileris.

Hususan-da, islendik programmanyň dinamiki baglylyklarynyň sanawynda glibc-iň (GNU C kitaphanasy) barlygyny gözläris, sebäbi rozetkalaryň üsti bilen aragatnaşyga gatnaşýan ulgam jaňlaryny kesgitleýän kitaphanadyr.

Çekişiň geçirijilik giňligini emele getirip boljakdygyny ýa-da ýokdugyny bilmek üçin berlen ikili garşy aşakdaky buýrugy işlediň:

# ldd $(which [binary]) | grep libc.so

Mysal üçin,

# ldd $(which ncftp) | grep libc.so

çykyşy:

# libc.so.6 => /lib64/libc.so.6 (0x00007efff2e6c000)

Çykyşdaky ýaýlaryň arasyndaky setir ulgamdan sistema üýtgäp biler we hatda şol bir buýrugyň soňraky işleriniň arasynda bolup biler, sebäbi kitaphananyň ýük ýadyny fiziki ýadynda görkezýär.

Aboveokardaky buýruk hiç hili netijäni gaýtaryp bermese, garşy işlenen ikili libc ulanmaýandygyny aňladýar we şeýlelik bilen bu ýagdaýda zolak giňligi hökmünde ulanylyp bilinmez.

Linux-da Trickle ulanmagy öwreniň

Çekişleriň iň esasy ulanylyşy özbaşdak re inimde. Bu çemeleşmäni ulanyp, haýsydyr bir programmanyň göçürip almak we ýüklemek tizligini aç-açan kesgitlemek üçin ulanylýar. Öň düşündirşimiz ýaly, gysga wagtlyk, synaglary ýüklemek we ýüklemek üçin şol bir programmany ulanarys.

Göçürip almak we ýüklemek tizligini hile bilen ulanman deňeşdireris. -d opsiýasy KB/s-de göçürip almagyň tizligini görkezýär, şol bir wagtyň özünde -u baýdagy şol bir birlik tarapyndan ýüklemek tizligini çäklendirýär. Mundan başga-da, çyzygyň özbaşdak tertipde işlemelidigini kesgitleýän -s baýdagyny ulanarys.

Özbaşdak re inimde işlemek üçin esasy sintaksis aşakdakylardyr:

# trickle -s -d [download rate in KB/s] -u [upload rate in KB/s]

Aşakdaky mysallary özbaşdak ýerine ýetirmek üçin, müşderi maşynyna trikle we ncftp gurnalandygyna göz ýetiriň (meniň ýagdaýymda 192.168.0.17).

Aşakdaky synaglar üçin erkin paýlanylýan Linux Fundamentals PDF faýlyny (şu ýerden elýeterli) ulanýarys.

Ilki bilen şu faýly aşakdaky iş buýrugy bilen häzirki iş katalogyňyza göçürip alyp bilersiňiz:

# wget http://linux-training.be/files/books/LinuxFun.pdf 

FTP serwerimize bir faýl ýüklemegiň sintaksisi aşakdaky ýaly:

# ncftpput -u username -p password 192.168.0.15  /remote_directory local-filename 

Nirede/remote_directory ulanyjy adynyň öýüne görä ýüklemek katalogynyň ýoludyr we ýerli faýl ady häzirki işleýän katalogyňyzdaky faýl.

Hususan-da, kynçylyksyz 52.02 MB/s iň ýokary ýükleme tizligini alýarys (bu hakyky ortaça ýük tizligi däl-de, bada-bat başlangyç tizligi) we faýl bada-bat ýüklenýär:

# ncftpput -u username -p password 192.168.0.15  /testdir LinuxFun.pdf 

Çykyş:

LinuxFun.pdf:                                        	2.79 MB   52.02 MB/s

Çekeleşik bilen, ýüklemegiň tizligini 5 KB/s bilen çäklendireris. Faýly ikinji gezek ýüklemezden ozal, niýetlenen katalogdan pozmaly; bolmasa, ncftp niýetlenen bukjadaky faýlyň, ýüklemäge synanyşýanlygymyz bilen birmeňzeşdigini we geçirişi ýerine ýetirmejekdigini habar berer:

# rm /absolute/path/to/destination/directory/LinuxFun.pdf 

Soň:

# trickle -s -u 5 ncftpput -u username -p password 111.111.111.111 /testdir LinuxFun.pdf 

Çykyş:

LinuxFun.pdf:                                        	2.79 MB	4.94 kB/s

Aboveokardaky mysalda, ýüklemegiň ortaça tizliginiň ~ 5 KB/s-a düşendigini görüp bileris.

Ilki bilen, asyl çeşme katalogyndan PDF-i pozmagy ýatdan çykarmaň:

# rm /absolute/path/to/source/directory/LinuxFun.pdf 

Aşakdaky ýagdaýlaryň uzakdaky faýly müşderi maşynynyň häzirki katalogyna göçürip aljakdygyny ýadyňyzdan çykarmaň. Bu hakykat, FTP serweriniň IP adresinden soň ýüze çykýan döwür ('.') Bilen görkezilýär.

Çekimsiz:

# ncftpget -u username -p  password 111.111.111.111 . /testdir/LinuxFun.pdf 

Çykyş:

LinuxFun.pdf:                                        	2.79 MB  260.53 MB/s

20 KB/s tizlikde göçürip almak tizligini çäklendirmek bilen:

# trickle -s -d 30 ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf 

Çykyş:

LinuxFun.pdf:                                        	2.79 MB   17.76 kB/s

Gözegçilik edilýän [dolandyrylmaýan] re inimde işlemek

Trickle, /etc/trickled.conf-da kesgitlenen birnäçe parametrden soň dolandyrylmadyk tertipde hem işledip biler. Bu faýl (daemon) özüni alyp barşyny we nädip dolandyrylýandygyny kesgitleýär.

Mundan başga-da, ähli programmalar tarapyndan ulanyljak global sazlamalary bellemek islesek, çylşyrymly buýrugy ulanmaly bolarys. Bu buýruk daemony işledýär we her gezek çäkleri kesgitlemezden, kynçylyk bilen işleýän ähli programmalar bilen paýlaşylýan göçürip almak we ýüklemek çäklerini kesgitlemäge mümkinçilik berýär.

Mysal üçin, ylgamak:

# trickled -d 50 -u 10

Islendik programmany göçürip almak we ýüklemek tizliginiň degişlilikde 30 KB/s we 10 KB/s bilen çäklenmegine sebäp bolar.

Aldawyň işleýändigini ýa-da haýsy argumentler bilen barlap biljekdigiňizi ýadyňyzdan çykarmaň:

# ps -ef | grep trickled | grep -v grep

Çykyş:

root 	16475 	1  0 Dec24 ?    	00:00:04 trickled -d 50 -u 10

Bu mysalda, şu baglanyşykdan göçürip alyp bolýan erkin paýlanylýan “Ol sowgat” wideosyny ulanarys.

Ilki bilen şu faýly aşakdaky buýruk bilen häzirki iş katalogyňyza göçürip alarys:

# wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4 

Ilki bilen, ýokarda sanalan buýruk bilen çişirilen daimi başlarys:

# trickled -d 30 -u 10

Çekimsiz:

# ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 

Çykyş:

2014-00-1460-he-is-the-gift-360p-eng.mp4:           	18.53 MB   36.31 MB/s

Çekiş bilen:

# trickle ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 

Çykyş:

2014-00-1460-he-is-the-gift-360p-eng.mp4:           	18.53 MB	9.51 kB/s

Aboveokardaky çykyşdan görnüşi ýaly, ýüklemegiň geçiriş tizligi ~ 10 KB/s-a düşdi.

2-nji mysalda bolşy ýaly, faýly häzirki iş katalogyna göçürip alarys.

Çekimsiz:

# ncftpget -u username -p password 192.168.0.15 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 

Çykyş:

2014-00-1460-he-is-the-gift-360p-eng.mp4:           	18.53 MB  108.34 MB/s

Çekiş bilen:

# trickle ncftpget -u username -p password 111.111.111.111 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 

Çykyş:

2014-00-1460-he-is-the-gift-360p-eng.mp4:           	18.53 MB   29.28 kB/s

Öň kesgitlenen ýükleme çägine (30 KB/s) laýyk gelýär.

Bellik: Daemon işe başlansoň, çylşyrymly ulanýan her bir programma üçin aýratyn çäkleri kesgitlemegiň zerurlygy ýok.

Öň hem belläp geçişimiz ýaly, trickled.conf arkaly trikliň zolakly giňligini hasam düzüp bolýar. Bu faýlyň adaty bölümi aşakdakylardan ybarat:

[service]
Priority = <value>
Time-Smoothing = <value>
Length-Smoothing = <value>

Nirede,

  1. [hyzmat] geçirijilik giňligini ulanmagy meýilleşdirýän programmanyň adyny görkezýär.
  2. Üstünlik bize başga birine garanyňda has ileri tutulýan bir hyzmaty kesgitlemäge mümkinçilik berýär, şeýlelik bilen bir programmanyň daemon dolandyrýan ähli geçiriş zolagyny ýapmagyna ýol bermeýär. San näçe az bolsa, şonça-da [hyzmat] berlen zolak giňligi.
  3. Wagtyňy ýumşatmak [sekuntlarda]: haýsy wagt aralyklarynyň haýsy programmanyň geçirilmegine we/ýa-da maglumat almagyna rugsat berjekdigini kesgitleýär. Has kiçi bahalar (0,1 - 1s aralygyndaky bir zat) interaktiw amaly programmalar üçin amatlydyr we has üznüksiz (tekiz) sessiýa getirer, birneme uly bahalar (1 - 10 s) köpçülikleýin geçirilmegi zerur bolan programmalar üçin has gowudyr. Hiç hili baha görkezilmedik bolsa, deslapky (5 s) ulanylýar.
  4. Uzynlygy ýumşatmak [KB-de]: pikir Wagt-Smoothing ýalydyr, ýöne I/O amalynyň dowamlylygyna esaslanýar. Hiç hili baha görkezilmedik bolsa, deslapky (10 KB) ulanylýar.

Düzediş bahalaryny üýtgetmek, kesgitlenen bahanyň ýerine aralyk aralygynda geçiriş nyrhlaryny ulanyp, [hyzmat] tarapyndan görkezilen programma terjime ediler. Gynansagam, bu aralygyň aşaky we ýokarky çäklerini hasaplamagyň formulasy ýok, sebäbi bu esasan her bir aýratyn ssenariýa baglydyr.

Aşakda CentOS 7 müşderisindäki trickled.conf nusga faýly (192.168.0.17):

[ssh]
Priority = 1
Time-Smoothing = 0.1
Length-Smoothing = 2

[ftp]
Priority = 2
Time-Smoothing = 1
Length-Smoothing = 3

Bu sazlamany ulanyp, FTP geçirimlerinden SSH birikmelerini ileri tutar. SSH ýaly interaktiw prosesiň has kiçi wagt ýumşadýan bahalary ulanýandygyna üns beriň, köp maglumat geçirişini (FTP) ýerine ýetirýän hyzmat has uly ähmiýete eýe.

Düzediş bahalary, öňki mysalymyzda göçürilen daemon tarapyndan görkezilen takyk gymmata laýyk gelmän, oňa ýakyn aralykda hereket etmek üçin ýüklemek we ýüklemek tizligi üçin jogapkärdir.

[Şeýle hem halap bilersiňiz: OpenSSH serwerini nädip goramaly we saklamaly]

Netije

Bu makalada, Fedora esasly paýlamalarda we Debian/öndürijilerde kynçylyk ulanyp, programmalar tarapyndan ulanylýan geçiriş giňligini nädip çäklendirip boljakdygyny öwrendik. Mümkin bolan beýleki ýagdaýlar şulary öz içine alýar, ýöne olar bilen çäklenmeýär:

  • Mysal üçin, torrent müşderisi ýaly ulgam kömegi bilen göçürip almak tizligini çäklendirmek.
  • Ulgamy \\ başarnyk \\ arkaly täzeläp boljak tizligini çäklendirmek, eger Debian esasly ulgamda bolsaňyz), paket dolandyryş ulgamy.
  • Serweriňiz proksi ýa-da gorag diwarynyň arkasynda dursa (ýa-da proksi ýa-da gorag diwarynyň özi), göçürip almak, ýüklemek ýa-da müşderiler ýa-da daşarky aragatnaşyk tizligini çäklendirmek üçin çylşyrymly ulanyp bilersiňiz.

Soraglar we teswirler iň oňat. Olary ugratmak üçin aşakdaky formany ulanyp bilersiňiz.