Raspberry Pi bilgisayarlarında en çok tercih edilen işletim sistemi performans ve güvenliğinden ötürü Linux tabanlı olanlardır. Linux’un doğası gereği hemen hemen her işlem birer komut vasıtasıyla gerçekleştirilir. Linux gücünü ve sağlamlığını bu özellikten alır. Grafiksel arabirim kullanarak yapabileceklerinizden çok daha fazlasını komutlar ve komutların sahip olduğu seçenekler ile yapabilir, daha güzeli bunu yaparken de işletim sisteminin çalışması ve mimarisi hakkındaki bilginiz de artar. Raspberry Pi bilgisayarınıza bağlanıp yönetmek için SSH uzak konsol bağlantısı yöntemini kullanabilirsiniz. Bu aynı zamanda güvenli bir bağlantı da sunar. Bunun için bağlanacağınız Raspberry Pi bilgisayarının Adını/IP adresini ve kullanıcı parolasını bilmeniz yeterlidir.
IP Adresini Tespit Etmek
Raspberry Pi çalışmaya başladığında dhcpcd adında bir hizmet çalışarak ağdaki DHCP sunucudan (modem veya bağımsız DHCP sunucu) bir IP adresi tahsis etmesini ister ve DHCP sunucusunun gönderdiği IP yapılandırmasını (IP adresi, ağ geçidi adresi ve DNS sunucu adresi) kendisine uygular.
Eğer Raspberry Pi’ın kurulumu sırasında cmdline.txt (/boot/cmdline.txt) dosyasında sabit bir IP numarası tanımlamadıysanız; Raspberry Pi, IP adresini DHCP sunucusundan otomatik olarak tahsis etmeyi deneyecektir. Eğer ağ ortamında bir DHCP sunucusu varsa; DHCP sunucusu sıradaki IP adresini Raspberry Pi’a gönderir. Eğer headless bağlantı yöntemini kullanıyorsanız yani konsola bir monitör ve klavye değilse, Raspberry Pi’a hangi IP adresinin atandığını bilemeyebilirsiniz. Raspberry Pi’ın IP adresini öğrenebilmeniz için birçok yöntem vardır.
Yöntem-1: local üst alan adını kullanarak IP adresini öğrenmek
Bu yöntem en kolayı olduğu için ilk olarak denenmesi gereken yöntemdir. Kullandığınız işletim sisteminin (Linux, Mac veya Windows) komut istemini açarak basitçe ping komutunu verebilirsiniz. Aşağıda, ağdaki bilgisayar adı (hostname) raspberry olan bilgisayarımız tarafından ping’e verilen cevap gözüküyor. Bu cevapta da ihtiyacımız olan IP adresi gözükmektedir. ping komutu temelde, ağdaki bir bilgisayarın ulaşılabilir olup olmadığını kontrol etmek için kullanılan bir araçtır ve aşağıdaki örnekte de görebileceğiniz gibi bilgisayar adının sağına local takısı getirilmiştir. Bu takı sayesinde ping aracı, arka planda mDNS (multicast DNS) protokolünü işleterek bilgisayar adı (hostame) verilen cihazın IP adresini araştırmaya başlar. Araştırmayı ağa ilgili talebi ileten bir yayın (multicast) paketi yollayarak başlatır. hostname’i IP adresine dönüştüren bir protokol olan mDNS (Multicast DNS) ’in doğru çalışabilmesi için bilgisayar adının sağına TLD takısı olan local kelimesinin eklenmesi önemlidir. mDNS protokolü sadece local’ TLD (Top Level Domain Name) takısına sahip hostname’ler için çalıştırılır ve kullanılır.
1 2 3 4 5 6 |
pi@raspberry2 ~ $ ping raspberry.local PING cell-rasp.local (192.168.0.102) 56(84) bytes of data. 64 bytes from 192.168.0.102 (192.168.0.102): icmp_seq=1 ttl=64 time=0.689 ms 64 bytes from 192.168.0.102 (192.168.0.102): icmp_seq=2 ttl=64 time=0.762 ms 64 bytes from 192.168.0.102 (192.168.0.102): icmp_seq=3 ttl=64 time=0.695 ms |
Tüm modern işletim sistemleri, mDNS adlı ağ işlevini destekler. Bu işlev, tüm ağa bir yayın yaparak (UDP multicast) sorgulanan bilgisayar adının IP adresini talep eder. Bu talep sorgulanan bilgisayar tarafından tüm ağa cevaplanır ve ağdaki diğer bilgisayarlarca da görülür ve ön belleklenir. Tabii ki, sorgulama işlemini yapan ve bu sorguya cevap verecek bilgisayar üzerinde mDNS taleplerini işleyecek bir programın/servisin de çalışıyor olması gerekir (UDP Port: 5353). Bu servis Linux işletim sistemlerinde avahi-daemon, Windows ve Mac’lerde ise bonjour’dur ve varsayılan olarak yüklü ve çalışır vaziyette gelir. mDNS işlevlerinin sağlıklı çalıştığı bir ağda IP adresi kullanmaya ihtiyaç duymayabilirsiniz. Bağlanmak istediğiniz Raspberry Pi bilgisayarının adını .local eki ile yazarak kullanabilirsiniz. Tabii ki, bilgisayar adını kullanabilmeniz için ağınızda aynı isme sahip başka bir bilgisayarın bulunmaması gerekir.
Yöntem-2: Modemin yönetim panelinden IP adreslerini listeletmek
Raspberry Pi’ın IP adresini öğrenmenin en kolay yöntemlerinden birisi modeminizin yönetim paneline girerek tahsisi yapılmış IP adreslerini listeletmek olabilir. Birçok modem çeşidi olmasına rağmen bu tür listeler genellikle Ağ yapılandırma, DHCP ve Durum gibi menü seçenekleri altında bulunur. Modeminizin yönetim paneline girerek kısa bir araştırma ile DHCP tarafından dağıtılan (kiraya verilen) IP adreslerini ve kullanım durumlarını görebilirsiniz.
Yöntem-3: hostname komutu ile IP adresini öğrenmek
Diğer bir yöntem de Raspberry Pi’a bir monitör ve klavye bağlayarak hostname komutuna -I seçeneğini vermektir. Hostname Raspberry Pi’ın tüm ağ arabirimlerine atanan IP adreslerini listeleyecektir:
1 |
pi@raspberry ~ $ hostname -I |
Yöntem-4: arp-scan ile IP adresini öğrenmek
Diğer bir yöntem de; eğer ağda bir Linux veya başka bir Raspberry Pi’ınız varsa komut satırına giderek ağı taramak olabilir. Ağ taraması yapmak için arp-scan aracını kullanabilirsiniz. Aracı aşağıdaki gibi kurup tüm ağınızdaki IP adreslerini taratabilirsiniz (tarama biraz uzun sürebilir lütfen tamamlanmasını bekleyin):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
pi@raspberry ~ $ sudo apt install arp-scan -y pi@raspberry ~ $ sudo arp-scan -l Interface: eth0, datalink type: EN10MB (Ethernet) Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/) 192.168.0.1 00:18:39:dd:fe:bd Cisco-Linksys LLC 192.168.0.21 00:c0:49:f0:29:0a U.S. ROBOTICS, INC. 192.168.0.22 e8:ab:fa:11:36:e8 (Unknown) 192.168.0.100 50:e5:49:c5:49:0d GIGA-BYTE TECHNOLOGY CO.,LTD. 192.168.0.101 b8:27:eb:26:2f:fd (Unknown) 192.168.0.102 b8:27:eb:4d:25:84 (Unknown) 192.168.0.153 e8:ab:fa:11:36:e8 (Unknown) 192.168.0.166 e8:ab:fa:11:36:e8 (Unknown) (DUP: 1) 11 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.8.1: 256 hosts scanned in 2.789 seconds (91.79 hosts/sec). 8 responded |
arp-scan aracının çıktı listesinde gördüğünüz b8:27:eb ile başlayan sonuçlar Raspberry Pi bilgisayarlarına ait IP ve MAC adresi çiftleridir.
Yöntem-5: netdiscover aracı ile ağı taratmak
arp-scan’den daha kapsamlı tarama sonuçları üretebilecek başarılı bir program da netdiscover’dır. Programı aşağıdaki gibi yükledikten sudo ile çalıştırabilirsiniz. Netdiscover tüm ağı tarayarak açık olan bilgisayarların/cihazların IP/MAC adreslerini ve üreticilerini listeleyecektir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
pi@raspberry:~ $ sudo apt install netdiscover -y pi@raspberry:~ $ sudo netdiscover Currently scanning: 10.100.253.0/8 | Screen View: Unique Hosts 1863 Captured ARP Req/Rep packets, from 15 hosts. Total size: 111780 ________________________________________________________________________ IP At MAC Address Count Len MAC Vendor / Hostname ------------------------------------------------------------------------ 192.168.2.10 00:1f:28:6b:3f:80 1 60 HPN Supply Chain 169.254.206.207 40:01:c6:fa:ce:cf 566 33960 3COM EUROPE LTD 11.0.0.5 d0:27:88:56:ce:ad 847 50820 Hon Hai Co.,Ltd. 11.0.0.2 18:a6:f7:d0:d5:36 291 17460 TP-LINK CO.,LTD. 11.0.0.20 74:d4:35:69:f6:65 80 4800 Unknown vendor 192.168.120.1 74:d4:35:63:37:df 1 60 Unknown vendor 11.0.0.1 00:e0:4c:77:11:98 17 1020 REALTEK 11.0.96.161 00:1c:a8:dc:90:ae 8 480 AirTies 0.0.0.0 30:85:a9:96:ad:45 5 300 Unknown vendor 11.0.92.20 30:85:a9:96:ad:45 9 540 Unknown vendor |
Yöntem-6: arpscannet programı ile ağı taramak
Benzer ağ taramasını Windows bilgisayarından yapmak için kullanılabilecek ücretsiz bir yazılım da arp scannet adlı programdır. Programı sourceforge.net sitesinden sourceforge.net/projects/arpscannet/ adresinden indirebilirsiniz.
Arp scannet programı ile yapılan bir ağ taraması
Programı çalıştırdıktan sonra start ip address ve end ip address kutularına ağınıza uygun IP aralığını yazıp Scan düğmesine tıklatın. Program taramayı bitirdiğinde size ağda kullanımda olan tüm IP adreslerini listeleyecektir.
Yöntem-7: Advanced IP Scanner ile ağı taramak
Bu konuda kullanabileceğiniz programlardan bir tanesi de Famatech firmasının üretmiş olduğu Advanced IP Scanner adlı programdır. Programı www.advanced-ip-scanner.com adresinden indirip çalıştırdıktan sonra karşınıza aşağıdaki gibi bir arabirim gelir.
Advanced IP Scanner Programı
Taramayı başlatmak için IP tarama adres aralığını belirleyip Scan düğmesine tıklatmak yeterlidir. Taranacak IP adresi aralığını programın tavsiye ettiği aralıktan farklı olarak kendi ağ adresinize uygun ayarlarsanız tarama daha kısa sürede tamamlanacaktır. Taramanın sonunda ağda tespit edilen cihazların IP adresleri, üreticileri ve üzerinde çalışan servisler listelenir.
Yöntem-8: Android uygulaması Fing ile ağı taratmak
Android üzerinde ağ taraması yapabilen birçok kullanışlı uygulama yer almaktadır. Fing, Net Scan ve exNetScan bunlardan en çok bilinenleridir. Telefonunuzun kablosuz ağ bağlantısı açıkken Fing uygulamasını çalıştırdığınızda, bağlı olduğu ağ üzerinde bir tarama gerçekleştirerek aktif cihazları listeleyecektir. Aşağıdaki uygulama görüntüsünden de görülebileceği gibi listede ağdaki cihazların marka/model bilgileri ile MAC ve IP adresleri de yer alır.
Fing, ağ tarayıcısıın ekran görüntüsü
Raspberry Pi’a SSH ile Bağlanmak
Artık Raspberry Pi’ın IP adresini elde ettiğimize göre şimdi bu IP adresini kullanarak bir SSH yani uzak konsol bağlantısı kurabiliriz. SSH[1] (Secure Shell) ağ üzerinde iki bilgisayar arasında güvenli bir iletişim kanalı oluşturarak hedef bilgisayar üzerinde bir komut konsolu açar. Bu komut konsolu ile Raspberry Pi üzerinde komutlar çalıştırarak çıktılarını görebilir ve metin tabanlı bir ortamda komutlar girerek yönetebilirsiniz.
SSH uzaktaki bir bilgisayara güvenli bir şekilde bağlantı kurmak için kullanılan bir iletişim protokolü ve aynı zamanda bir ağ servisinin de adıdır. Bir PC üzerinden SSH ile Pi’ın komut konsoluna bağlanmak için SSH istemcisi denilen programlar kullanılır. PuTTY en çok kullanılan SSH istemcisi programlardan birisidir. PuTTy aynı zamanda açık kaynak kodlu ve ücretsiz bir programdır. PuTTY’yi resmi web sitesi olan www.putty.org adresinden indirip çalıştırdığınızda sizi aşağıdaki gibi arabirim karşılar.
PuTTY istemcisinin ekran görüntüsü
Putty penceresindeki Host Name (or IP address) kutusuna Raspberry Pi’ın IP adresini yazıp Open düğmesine tıkladığınızda Raspberry Pi’ın komut konsoluna ulaşırsınız. Ön tanımlı kullanıcı adı pi, parolası da raspberry‘dir. Kullanıcı adı ve parolayı doğru girdiğinizde oturum açılacak ve aşağıdaki gibi sizden bir komut girmenizi bekleyecektir.
Raspberry Pi’ın komut konsolu
Tebrik ederim bu aşamaya kadar gelebildtudeiyseniz Raspberry Pi ile ilk defa tanışanların en çok zorlandığı bir aşamayı başarıyla geçtiniz demektir. Bu komut konsolu Linux işletim sistemlerinin bel kemiğini oluşturur. Aklınıza gelebilecek her türlü işlemi bu konsol aracılığı ile yapabilmeniz mümkündür.
Yukarıdaki komut konsolu ekranına odaklanırsak bize önemli bir uyarıda bulunuyor:
1 |
NOTICE: the software on this Raspberry Pi has not been fully configured. Please run 'sudo raspi-config' |
Uyarıda, Raspberry Pi’ın tam olarak ayarlanmadığını, ilk ayarları yapmak için raspi-config aracını çalıştırmamız gerektiğini söylüyor.
1 |
pi@raspberry ~ $ sudo raspi-config |
Aracı çalıştırdıktan sonra, bir menü sistemi aracılığı ile ilk ayarlamaları yapabileceğimiz aşağıdaki gibi bir arabirim açılacak:
Raspi Config arabirimi
Kitabımız boyunca yeri geldiğinde gerekli ayarları raspi-config aracı ile yapacağız. Bu konudaki temel ayarları yapmak için “Monitörsüz (Headless) Kurulumdan Sonraki İlk İşlemler” konusuna bakabilirsiniz.
Ağ arabirim kartının adını öğrenmek
Raspberry Pi’a bağlı ağ arabirim kartlarını listelemek için basitçe ifconfig komutu kullanabilirsiniz. Komutun çıktısında sisteme bağlı ve kullanılabilir durumda olan ağ arabirim kartlarının adları ve sahip oldukları yapılandırma bilgileri listelenecektir. Aşağıdaki çıktıda kablolu ağ arabirim kartının adını eth0 yerine enxb827eb262ffd olarak belirtilmiştir.
1 2 3 4 5 6 7 8 9 10 |
pi@raspberry ~ $ ifconfig enxb827eb262ffd: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.102 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::a23f:8497:61a:9e1c prefixlen 64 scopeid 0x20<link> ether b8:27:eb:26:2f:fd txqueuelen 1000 (Ethernet) RX packets 113 bytes 11057 (10.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 113 bytes 20770 (20.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
Daha önceden Linux deneyimi olanlar eth0, eth1 vb. olan ağ kartı isimlendirmelerine aşinadır. Raspberry Pi OS dağıtımı Jessee’den Stretch sürümüne geçerken bu isimlendirme kuralında bir değişikliğe gidildi. Bu değişikliği tarif eden ad “Predictable Network Interfaces Names” yani “tahmin edilebilir ağ arabirim kartı isimleri” dir. Yukarıdaki komut çıktısında yer alan enxb827eb262ffd, ağ kartının Linux sistemindeki adıdır. Bu yeni isimlendirme kuralına göre ethernet kartlarının adı enx ile başlayacak, ardından fiziksel adresi (MAC adresi) gelecektir. Komutun çıktısından ağ arabirim kartının MAC adresinin b8:27:eb:26:2f:fd olduğu görülmektedir. Yeni isimlendirme kuralına göre kablosuz ağ kartları ise wlx (wlan) ile başlayacaktır.
Bu yeni isimlendirme kuralı hakkında daha fazla bilgiye sayfanın sonundaki dipnottan erişebilirsiniz[2]. Neden bu isimlendirme değişikliğine gidildiğinden kısaca bahsetmek gerekirse; eth0 ve eth1 ile devam eden arabirim isimlendirmesi Linux çekirdeği tarafından açılış sırasında otomatik olarak yapılmaktaydı. Günümüzde bilgisayarların birden fazla ağ arabirim kartına sahip olduğu ve bilgisayar çalışırken çıkartılıp eklenebildiği (USB kartlar) düşünüldüğünde, bu durum bazı sorunlara sebebiyet vermekteydi. Bu sorunlar özellikle güvenlik temelli sorunlardır. Örneğin eth1 için tanımlanmış bir yapılandırma, bu ağ kartı fiziksel olarak sistemden ayrıldığında veya fiziksel yuvası (usb port’u veya pci yuvası) değiştirildiğinde Linux çekirdeği tarafından eth0 olarak isimlendirilmekte ve yanlış bir yapılandırmanın uygulanmasına neden olmaktadır. Bu özellikle güvenlik duvarı yapılandırmalarının zafiyetine neden olur. Böyle bir durumda eth1 port’u için tanımlanan güvenlik duvarı kuralları eth0 için işletilir. Bu zafiyeti gidermek için 4 farklı isimlendirme kuralı benimsenmiştir. Bunlar;
- Firmware/bios’un onboard aygıtlar için sunduğu sıra numarası
- Firmware’ini sunduğu pci-express hotplug yuva numarası
- Donanımın fiziksel/coğrafi konumunu işaret eden numara
- Ağ arabirimin MAC (Media Access Control) adresi
Raspberry Pi’ın resmi dağıtımı olan Raspberry Pi OS’un Strecth (Raspbian Strecth) sürümünden itibaren 4 numaralı isimlendirme kuralı seçimlik olarak uygulanmaktadır. Bu ayarı raspi-config aracını kullanarak etkinleştirebilir veya pasifleştirebilirsiniz. Ayar, varsayılan olarak pasif olduğundan alışılmış olan ethX isimlendirmesi kullanılır. Ayarı değiştirmek için Advanced Options (raspi-config) menüsü altındaki Network interfaces names seçeneğini kullanabilirsiniz:
1 |
pi@raspberry:~ $ sudo raspi-config |
IP Yapılandırmasını Elle (Manual) Yapmak
Raspbian’ın Jessie (2015) dağıtımından itibaren sabit IP adresi tanımlamaları için /etc/dhcpcd.conf dosyasını kullanmaya başlamıştır. Bu dosya dhcpcd servisi tarafından okunmakta ve IP yapılandırması bu servis tarafından yerine getirilmektedir. Sabit (statik) IP yapılandırmasını gerçekleştirmek için /etc/dhcpcd.conf dosyasını aşağıdaki gibi açıp ilgili satırları ekleyin (değişiklikleri kaydedip çıkmak için Ctrl+O ardından Ctrl+X tuşlarına basabilirsiniz):
1 2 3 4 5 6 |
pi@raspberry ~ $ sudo nano /etc/dhcpcd.conf interface eth0 static ip_address=192.168.0.105/24 static routers=192.168.0.1 static domain_name_servers=8.8.8.8 |
Dosya içerisindeki tanımlamaları kısaca açıklamak gerekirse:
- interface: Ağ arabirim kartının (Ethernet) adıdır. ifconfig komutu ile ağ arabirim kartınızın adını öğrenebilirsiniz.
- ip_address: Raspberry Pi’a sabit olarak vermek istediğiniz IP adresidir.
- 24: Raspberry Pi’ın yer aldığı ağı tanımlayan ağ maskesi olan 255.255.255.0’a karşılık gelir.
- routers: Ağ geçidi, yani internete çıkarken kullanılacak arabirimin adresidir.
- domain_name_servers: Alan adlarının IP adreslerine dönüştürülmesi için kullanılacak DNS bilgisayarının adresidir.
Bu değerler ve genel ağ yapılandırmaları hakkında bilgi edinmek için “TCP/IP İnternetin Evrensel Dili” [3] ve “Her Yönüyle İnternetin Altyapısı TCP/IP” [4] adlı kitapları okumanızı tavsiye ederim.
Hatırlatma: Elle yapılandırmayı yeni bir headless kurulumun ardından yapıyorsanız cmdline.txt dosyasındaki ip ayarını kaldırmayı unutmayın. IP ayarını (satırın sonunda ip seçeneği)/boot/cmdline.txt dosyasından kaldırmak için nano editörünü kullanabilirsiniz. Kaldırmadığınız takdirde; ağ arayüzü birden fazla IP adresine sahip olur.
1 |
pi@raspberry ~ $ sudo nano /boot/cmdline.txt |
Ayarların geçerli olabilmesi için, otomatik IP yapılandırması tahsis eden bir hizmet olan dhcpcd ’yi yeniden başlatın:
1 |
pi@raspberry ~ $ sudo systemctl restart dhcpcd.service |
Ayarların geçerli olup olmadığını sınamak için ifconfig, hostname ve route komutlarını kullanabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
pi@raspberry ~ $ ifconfig eth0: Link encap:Ethernet HWaddr b8:27:eb:4d:5c:87 inet addr:192.168.0.105 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::ba27:ebff:fe4d:5c87/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:736 errors:0 dropped:0 overruns:0 frame:0 TX packets:490 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:51374 (50.1 KiB) TX bytes:69314 (67.6 KiB) |
ifconfig ekran çıktısında, inet addr alanında Raspberry Pi’ın sahip olduğu geçerli IP adreslerinden birisi görülmektedir. Bu örnekte Raspberry Pi’a 192.168.0.101 IP adresini sabit olarak atama işlemini gerçekleştirmiş olduk. Ağ geçidinin doğru ayarlanıp ayarlanmadığını görmek için route komutunu kullanabilirsiniz.
1 2 3 4 5 6 7 8 9 |
pi@raspberry ~ $ route –v Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 202 0 0 eth0 192.168.0.0 * 255.255.255.0 U 202 0 0 eth0 |
Route komutunun çıktısında varsayılan ağ geçidinin 192.168.0.1 olduğunu görebilirsiniz. Siz de bu adres, modeminizin ya da internete çıkış yapmanızı sağlayan cihazın IP adresi olmalıdır. Ağ geçidi adresi, bulunulan ağa ait olmayan bir IP paketinin hedefine ulaştırılması için gönderileceği ağ arabiriminin adresini ifade eder. Diyelim ki web tarayıcınız google.com’un web sayfası ile iletişim kurmak istiyor. Google ’un web sunucusu içinde bulunduğunuz ağda yer almadığı için, bu istek ağ geçidi üzerinden internetten talep edilmelidir. Yani, iletişim kurulmak istenen bilgisayar, bulunulan ağ içerisinde yer almıyorsa veri paketi ağ geçidine yönlendirilir. Örneğin 192.168.0.* adresli ağda yer alan bir bilgisayar, 194.27.16.17 numaralı bir internet adresi ile iletişim kurmak isterse, iletişim isteği varsayılan ağ geçidine yönlendirilir. Bu işlem, işletim sistemi tarafından otomatik gerçekleştirilen bir davranıştır. Dolayısıyla Raspberry Pi’ın internet bağlantısını yapmak için modeminizin adresini ağ geçidi adresi olarak kullanmak gerekli ve yeterli olacaktır.
Ağ arabirim kartına atanmış geçerli IP adreslerini hostname komutuna –I seçeneğini vererek de pratik şekilde görebilirsiniz:
1 2 3 |
pi@raspberry ~ $ hostname –I 192.168.0.105 |
Raspberry Pi’ın internet ayarlarının doğru şekilde yapıldığını kontrol etmek için çok faydalı bir komut olan ping komutunu kullanarak Google sunucularından birisini dürtelim (ping’lemek dürtmek şeklinde de ifade edilir).
1 2 3 4 5 6 7 |
pi@raspberry ~ $ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=246 time=69.7 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=246 time=70.8 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=246 time=74.6 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=246 time=68.5 ms |
Bu örnekte, internette çok kullanılan DNS sunucu adreslerinden biri olan Google firmasına ait bir sunucunun IP adresini kullandık (8.8.8.8). Bu komut ile 5 adet ping paketi (5 packets transmitted) internetteki 8.8.8.8 adresli sunucuya gönderildi ve karşılığında 5 cevap paketi alındı (5 received). Gelen paketlerin hepsi de bize internetten geldi. Böylece internet ile ağ iletişimimizin başarıyla kurulduğunu anlamış olduk. Ping komutunun çalışmasını durdurmak için CTRL+C tuş bileşimini kullanabilirsiniz.
Eğer %0 packet loss (paket kaybı yok) değerine sahipseniz Raspberry Pi’ın internet bağlantısını başarıyla gerçekleştirmiş, sağlıklı bir internet bağlantısına sahip olmuşuz demektir. Ayrıca her satırın sonunda gözüken 40.7 ms gibi değerler ping paketlerinin ne kadar sürede cevaplandığını söylemektedir, bu değerler ile internet bağlantınızın hızınızı farklı durumlarda kıyaslayabilirsiniz.
Hatırlatma: Eğer Raspberry Pi manuel yapılandırmayı uygulamıyorsa /var/log/messages dosyasındaki kayıtlara göz atabilirsiniz. Eğer ağda aynı IP adresini kullanan bir başka cihaz varsa manuel IP yapılandırması uygulanmaz.
Raspberry Pi’ı İnternete Bağlamak
Raspberry Pi’ın internet bağlantısını yapmak için, tüm ağ bağlantılı cihazlarda olduğu gibi temel olarak iki tanımlamaya ihtiyaç vardır. Bunlar ağ geçidinin IP adresi ve DNS sunucusunun IP adresinin Raspberry Pi’a tanımlanmasıdır. Bu ayarları elle (manual) ve otomatik (dhcp) yapmak gibi iki seçeneğe sahibiz. İkisinin de avantaj ve dezavantajları vardır.
Profesyonel kullanıcılar daha çok elle yapılandırmayı tercih ederler. Ağ üzerinde yer alan cihazlarına IP dağıtım planlaması çerçevesinde sabit IP adresleri atarlar ve ağdaki her cihazın adresi belli olduğundan, gerektiğinde onlara ulaşmak kolay olur. Sabit IP yapılandırmasını gerçekleştirmek için Raspberry Pi OS’un bazı yapılandırma dosyalarının düzenlenmesi gerekir. Burada anlatılan IP yapılandırması kavramı Raspberry Pi’a atanacak IP adresi, ağ geçidinin (router) adresi ve alan adlarını çözmek için DNS sunucu adresi olmak üzere 3 kısımdan oluşur. Kurulum sırasında cmdline.txt dosyasının sonuna eklediğiniz IP adresi, işletim sisteminin çekirdeğine seçenek olarak geçildiği için Raspberry Pi’ın çalışma süresi boyunca sabit olarak kullanılır. Bu IP adresinin yanında ağda bir DHCP sunucusu varsa, Raspberry Pi OS DHCP vasıtasıyla da bir IP yapılandırması tahsis eder. Bu durumu aşağıda görebilirsiniz.
1 2 3 |
pi@raspberry ~ $ hostname -I 192.168.0.110 192.168.0.168 |
hostname komutunun çıktısında Raspberry Pi’a 2 adet IP adresi atandığı görülmektedir. Bu adreslerden ilki olan 192.168.0.110 cmdline.txt dosyasına seçenek olarak verdiğimiz adres, diğeri (192.168.0.168) ise ağdaki DHCP sunucusu tarafından (modem) tahsis edilen IP adresidir. Bu örnekte hem elle IP adresi atama hem de otomatik IP atamasının yapılması söz konusudur. Ağdaki DHCP sunucusunun atadığı diğer yapılandırma bilgilerini görmek için (Ağ geçidi [Gateway] ve DNS sunucu) aşağıdaki komutları kullanabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pi@raspberry ~ $ $ route -v Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 202 0 0 eth0 192.168.0.0 * 255.255.255.0 U 202 0 0 eth0 route komutunun çıktısında ağ geçidinin (Gateway) tanımlı olduğu görülmektedir. pi@raspberry ~ $ $ cat /etc/resolv.conf # Generated by resolvconf nameserver 8.8.4.4 nameserver 8.8.8.8 nameserver 208.67.222.222 |
resolv.conf dosyasındaki geçerli DNS sunucuların adresleri yukarıda görülmektedir.
Fazladan DNS Sunucu Adresi Tanımlamak
DNS metinsel alan adlarının (site adreslerinin: örn.:www.tankado.com) sayısal adreslere dönüşümünü yapan servisi/bilgisayarı ifade eder. Örneğin Google.com hem bir alan adıdır hem de metinsel bir adrestir.
DNS’in görevini tam olarak anlamak için biraz eskilere İnternetin ilk zamanlarına (1970’li yıllar) gitmek yeterli olacaktır. İnternetin ilk doğduğu yıllarda, internet ağındaki hizmetlere ve web sitelerine ulaşmak için sayısal adresler kullanılıyordu (örn., 15, 8, 17, 100, 2345 vb.), insanlar bu adresleri tarayıcılarına yazarak sitelere erişim sağlıyorlardı. Yani, girecekleri internet sitelerinin sayısal adreslerini ya ezberlerinde tutuyorlardı ya da bir yerlere not alarak ulaşım sağlıyorlardır. İnternet ağı büyümeye başladıkça internette var olan bilgisayarların sayısı, dolayısıyla sayısal adreslerin sayısı da arttı. Bu artış o kadar fazlaydı ki artık sayısal adresler akılda tutulamayacak ya da bir yerlere not alınamayacak kadar fazla olmuştu.
Tam da bu noktada metinsel adres kullanılması fikri ortaya çıktı. Çünkü metinsel adresler (asitesi.com, bsitesi.com vb.) sayısal adreslere göre daha kolay hatırlanabilme özelliğine sahipti. Örneğin google.com gibi metinsel bir adresi, 216.58.208.110 gibi bir sayısal adrese göre akılda tutmak çok daha kolaydır. İşte tam da bu iş için metinsel adresleri sayısal adreslere dönüştüren DNS adı verilen hizmet kullanılmaya başlandı. Bu hizmet ile metinsel adresler sayısal adreslere veya tam tersine çevrilebiliyordu. DNS hizmetini kullandığımız sürece sayısal adresleri aklımızda tutmamıza gerek yoktur; çünkü DNS metinsel adresleri bizim için sayısal adreslere dönüştüren bir hizmet sağlar. Bu hizmeti sağlayan bilgisayarlara da DNS sunucu adı verilir. Tabi dilerseniz her zaman esas adres olan IP adreslerini, yani sayısal adresleri kullanmakta özgürsünüz. Örneğin web tarayıcınıza http://216.58.208.110 yazarak da Google’a girebilirsiniz.
DNS hizmetinin çalışma yapısı
Şimdi gelelim Raspberry Pi’ımızın DNS adresi tanımlamasını yapmaya. Yapacağımız işlem Raspberry Pi’a metinsel adreslerin, sayısal adreslerini sorup öğrenebileceği bir DNS sunucusunun adresini belirtmekten ibarettir.
Raspberry Pi, kullanacağı DNS sunucu adreslerini /etc/resolv.conf dosyasından da okur. Bu dosyanın içeriği çok basittir. resolv.conf (resolve: çözümle) dosyasını nano ile açıp içeriğini düzenleyelim:
1 |
pi@raspberry ~ $ sudo nano /etc/resolv.conf |
resolv.conf dosyanıza aşağıdaki gibi bazı popüler DNS sunucu adreslerini (Google ve Open DNS) kaydedebilirsiniz.
1 2 3 4 |
nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 208.67.220.220 nameserver 208.67.222.222 |
DNS sunucu adreslerini yukarıdakine benzer şekilde yazdıktan sonra (her satıra yalnızca bir adres) CTRL+X ile kaydedip çıkın. Ayarlar anında geçerli olacaktır. Dosyaya birden fazla DNS sunucu adresi yazmakta fayda vardır, sunuculardan biri servis dışı olursa sıradaki kullanılır.
[1]https://tr.wikipedia.org/wiki/SSH
[2]Predictable Network Interface Names – https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
[3]TCP/IP İnternetin Evrensel Dili, Murat YILDIRIMOĞLU
[4]Her Yönüyle İnternetin Altyapsı TCP/IP, Murat YILDIRIMOĞLU