Ubuntu İnternet Gateway Yapılandırması ve Bandwidth Yönetimi | Hakan Çakıroğlu Kişisel Blog
You are here: Home » Linux » Networking » Ubuntu İnternet Gateway Yapılandırması ve Bandwidth Yönetimi
01 Nisan 2012	| Hakan Çakıroğlu ∇ Leave a comment(0) ⊕ Go to comments
Evinizde interneti sizin haricinizde paylaştığınız başkaları da varsa ve siz bu paylaştığınız internetin hızını deli olmamak için yönetmek istiyorsanız sürekli açık kalacak 2 ethernet girişi olan eski bir bilgisayar ve en ucuzundan bir switch işinizi görecektir 🙂 Eğer kablosuz bağlantıların da hızlarını limitlendirmek isterseniz bir de access pointe ihtiyacınız olacak. (Bu AP’yi switch’e bağlayarak)Bunu nasıl yapacağımıza gelelim ;
Öncelikle Ubuntu yüklenmiş bir işletim sisteminin kurulu olduğunu kabul ediyorum.
Aşağıdaki komutları vererek Ubuntuyu gateway olarak yapılandırıyoruz. Yani bir interfaceden gelen istekleri diğer interfacesine yönlendirebilmesi için izin veriyoruz aslında.
Eğer kurulmuş Ubuntu versiyonu 10.04 ve eski sürümler ise
/etc/sysctl.conf dosyasına şu satırları ekliyoruz
Eğer kurulu olan Ubuntu versiyonu 10.04’ten daha büyük ise
satırını bularak # işaretini siliyoruz ve kaydediyoruz.
Daha sonra Panelde bulunan network manager aracılıgı ile 2 ethernet kartına da elle ip adresleri veriyoruz;
Ok işaretlerine sol tuş ile 1 kere tıklayın ve en alttaki “Edit Connections” seçeneğini işaretleyin.
Açılan menude “Wired” sekmesi altında 2 adet ethernet görüyor olmalısınız.
eth0’ı seçin ve “Edit” seçeneğine tıklayın.
Ekrana gelen yeni menüden “IPv4 Settings” sekmesine gelin ve 192.168.1.200 / 255.255.255.0 / 192.168.1.1 /8.8.8.8 bilgilerini girerek kaydedin.
Aynı şekilde diğer ethernet kartı için de 192.168.2.200/255.255.255.0/0.0.0.0/8.8.8.8 bilgilerini yazın ve kaydedin.
Evet bu durumda 2 ethernet kartınızı da farklı subnetlerden ip vererek yapılandırmış olduk. Burada dikkat etmeniz gerken konu sizin kullandığınız ADSL modemin ipsi ve bloğunun ne oldugu. Yani eth0 için verdiğimiz degerler ADSL modemin dhcp’sinin dagıttı değerler ile aynı olmalı. Benim evde kullanıdığım modemin ip adresi 192.168.1.1 dolayısıyla eth0 için aynı subnetten bir ip seçtim ve gateway olarak modemimin ipsi olan 192.168.1.1 yazdım. 8.8.8.8 değeri ise google’ın public dns adresi. Buraya istediğiniz başka bir dns adres değeri de yazabilirsiniz.
Diğer ethernet kartına ise farklı bir subnetten ip verdik. Gateway belirtmedik. IPTABLES yardımıyla 2. ethernet kartından gelen isteklerin 1.ye geçmesini sağlayacağız. Bu sayede 2. ethernet kartının çıkışına bağlayacagımız switche takılı olan tüm kullanıcıların trafiği yeni yapılandırdığımız Ubuntu gateway üzerinden geçmek zorunda kalacak ve tüm trafiği izlemek şekillendirmek sınırlandırmak mümkün olacak.
NAT Ayarlarını Yapalım
Aşağıdaki komutları vererek Ubuntu için NAT’ı aktifleyelim ve eth1 üzerindeki trafiğin eth0’dan akmasını sağlayalım.
Bu ayarların bilgisayarımızı her başlattığımızda aktif olmasını sağlamak için, iptables çıktımızı bir dosyaya kaydederek rc.local tarafından aktif olmasını sağlayalım.
/etc/rc.local dosyasını vi ile açın ve şu kodu ekleyin. Bu sayede iptables.sav dosyasına kaydettiğimiz firwall ayarlarımız her başlangıçta tekrardan aktiflenecek
Ubuntu yüklü bilgisayarınızı baştan başlatın.
DHCP Sunucu Olmadan Test Yapalım
Evet buraya kadar herşeyi doğru yaptıysanız eth1’i yani 192.168.2.200 ip adresini verdiğimiz bacağı switche bağlayın, eth0’ı yani 192.168.1.200 bacağını ADSL modeme bağlayın. Daha sonra switche başka bir kablo daha baglayarak bu kabloyu client olarak kullanacağınız herhangi bir makinaya bağlayın ve el ile 192.168.2.201 / 255.55.255.0 / 192.168.2.200 / 8.8.8.8 ayarlarını yapın. (Yani ip adresi 192.168.2.201 olacak gw adresi ise 192.168.2.200 ve subnet 255.255.255.0 ve dns 8.8.8.8) Bu yeni ip adresi verdiğiniz makina ile 192.168.1.1 adresini pingleyin. Eğer 192.168.1.1 adresine erişebiliyorsanız kurduğuuz gateway sunucumuz sorunsuz çalışıyor demektir. El ile ip adresi vermemeiniz nedeni 192.168.2.0/24 networkünde herhangi bir dhcp sunucusu yapılandırılmamış olması. ubuntu sunucumuza bir de DHCP sunucu kuralım ve yapılandıralım.
Ubuntu Dhcp Sunucu Kurulumu
Aşağıdaki komut yardımıyla dhcp server paketinin kurulumunu yapalım.
Kurulum tamamlandıktan sonra konfigurasyon dosyasını yapılandıralım. vi ile /etc/dhcp3/dhcpd.conf dosyasını açalım ve şu satırları ekleyelim.
option domain-name “cakiroglu.local”;
Evet dhcp servisimizi yeniden başlatabiliriz artık. Aşağıdaki komutlar yardımıyla servisimizi durdurup yeni ayarları ile yeniden başlatalım
Şu anda eth1 tarafına yani switche bagladıgınız herhangi bir bilgisayar dhcp’den ip adresi alabiliyor olmalı. Yukarıdaki konfigurasyon ile dhcp sunucumuzun ilk vereceği ip olan 192.168.2.10 adresi ilk taktığınız pc’ye verilmiş olmalı. Aynı şekilde bu ip adresinin almış bilgisayar ile 192.168.1.1 adresini pingleyebiliyor olmalısınız ve hatta internete de çıkabiliyor olmalısınız.
Belirli bir bilgisayara yani mac adresine hep aynı ip adresini atamak istiyorsanız /etc/dhcp3/dhcpd.conf dosyasına şu satırları da eklemelisiniz. Yalnız burada dikkat etmeniz gereken konu dhcp sunucunuzun vereceği aralıkta olmayan adresler için bunu uyguluyor olmanız.
hardware ethernet 01:1b:b3:bf:db:56;
hardware ethernet 00:0a:95:b4:b4:bb;
Dhcp server tarafından verilmiş ip adreslerinin bir listesini gormek isterseniz aşağıdaki komutu kullanabilrisiniz.
Evet şu anki konfigurasyon ile sunucumuz internet paylaşımına hazır. Bandwidth yönetimi için tek yapmamız gereken wondershaper uygulaması ile eth1 üzerinden geçen trafiği limitlendirmek.
tcpdump uygulaması ile eth1 üzerinden akan trafiği gözlemlemek isterseniz şu komutu kullanabilirsiniz.
sudo tcpdump -n -s0 -i eth1
Wondershaper ile Bandwidth Limitleme
wondershaper uygulamasını kurmak için şu komutu kullanalım
wondershaper uygulamasının genel kullanımı şu şekildedir
wondershaper <interface> <download hızı> <uplaod hızı>
Fakat biz eth1’i içeride kullandığımızdan aslında download upload, upload da downloada dönüşmüş oluyor.
Yani eth1 için 100kB/s download ve 10kB/s hızlarında limit uygulamak için şu komutu vermek yeterli olacaktır.
Byte’ı bite çevirerek yazdıgımzda;
sudo wondershaper eth1 80 800
Evet bundan sonrasını internetinizi paylaştığınız kişiler düşünsün 🙂
Umarım faydalı bir paylaşım olmuştur, yeni bir yazuda yeniden görüşmek dileğiyle….
« Remote VNC login to Ubuntu 12.04
Arduino Uyumlu ENC28J60 Ethernet Modülü ve EtherCard Kütüphanesi Kullanımı »