Ubuntu altinda bağlantı paylaşımı ve trafik kısıtlama
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • Dağıtımlar |
| Tarayıcılar• Programlama • Linux ve Oyunlar |
Varsayalım evinizde iki tane bilgisiyar var. Ve bu bilgisyarların internet bağlantısı bir router tarafından gerçekleşiyor. Bu router ise professionel router değil de, bizim gündelik yaşamımız için aldığımız, dahili modem ile satılan routerler. Hani adsl kullanmak için. 1 portlu olanı vardı, 4 portlu olanı vardır, ve bazılarında ise hemi 4 portlu hemi de wireless destekliyor.
Bu son dediğim özellikle ev kullanımda çok kullanışlı, bir çok bilgisayarı modeme bağlayıp, kolaylıkca herkese internet bağlantısı sağlıyabilirsınız. Peki örneğin 512 kbps bir hattınız var. Ve bu hattı iki tane bilgisayar kullanıyor. Sizin yapmak istediğiniz bu 512'lik hattı belli oranlarda bölmek. Yani örneğin 1.makine 384 kbps ile girecek internete, 2.makine ise 128 ile girecek. Bunu yapmanın bin bir türlü yöntemi var.
En yaygın ve mantıklı ise, router'i ayarlamak. Genelikle kaliteli ve profesyonel anlamda kullanılan router'lerde traffic shaping vardır. Yani hız ayarlama için gerekli özellikler. Ama bizim kullandığımız, standart 1 portlu,4 portlu dahili modemlerde bunu bulmanız imkansız. Diğer bir yöntem ise mesela, araya bir tane eski bir Linux makinesi koymak. Burada sorun ise bu makineyi bulmak ve konfigüre etmek. Evde sadence 2 tane makine var, acaba daha ucuz ve kolay bir yöntem olamaz mı?
Olur tabi , eğer sizde Linux kullana şanşlı insanlardan biri iseniz, bunu kolaylıkla yapabilirsiniz. Kısaca kafanızda canlandırmanız için şema:
İnternet -----> Router + dahili modem ----> 1.Makine + 2. Makine
Router'den makinelere ayrı ayrı bağlantılar gidiyor.
1. Makine yani bizim Linux makinesindeki IP atamaları şu şekilde olacak
gw: 192.168.1.1 ıp: 192.168.1.2
2. Makine ise şu şekilde
gw: 192.168.1.2 ıp: 192.168.1.3
Bunlar kesinlikle bu şekilde olacak. Eğer isterseniz 2. makinenin ıp'sini değiştirebilirsiniz. Ardından uçbirimden(konsol) şu satırı yazalım
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
bu satırdan sonra bu komutu yazalım
echo "1" >/proc/sys/net/ipv4/ip_forward
Bunları yaptıksan sonra ikince makineye gidip herhangi bir yere ping atalım, örneğin google(ping -c3 www.google.com) Eğer ping atması başarısız ise, yukarıdaki IP atamalarında bir hata yapmışınız demektir. Yeniden bakmanızda fayda var, eğer bağarılı ise şu satırı yazalım
echo "0" >/proc/sys/net/ipv4/ip_forward
Bu komutdan sonra 2 makineden bir daha ping atalım. Bu sefer ping atması başarasız olması lazım. Eğer başarısız ise, yolun %90 bitmiş demektir. Yukarıdaki iki komut ile 2. makinenin bağlantısını açabilirsiniz veya kapatabilirsiniz. 1 ile açabilirsiniz, 0 ile kapatabilirsiniz.
Gelelim hız ayarlamasına. Hızı bölmek istedimiştik.Bunu için de aşağıdaki satırları shape.sh olarak kayıt edin
#!/bin/sh DEV=eth0 IP=192.168.1.3 LINERATE=100mbit THROTTLERATE=16kbps TC=/sbin/tc
$TC qdisc del dev $DEV root 2>/dev/null $TC qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth $LINERATE $TC class add dev $DEV parent 1: classid 1:1 cbq rate $THROTTLERATE allot 1500 prio 5 bounded isolated $TC filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst $IP flowid 1:1 $TC qdisc add dev $DEV parent 1:1 sfq perturb 10
Bunun ardından haklarını 755 olarak değiştirdin(chmod 755 shape.sh). Sonra da çalıştıralım
sh shape.sh
Bu komutdan sonra, 2. makine'den birşeyler indirmeye çalışın örneğin herhangi bir dosya, ve hıza bakın. Eğer hızınız 16k geçmiyorsa iş tamamdır. Hızı ayarlamak için de yukarıdaki script'de THROTTLERATE=16kbps olan kısmı değiştirmeniz yeterkli. Evet bu kadar. Bundan sonra 2 . makine sizin bilgisyarınızın üzerinden geçecektir. Bu sayede hız kontrolü de sizin ellinizde. Yukarıdaki yaptıklarımı bir sonraki açılışta kaybolmaması ve her seferinde otomatik olarak açılması için bir sadece ufak bir düzenleme lazım.
Aşağıdaki satırları /etc/init.d/ altında netpaylas.sh olarak ve 755 hakları ile kayıt edin. Aynısı yukarıda script için de geçerli.
#!/bin/bash echo "1" >/proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Ardından ise aşağıdaki satırları sırayla /etc/init.d/ altında yazalım
update-rc.d -f shape.sh defaults 93
update-rc.d -f netpaylas.sh defaults 92
Evet bu kadar, artık açılısta da scriptlerin ikiside açılacak.
Önemli bir nokta var, oda karşıdaki insan makinesindeki gw'yi 192.168.1.1 olarak değiştirdimi herşey boşa gider. Bu da bunun kötü tarafı. Şahet ama Linux kullanan şanslı insanlardan biri iseniz, karşıdaki makinede kolaylıka erişim engelenebilir.
Yukarıda yazdıklarım hemen hepsi, irc'de #ceviz.net de redial ile geçmiştır. Bana düşen ise bunları derli toplu yazmak.Yardımcı olduğu için teşekürler.
http://forum.linux-sevenler.org/index.php/topic,1927.0/topicseen.html
