Dâhili kablosuz ağ adaptörünü kullanarak Raspberry Pi’ı bir kablosuz erişim noktası haline getirebilirsiniz. Bu sayede etraftaki mobil (kablosuz) cihazlarınızdan hem Raspberry Pi’ın kendisine erişebilir hem de Raspberry Pi’ın kablolu ağ bağlantısını internete girmek için kullanabilirsiniz. Raspberry Pi’a kablosuz erişim noktası işlevini kazandırmak için, haricen bir program yüklemeye gerek yoktur. SystemD ile ilgili bölümde de açıklandığı üzere; güncel Linux dağıtımlarında (Raspberry Pi OS dâhil) initd mekanizması yerine SystemD mekanisması tercih edilmeye başlanmıştır. İleride initd tamamen ortadan kalkacak. Raspbian, halen (2019) kısmi olarak initd alt yapısını kullanmaya devam etmektedir. Bu başlıkta SystemD altyapısının iki önemli parçası olan systemd-networkd ve wpa_supplicant servislerini kullanarak Raspberry Pi’ımızı bir kablosuz erişim noktasına dönüştüreceğiz.
Haydi! SystemD’yi kullanarak Raspberry Pi’ı bir kablosuz erişm noktası olarak nasıl yapılandırabileceğimize bakalım. Yapılandırmamıza ait örnek ağ kurulumu aşağıdaki gibidir. Kablosuz arayüzü (wlan0) ile kablolu arayüzünün (eth0) farklı ağ adreslerine sahip olmasına dikkat ederek kendi ağ yapılandırmanızı da kullanabilirsiniz.
Örnek kablosuz ağ yapılandırması
Kurulumumuzda eth0 arabirimine sabit olarak 192.168.0.102 adresini tanımladık. Dilerseniz DHCP üzerinden de adres alınmasını sağlayabilirsiniz. Kablosuz istemcilere ise 10.2.2.1 adresli wlan0 arayüzü üzerinde çalışan DHCP ile 10.2.2.x adresleri atanmakta, NAT (Network Address Translation) ile eth0 üzerinden internete çıkmaktadırlar.
Raspberry Pi’ı bir kablosuz ağ erişim noktası olarak yapılandırmak için izlenecek adımlar genel olarak aşağıdaki gibidir:
- networking ve dhcpcd servisleri devre dışı bırakılarak bu görev systemd-networkd servisine devredilecek.
- wpa_supplicant servisi, wlan0 arayüzü üzerinde etkinleştirilerek bir kablosuz erişim noktası yapılandırılacak.
- systemd-networkd servisi kullanılarak, wlan0 arayüzü üzerinde DHCP sunucu hizmeti yapılandırılacak.
- systemd-networkd servisi kullanılarak, eth0 arayüzü üzerinde DHCP istemci hizmeti yapılandırılacak.
- wlan0 ile eth0 arayüzleri arasında NAT yapılandırılacak
- Raspberry Pi yeniden başlatılacak.
systemd-networkd servisinin etkinleştirilmesi
systemd-networkd servisini etkinleştirmeden önce eski ağ servislerimizi devre dışı barakalım:
1 2 3 |
pi@raspberrypi:~ $ sudo systemctl mask networking.service pi@raspberrypi:~ $ sudo systemctl mask dhcpcd.service |
Eski ağ yapılandırma dosyalarından birisi olan interface’i taşıyarak etkisizleştirelim ve yedekleyelim.
1 |
pi@raspberrypi:~ $ sudo mv /etc/network/interfaces /etc/network/interfaces~ |
resolv.conf dosyasını nano editörü ile açarak içerisine DNS sunucu adreslerini ekleyelim ve kaydedelim. Bu satır harici programların resolv.conf’u kullanmasına izin verecektir.
1 2 3 4 5 |
pi@raspberrypi:~ $ sudo nano /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 |
systemd-networkd ve systemd-resolved servislerini açılışta başlamak üzere yapılandıralım:
1 2 3 4 5 |
pi@raspberrypi:~ $ sudo systemctl enable systemd-networkd.service pi@raspberrypi:~ $ sudo systemctl enable systemd-resolved.service pi@raspberrypi:~ $ sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf |
wpa_supplicant’ı kablosuz erişim noktası olarak yapılandırmak
wpa_supplicant-wlan0.conf dosyasını nano editörü ile açarak aşağıdaki örnek yapılandırmayı yazın ve kaydedin. Country seçeneğine bulunduğunuz ülkenin kodunu, ssid seçeneğine kablosuz ağınızın yayın adını, psk seçeneğine de Wi-Fi parolası yazın. İstemciler, bu ssid ve parolayı kullanarak Raspberry Pi’ın kablosuz erişim noktasına bağlanacaklar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pi@raspberrypi:~ $ sudo nano /etc/wpa_supplicant/wpa_supplicant-wlan0.conf country=TR ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="Raspi" mode=2 key_mgmt=WPA-PSK psk="wifiparolasi" frequency=2412 } |
Ardından yapılandırma dosyasının erişim iznini aşağıdaki gibi ayarlayın ve servisi wlan0 üzerinde aktif edin.
1 2 3 4 5 |
pi@raspberrypi:~ $ sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf pi@raspberrypi:~ $ sudo systemctl disable wpa_supplicant.service pi@raspberrypi:~ $ sudo systemctl enable wpa_supplicant@wlan0.service |
wlan0 arayüzünün yapılandırılması
08-wlan0.network yapılandırma dosyasını nano editörü ile açarak aşağıdaki yapılandırmayı yazın ve kaydedin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pi@raspberrypi:~ $ sudo nano /etc/systemd/network/08-wlan0.network [Match] Name=wlan0 [Network] Address=10.2.2.1/24 DHCPServer=yes IPForward=yes [DHCPServer] DNS=8.8.8.8 8.8.4.4 PoolOffset=100 PoolSize=50 |
Address seçeneği, Name ile belirtilen arayüzün (wlan0) sahip olacağı sabit IP adresi ve ağ maskesini tanımlanmak için kullanılmıştır.
Yukarıdaki ayarlar sayesinde; talep eden kablosuz istemcilere wlan0 arayüzü üzerinden 10.2.2.100 – 10.2.2.149 adres aralığındaki boştaki bir tahsis edilecektir. PoolOffset dağıtımı yapılacak olan aralığın başlangıç adresini PoolSize ise adedini tanımlar. DNS seçeneği ile istemcilere alan adı – ip adresi dönüşümlerinde kullanacakları DNS sunucu bilgisayarının adresi bildirilmiştir.
Dağıtımı yapılacak IP adresi aralığını Private Addresses (Yerel Alan Ağı Adresleri) olarak kabul edilmiş olan aşağıdaki aralıkların birinden seçebilirsiniz.
Sıra | Başlangıç | Bitiş | Genişlik |
1 | 192.168.0.0 | 192.168.255.255 | 65,536 |
2 | 172.16.0.0 | 172.31.255.255 | 1,048,576 |
3 | 10.0.0.0 | 10.255.255.255 | 16,777,216 |
eth0 arayüzünün yapılandırılması
04-eth0.network yapılandırma dosyasını nano editörü ile açarak aşağıdaki yapılandırmayı yazın ve kaydedin.
1 2 3 4 5 6 7 8 9 10 11 |
pi@raspberrypi:~ $ sudo nano /etc/systemd/network/04-eth0.network [Match] Name=eth0 [Network] Address=192.168.0.102/24 Gateway=192.168.0.1 |
Bu yapılandırma ile Linux çekirdeğinin IP yönlendirme desteği açılmış, eth0 arayüzüne sabit olarak 192.168.0.102 adresi atanmıştır. Eğer kablolu ağınızda bir DHCP sunucu mevcutsa [Network] grubu içine DHCP=yes satırını yazabilirsiniz. Bu durumda eth0 arayüzüne otomatik olarak bir İP adresi atanacaktır.
wlan0 ile eth0 arasında NAT yapılandırmak
04-eth0.network dosyasını yapılandırırken Linux çekirdeğinin IP yönlendirmesini etkinleştirmiştik (IPForward). Şimdi de wpa_supplicant servisini kullanarak MASQUERADE işlemini yapacağız. Bu işlem bir ağ adresi dönüşümünü içerir ve iptables adındaki güvenlik duvarı tarafından yerine getirilir. Bu işlem, sistemden ayrılmak üzere olan paketin kaynak adresini, paketin sistemden ayrılacağı ağ arayüzü olan (-o) eth0’ın adresi ile değiştirir. Dolayısıyla cevap paketlerinin wlan0 arayüzünden önce eth0 arayüzüne ulaşması sağlanır. Böylece geri dönecek olan paketler eth0 üzerinden asıl hedefi olan wlan0’a ulaşabilir. Kısaca bu işleme IP maskeleme (MASQUERADE) ya da NAT adı verilir. Bu ayarın çalışabilmesi için önceki başlıkta yapıldığı gibi, çekirdeğin İP yönlendirmesinin etkinleştirilmesi gerekir.
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ sudo systemctl edit wpa_supplicant@wlan0.service [Service] ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ExecStopPost=/sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE |
yeniden başlatma ve sorun giderme
Artık Raspberry Pi’ı yeniden başlatarak ayarların geçerli olmasını sağlayabiliriz.
1 |
pi@raspberry:~ $ sudo systemctl reboot |
Eğer kablosuz ağ bağlantınızda sorun yaşıyorsanız aşağıdaki status çıktılarında soruna dair bir ipucu yer alabilir.
1 2 3 |
pi@raspberrypi:~ $ systemctl status systemd-networkd.service pi@raspberrypi:~ $ systemctl status wpa_supplicant@wlan0.service |
wpa_supplicant servisinin tüm çalışma zamanı (runtime) değerlerini görmek için aşağıdaki komut satırı yardımcı olabilir:
1 |
pi@raspberrypi:~ $ systemctl show wpa_supplicant@wlan0.service |
Aşağıdaki komutlar ise SystemD alt yapısının açılış mesajlarını ve devam etmekte olan çalışma zamanı mesajlarını görüntüler. Eğer bağlantı sorunu yaşıyorsanız bu çıktılarda anlamlı ipuçları bulabilirsiniz.
1 2 3 |
pi@raspberrypi:~ $ journalctl --boot –follow pi@raspberrypi:~ $ journalctl --boot --pager-end |
erişim noktasına bağlı istemcileri listelemek
Raspberry Pi ve wpa_supplicant servisini kullanarak yarattığımız kablosuz erişim noktasına bağlı olan istemcileri görmek için aşağıdaki komutu çalıştırabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@raspberry:~ $ sudo iw dev wlan0 station dump Station f4:60:e2:ba:de:ad (on wlan0) […] inactive time: 3000 ms signal: -55 [-55] dBm tx bitrate: 58.5 MBit/s rx bitrate: 6.0 MBit/s connected time: 25 seconds |
iw aracının çıktısında, bağlı istemcilerin MAC adresleri, download ve upload hızları ve bağlı kalma süreleri gibi çeşitli bilgiler görüntülenir. MAC adresleri listelenen istemcilerin IP adreslerini görmek için arp komutunu daha fazlasını görüntülemek için arp-scan aracından faydalanabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 |
pi@raspberry:~ $ sudo arp Address HWtype HWaddress Flags Mask Iface […] 10.2.2.117 ether f4:60:e2:ba:de:ad C wlan0 pi@raspberry:~ $ sudo apt install arp-scan -y pi@raspberry:~ $ sudo arp-scan -l |
Ayrıca tüm işletim sistemlerinde çalışabilen görsel bir program olan SoftPerfect Wifi Guard[1] ile de kablosuz erişim noktasına bağlı istemcileri listeleyebilirsiniz.
örnek bir kablosuz ağ yapılandırması
Raspberry Pi Kablosuz Erişim Noktasının Örnek Ağ Yapılandırması
IP yapılandırmasını yukarıdaki şekilde görebileceğiniz bu uygulama hakkında bazı noktalara ışık tutmak istiyorum. Öncelikle bu uygulama sadece kablosuz cihazların internete bağlanması için yapılandırılmıştır. Kablosuz istemciler farklı ağda yer alan (ağ adresi farklı olan) ve kablolu bağlantıya sahip cihazlara erişemezler. Çünkü kablosuz ağlar 10.2.2.0 numaralı ağda yer alırken diğer tüm cihazlar 10.1.1.0 adresli ağda yer almaktadırlar. Dolayısıyla 10.2.2.0 ağından 10.1.1.x’e ulaşmaya çalışan bir cihaz bağlantı kuramayacaktır. Bu özellik, kablosuz istemciler ile Raspberry Pi’ın diğer tarafındaki (eth0 ucundaki) cihazlardan yalıtmak için iyidir; gereksiz yayın paketlerinin (broadcast) ağlar arasında geçişmesi en baştan engellenmiş olur. Bu durum ağ trafik başarımını olumlu etkiler ve olası yapılandırma sorunlarını baştan önler. Diğer avantaj ise güvenlik kaygılarından ileri gelir. Kablosuz ağ parolasını bilen birisinin yerel ağa tam erişimi engellenmiş olur. Bu olası güvenlik zafiyetlerinin suistimal edilememesi için bir tedbir olarak düşünülebilir.
Kablosuz istemcilerin kablolu yerel ağa erişim sağlamasını isterseniz; tüm yapılandırmayı aynı ağ adresini kullanacak şekilde değiştirebilirsiniz. Bunun için; örneğin 10.1.1.0 ağını kullanmak istediğinizi varsayarsak, wlan0 arayüzüne 10.1.1.2 IP adresini, eth0 arayüzüne de 10.1.1.1 IP adresini tanımlayabilirsiniz. Bu durumda DHCP sunucusunun tahsisini yapacağı IP adresi aralığını da 10.1.1.x olacak şekilde ayarlamanız gerekir. Örneğin 10.1.1.100 ile 10.1.1.200 arasını otomatik dağıtabilir. Tabii ki bu durumda aynı ağda (10.1.1.0) IP dağıtan bir başka DHCP sunucusunun olmamasına dikkat etmelisiniz. Genellikle router/modemler varsayılan olarak DHCP üzerinden adres dağıtırlar. Router/modemin panelinden bu özelliği devre dışı bırakmalısınız.
Alt ağ maskesinin kısa gösterimi
10.1.1.1/24 gibi IP adreslerinin sağında yer alan, taksim (/) sembolü ile ayrılan 24 rakamlarının ne anlama geldiğini bilmiyor olabilirsiniz. Bu gösterim alt ağ maskesinin kısa gösterimidir. Örneğin 24 sayısı; 32 bitlik ağ maskesinin en değerli 24 bitinin 1 olduğu anlamına gelir. Yani, ikilik sayı sisteminde ifade edersek 11111111.11111111.1111111.00000000, bunu onluk sayı sistemine çevirirsek de alt ağ maskesinin 255.255.255.0 olduğu anlamına gelir. Kısaca 10.1.1.1/24 ifadesi; sözü edilen ağ arabiriminin IP adresinin 10.1.1.1, ağ adresinin 10.1.1.0 ve alt ağ maskesinin de 255.255.255.0 olduğu söyler. Gördüğünüz gibi çok tercih edilen bu ifade şekli hem kısa olması hem de birçok anlam ifade etmesi açısından kullanışlıdır.
[1] SoftPerfect Wifi Guard web sitesi – https://www.softperfect.com/products/wifiguard/