SystemD ile Raspberry Pi’ı Bir Kablosuz Ağ Erişim Noktasına Dönüştürmek

Dahili 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ı İnternete 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 (Raspbian dahil) 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:

1.    networking ve dhcpcd servisleri devre dışı bırakılarak bu görev systemd-networkd servisine devredilecek.

2.    wpa_supplicant servisi, wlan0 arayüzü üzerinde etkinleştirilerek bir kablosuz erişim noktası yapılandırılacak.

3.    systemd-networkd servisi kullanılarak, wlan0 arayüzü üzerinde DHCP sunucu hizmeti yapılandırılacak.

4.    systemd-networkd servisi kullanılarak, eth0 arayüzü üzerinde DHCP istemci hizmeti yapılandırılacak.

5.    wlan0 ile eth0 arayüzleri arasında NAT yapılandırılacak

6.    Raspberry Pi yeniden başlatılacak.

1.3.1           systemd-networkd servisinin etkinleştirilmesi

systemdnetworkd servisini etkinleştirmeden önce eski ağ servislerimizi devre dışı barakalım:

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.

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.

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:

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

1.3.2           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 WiFi parolası yazın. İstemciler, bu ssid ve parolayı kullanarak Raspberry Pi’ın kablosuz erişim noktasına bağlanacaklar.

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.

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 [email protected]

1.3.3           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.

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

Özel (private) Sınıf IP Adres  Aralıkları

1.3.4           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.

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.

1.3.5           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.

pi@raspberrypi:~ $ sudo systemctl edit [email protected]

[Service]

ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

ExecStopPost=/sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

1.3.6           yeniden başlatma ve sorun giderme

Artık Raspberry Pi’ı yeniden başlatarak ayarların geçerli olmasını sağlayabiliriz.

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.

pi@raspberrypi:~ $ systemctl status systemd-networkd.service

pi@raspberrypi:~ $ systemctl status [email protected]

wpa_supplicant servisinin tüm çalışma zamanı (runtime) değerlerini görmek için aşağıdaki komut satırı yardımcı olabilir:

pi@raspberrypi:~ $ systemctl show [email protected]

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.

pi@raspberrypi:~ $ journalctl –boot –follow

pi@raspberrypi:~ $ journalctl –boot –pager-end

1.3.7           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:

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.

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-get 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.

1.3.8           ö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 iler gelir. Kablosuz ağ parolasını bilen birisinin yerel ağa tam erişimi engellenmiş olur. Bu olası güvenlik zafiyetlerinin suiistimal 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. Tabiki bu durumda aynı ağda (10.1.1.0) IP dağıtan bir başka DHCP sunucusunun olmamasına dikkat etmelisiniz. Genellikle router/modem’ler 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österin 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.

KULLANIM SARTLARI

Bu web sitesinin içeriginin tüm haklari saklidir. Kitabin/site içeriginin hiçbir bölümü, yazarinin yazili izni olmaksizin tekrar üretilemez, bir erisim sisteminde tutulamaz, herhangi bir biçimde elektronik, mekanik, fotokopi, ses kayit ya da diger yollarla iletilemez. Ancak istisna olarak; ticari olmayan amaçlar için yazara önceden bilgi vermek ve raspberrypikitabi.com adresini kaynak göstermek kaydiyla 10 sayfaya kadar kullanilabilir. Kitapta kullanilan logolar, firmalarin tescilli logolaridir. Raspberry Pi, Raspberry Pi Vakfi'nin ticari markasidir.



BILGILENDIRME

Bu kitapta Raspberry Pi, çesitli çevre birimleri ile düsük voltaj elektronik bilesenlerin bir arada kullanildigi uygulamalar yer almaktadir. Uygulamalarin tamami Raspberry Pi'in üzerinde kosan Linux çekirdegi ve açik kaynak kod özgür yazilimlar kullanilarak gerçeklestirilmistir. Uygulamalar gerçeklestirilirken ortaya çikabilecek elektriksel sorunlar veya kullanici hatalari nedeniyle cihazlar zarar görebilir veya veri kaybi yasanabilir. Ayrica, kitapta anlatilan konularin uygulanmasi sonucu ortaya çikabilecek her türlü lisans ihlali/kanuni ihlal ve zararin sorumlulugu uygulayan kisiye aittir. Olusabilecek herhangi bir zarardan yazar sorumlu tutulamaz.

Leave a comment

Your email address will not be published. Required fields are marked *