Bir resim bin kelimeye bedeldir deyimiyle ne yapmak istedigimi bir resim ile aciklayarak, baslamak istiyorum. Asagida evimdeki ag yapisini görmektesiniz.
Resimdeki Raspberry mini bilgisayari göz ardi edecek olursak, evimde birbirinden bagimsiz iki bilgisayar agi bulunmakta. Bu aglari ic ag ve dis ag olarak isimlendiriyorum. Ic ag üzerinden ev otomasyonu bilesenleri birbirleriyle iletisim icindeler. Dis agi internete erismek icin kullaniyorum. Bu iki agin birbirlerinden fiziksel olarak ayrilmalari benim icin mühim, cünkü disardan kimsenin ic aga eriserek, ev otomasyonuna müdehale etmesini istemiyorum. Bu durumda iki ag birbirlerinden izole bir sekilde hayatlarini sürdürüyorlar.
Ev disinda iken VPN üzerinden ev otomasyonu uygulamasini erisebilmek icin ic aga giris saglamam gerekiyor. Bu amacla iki agi birbirine baglayacak ve router vazifesi görecek bir bilesene ihtiyacim var. Bu görevi Raspberry üstleniyor. Bu yazimda kullandigim Raspberry nin router olarak nasil konfigüre edildigini sizlerle paylasmak istiyorum.
Bir bilgisayarin iki ag arasinda router olarak görev yapabilmesi icin iki agdada ayagi olmasi gerekiyor. Bilindigi üzere Raspberry sadece bir LAN girisine sahip. Ikinci bir LAN girisi olusturmak icin Delock USB LAN adapter modülünü kullandim. Bu adapter Raspian tarafindan otomatik olarak taniniyor ve sisteme ekleniyor.
Kullandigi LAN girisleri su sekilde:
pi@raspberrypi ~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:b8:f7:b0 inet addr:192.168.2.3 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1024520 errors:0 dropped:12 overruns:0 frame:0 TX packets:517855 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1483958463 (1.3 GiB) TX bytes:35039591 (33.4 MiB) eth1 Link encap:Ethernet HWaddr 00:13:3b:12:0e:c6 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:520568 errors:0 dropped:16 overruns:0 frame:0 TX packets:1020428 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:26963211 (25.7 MiB) TX bytes:1498010285 (1.3 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:47 errors:0 dropped:0 overruns:0 frame:0 TX packets:47 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4068 (3.9 KiB) TX bytes:4068 (3.9 KiB) pi@raspberrypi ~ $
Raspberryi router haline getirebilmek icin önce gerekli kurumlari gerceklestiriyorum:
sudo apt-get update && sudo apt-get install ca-certificates
Ikici LAN girisini su sekilde /etc/network/interfaces dosyasinda olusturdum:
pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet manual #USB LAN eth1 auto eth1 iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.2.1 pi@raspberrypi ~ $
Yeni ag girisinin aktif hale gelmesi icin yapilmasi gereken islem su sekilde:
sudo /etc/init.d/networking restart
Benim istegim, ic aga baglanan cihazlarin dis ag üzerinden internete baglanabilmesi yönünde. Örnegin bu yaziyi yazdigim bilgisayar Raspberryi router olarak kullanarak, internete erisebiliyor. Ag ayarlari su sekilde:
C:\Users\acar>ipconfig Windows-IP-Konfiguration Ethernet-Adapter LAN-Verbindung: Verbindungsspezifisches DNS-Suffix: local Verbindungslokale IPv6-Adresse . : fe80::e08a:4c9d:28d5:2b1c%11 IPv4-Adresse . . . . . . . . . . : 192.168.1.151 Subnetzmaske . . . . . . . . . . : 255.255.255.0 Standardgateway . . . . . . . . . : 192.168.1.1
Görüldügü gibi kullandigim bilgisayarin IP adresi 192.168.1.151 ve default gateway olarak 192.168.1.1 tanimli. 192.168.1.1 Raspberry nin IP adresi. Raspberry bir bacagi ile ic agda oldugu icin bu agin da bir parcasi. Ic aga baglanip, internete erismek isteyen bilgisayarlarin bir DHCP sunucusundan IP adresleri almalari gerekiyor. Ic ag icin DHCP servisini de Raspberry üstleniyor. Bu yüzden bir sonraki adimda Raspberry üzerinde bir DHCP sunucusu olusturmamiz gerekiyor. Sunucuyu söyle kuruyoruz:
sudo apt-get install isc-dhcp-server
Simdi /etc/dhcp/dhcpd.conf icinde asagidaki ayarlari yapiyorum:
# If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.150 192.168.1.250; option broadcast-address 192.168.1.255; option routers 192.168.1.1; default-lease-time 600; max-lease-time 7200; option domain-name "local"; option domain-name-servers 8.8.8.8, 8.8.4.4; }
DHCP sunucusu aga baglanan yeni bilgisayarlara IP adresi atama görevine sahip. Bu IP adreslerinin hangi aga ait oldugu bilgisini subnet ile tanimliyorum. Range ile hangi IP adreslerinin bilgisayarlara atanabilecegi netlestiriliyor. Buna göre yeni bilgsayarlar 150 ile 250 arasinda bir IP adresi alabilirler.
Bu ayarlarin ardindan DHCP sunucusunu restart ediyorum:
sudo /etc/init.d/isc-dhcp-server restart
Eger hata olmazsa ekranda asagidaki satirlarin görünmesi kuvvetle muhtemel:
[ ok ] Stopping ISC DHCP server: dhcpd. [ ok ] Starting ISC DHCP server: dhcpd.
Simdi sirada iki ag arasinda IP forwarding özelliginin aktive edilmesi var. Sadece bu sekilde Raspberry iki ag bacagi arasinda paketlerin gecisine izin vermektedir.
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Bu tanimlamanin kalici olmasi icin /etc/sysctl.conf dosyasinda asagidaki satirin yer almasi gerekiyor:
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
Ic agda bulunan bilgisayarlarin internete cikabilmeleri icin NAT (Network Address Translation) özelliginin aktivlestirilmesi gerekiyor.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Bu islemlerin ardindan ic ag switch bilesenine baglanan her yeni bilgisayar Raspberry den bir IP adrese alarak, internete erisebilecektir. Raspberry mini bilgisayarlari router yani sira NAS ve ev otomasyonunu yöneten sunucu olarak da kullaniyorum. Bir sonraki yazimda VPN ile disardan ic aga erisimin nasil yapilabilecegini aktarmaya calisacagim.
EOF (End Of Fun)
Özcan Acar
Özcan Acar
KurumsalJava.com, Smarthomeprogrammer.com ve Mikrodevre.com adresleri altında blog yazıyor. Kurduğu BTSoru.com'da ona yazılımla ile ilgili sorularınızı yöneltebilirsiniz. Pratik Programcı Yayınları bünyesinde Pratik Spring ve Pratik Agile ismini taşıyan kitapları bulunmaktadır. 21.12.2009 tarihinde Java Champion olarak seçildi.
Latest posts by Özcan Acar (see all)
- Cam Kırılma Uyarı Sensörü İle Hırsızlığa Önlem - Mayıs 18, 2017
- Akıllı Ev Big Data Oluşturmaya Başladı… - Kasım 11, 2016
- “Yeni Mektup Var” Bildiricisi… - Ekim 23, 2016