3 Şubat 2014 Pazartesi

USB Wi-Fi bağdaştırıcısını akıllı telefonlar için erişim noktası yapmak

Çok sık görülen bir durum olmasa da bazen internete bağlı iş bilgisayarımızı ya da ev bilgisayarımızı ufak bir Wi-Fi bağdaştırıcı (adapter) yardımı ile internete bağlamak isteyebiliriz. Bunu evdeki eski bir bilgisayar ya da cüzi bir ücrete aldığımız Rapberry Pi gibi bir cihazla yapabiliriz. Windows'ta benzer işi yapan ufak soft-access point yazılımları olduğunu biliyorum. Fakat Linux bu konuda daha profesyonel çözümler sunuyor. Zaten evlerimizde bulunan ADSL cihazları da bu tarz bir metodla internet paylaşımı yapıyor.

Kişisel olarak Linux Mint kullandığımdan bu dağıtım üzerinde yaptıklarımı anlatacağım. Muhtemelen diğer Debian tabanlı dağıtımların hepsinde bu durum yaklaşık olarak aynı olacaktır. Sanırım diğer dağıtımlarda da ufak tefek farklılıklar ile kullanılabilir.

NetworkManager'ın iptal edilmesi

Uzun bir süredir Linux dağıtımlarında internet bağlantı işlerini NetworkManager adlı servis hallediyor. Bu servis, geleneksel Linux yapılandırma dosyalarını kullanmıyor. Bu nedenle iptal etmemiz daha kararlı bir çözüm elde etmemizi sağlayacaktır. Yalnızca konsol tabanlı bir dağıtım kullanıyorsak muhtemelen NetworkManager zaten yüklü olarak gelmeyecektir. NetworkManager'ın güzel bir özelliği de bizim de bu kurulumda ihtiyaç duyacağımız dnsmasq servisinin kullanımıdır. NetworkManager bu sayede DNS önbelleği de sağlamış olmaktadır.

NetworkManager'ı iptal etmek için /etc/init içerisine /etc/init/network-manager.override adlı bir dosya eklemeliyiz. Daha sonra dosya içeriğine "manual" yazılırsa bir sonraki açılışta NetworkManager otomatik şekilde başlamayacaktır.

Genel Ağ yapılandırması

Geleneksel bir ağ yapılandırması Linux'ta /etc/network/interfaces adlı dosya üzerinden gerçekleşir. Tek ağ kartı olan bir sistemde bu dosya içeriğinin şu şekilde olması beklenir.


Gerekli paketlerin kurulumu

Bu iş için temel iki pakete ihtiyacımız var. hostapd ve dnsmasq. hostapd paketi access point sunucusu olarak hizmet görür. dnsmasq ise bağlanan istemciler için otomatik IP verme (DHCP) işlemini yapacaktır.

sudo apt-get install hostapd dnsmasq

Erişim noktası yapılandırması

/etc/hostapd.conf adlı bir dosya oluşturarak içeriğini aşağıdaki şekilde düzenliyorum.


DHCP sunucu yapılandırması

/etc/dnsmasq.d/ dizini içerisinde hotspot-dhcp adlı bir dosya oluşturarak aşağıdakileri yazabiliriz. Bu yapılandırma ile wi-fi ağ arabirimini ve otomatik ip havuzu aralığını belirliyoruz.


Çalıştırma

Yukarıdaki ayarlamalar ile bir erişim noktası sunusu ve bir otomatik IP sunucusuna sahip olduk. Kabaca tabletimiz ya da akıllı telefonumuz, erişim noktasından bağlantı talep edecektir. Talep esnasında sağlanan kullanıcı ve parola doğru ise erişim noktası sunucusu bu erişime izin verir. Artık fiziksel bağlantı kurulmuştur. Daha sonra bağlı cihazımız DHCP yayınını farkeder ve DHCP sunucusuna bağlantı talebinde bulunur. DHCP sunucusu bağlantı isteğini kabul ederek bağlı cihaza bir IP adresi atar. Bundan sonra yapılması gereken iki ağ arasında (Wi-Fi ve internete çıkılan yerel ağ) bir köprü kurulmasıdır. Bunu birçok şekilde yapabiliriz. En çok bilinen ikisi ise şöyledir.
  • İki ağ arasında köprü oluşturma
  • İki ağ arasında bir yönlendirici oluşturma

İki ağ arasında bir köprü oluşturma, OSI Katman 2 seviyesinde bir yaklaşımdır. Doğrudan iki ağı birbirine bağlar. Bu da wi-fi ağındaki IP paketlerinin doğrudan yerel ağımızda dolaşması manasına gelir ki birçok durumda sıkıntı çıkarabilecek bir yaklaşımdır. Biz daha az sıkıntılı ve her zaman işe yarayacak metodu tercih edelim. Bir yönlendirici oluşturalım. Yönlendirici ile kablosuz ağdan gelen IP paketleri, NAT kuralına göre makinemizin yerel ağ IP adresine çevrilir. Geri gelen paketler ise aynı şekilde tercüme edilir. Kısaca NAT'ın yaptığı şey budur. Neyseki Linux bu işlemi tek bir iptables kuralı ile yapar.

Nihayi olarak bu betik çalıştırıldığında teorik olarak bir akıllı telefon ya da tablet üzerinden kolayca internete bağlanabiliriz.