Ubuntu altinda bağlantı paylaşımı ve trafik kısıtlama

From Lapis Wiki

Jump to: navigation, search
Bu makale NASIL bölümü serisinin bir parçasıdır
MasaÜstü Donanım 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