Android’le Laptop Hotspot’undan İnternete Bağlanmak

En baştan açıklamayı normal yapayım da sonra millet gelip bana “ben telefonumdan hotspot açıp bilgisayardan bağlanabiliyorum” demesin.
Hayır, buradaki durum bilgisayardan hotspot açıp tablet ile internete bağlanabilmek. Bu açıklamayı kimse anlamak istemediği için dün geceden beri çıldırmak üzereydim. Tamam, biliyorum ki ilk olay daha çok soruluyor ve herkes öyle kullanmak istiyor; ama soracağım soru o olsaydı milyon defa sorulmuş ve cevaplanmış yerlerde bulurdum cevabımı… hey neyse.

Elimdeki tabletim donanım olarak muhteşem bir şey olmadığının farkındayım; ama Barışcan isimli arkadaşın kendi 10″ Asus tableti ile benim kendi dizüstü bilgisayarımın linux (openSUSE 12.2) kısmından hotspot açtığımda internete bağlanabildiği zamanı hatırlıyorum. Şimdi memlekete gelmişken ve ortalıkta Wi-Fi kaynağı yokken, aynı şeyi kendim için de yapmak istedim; ama ufak bir sorun çıktı.

Tablet hotspot ile açtığım Wireless yayınını görüyor; ama bağlanmayı reddediyordu.

Hotspot’ı dizüstü bilgisayar ile açıyorum. Yayına tabletim ile bağlanmayı deniyorum. Olmuyor.
Olayı biraz araştırarak benim açtığım hotspot’ın Ad-Hoc modunda olduğunu; ama Android cihazların birçoğunun sadece infrastructure modunu desteklediğini gördüm. Muhtemelen benim elimdeki cihaz da bu konumdaydı. Ben de hemen bu durumu aşabilmek mümkün müdür diye araştırmalara girdim. Ne de olsa dizüstü bilgisayarımın donanımı yeni sayılırdı ve desteklediği birçok mod vardı.

Derken Hostapd‘yi keşfettim.

Ufak oynamalardan sonra elimdeki cihaz Laptop’tan yapılan yayına bağlanmaya çabalamayı kabul etti. Ama IP adresi almayı beceremiyordu bir türlü. Bunun için de DHCP sunucusu kurmam ve ayarlamam gerekiyordu ki, dizüstü bilgisayarım tamamen bir Access Point gibi çalışabilsin. Kolları sıvadık.

Yapılması gereken ilk şey, hostapd için bir konfigürasyon dosyası yaratmak ve bunu çalıştırmak. En basit haliyle güvenliksiz bir test yayını için hostapd.conf:
[shell]interface=wlan0
#bridge=br0
driver=nl80211
hw_mode=g
channel=1
ssid=Tanshaydar[/shell]

Tabi burada güvenlik için WPA2, güvenlik şifresi, farklı driver kullanımı gibi olaylar da mevcut; bu ayar dosyası en basit haliydi. interface=wlan0’da, ifconfig -a komutunu kullanarak kendi interface’inizi görebilirsiniz kablosuz bağlantı için. Genelde kablolu için eth0 kablosuz için de wlan0 çıkar, özel bir durum yoksa yani.

Sonrasında dhcpd.conf ile DHCP ayarlarını girmek gerekiyor:
[shell]option domain-name-servers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none; ddns-updates off;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.229;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
}[/shell]

Burada domain-name-servers değişkenini kendinize göre ayarlamanız en iyisi. Benim dizüstüme gelen ayarlarda eth0 arayüzündeki internet DNS’ini o şekilde gösteriyor ve ben ona göre girdim. Geri kalan ayarlarda pek bir değişiklik yapmaya gerek yok, zaten Hotspot mantığında da öyle gidiyor.

En büyük sıkıntı bu ayarları çalıştırabileceğiniz bir script yazabilmek.

[bash]#!/bin/sh
# Script to start/stop a hostapd-based access point
#
# Symbols for needed programs

IPTABLES=/usr/sbin/iptables
IFCONFIG=/sbin/ifconfig
DHCPD=/usr/sbin/dhcpd
HOSTAPD=/usr/sbin/hostapd

# Symbols for internal and external interfaces

NET_INT=wlan0
NET_EXT=eth0

# IP address for the AP

INT_ADDR=192.168.0.1

case "$1" in
start)
echo "Starting AP mode for $NET_INT at address $INT_ADDR"
# Disable packet forwarding
echo 0 > /proc/sys/net/ipv4/ip_forward
# Stop any existing hostapd and dhcpd daemons
killproc hostapd
killproc dhcpd
#Set up forwarding
$IPTABLES -t nat -A POSTROUTING -o $NET_EXT -j MASQUERADE
$IPTABLES -A FORWARD -i $NET_EXT -o $NET_INT -m state \
–state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $NET_INT -o $NET_EXT -j ACCEPT
# Enable packet forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Get the internal interface in the right state
$IFCONFIG $NET_INT down
$IFCONFIG $NET_INT up
$IFCONFIG $NET_INT $INT_ADDR
# dhcpd needs to have a leases file available – create it if needed
if [ ! -f /var/lib/dhcp/db/dhcpd.leases ]; then
touch /var/lib/dhcp/db/dhcpd.leases
fi
# Bring up the DHCP server
$DHCPD -cf /etc/dhcpd.conf $NET_INT
# Bring up hostapd
$HOSTAPD -B /etc/hostapd.conf
;;
stop)
echo "Stopping AP mode on $NET_INT"
# Stop hostapd and dhcpd daemons
killproc hostapd
killproc dhcpd
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac[/bash]

-B argümanı programların arka planda çalışarak komut satırını ve arayüzleri temiz tutmanızı, kazayla kapatmanızı önlemeyi sağlıyor. Script’i çalıştırırken start komutu ile başlatır, stop komutu ile durdurursunuz.

Tabi hostpad.conf ve dhcpd.conf dosyalarınızı etc klasörü içinde tutmuyorsanız, tutuğunuz klasörlerin yollarını da doğru girmeniz gerek. Sonra garibim script aradım taradım bulamadım diye söylenmesin.

Arayüzlerin isimlerini doğru girdiğinize emin olun, ben baya sıkıntı çektim. Yanlış girilen arayüz isimlerinden ve IP’lerden dolayı tablet ip adresi aldığını iddia ettiği halde almıyor, veya alsa bile internete erişemiyor.

En sonunda eth0, wlan0 gibi doğru arayüzleri ve kablolu bağlantıma göre doğru IP’leri girdikten sonra tabletim ağa bağlandı ve internet erişimini sağladı.

Bu yazıyı tabletten filan yazmadım tabi o kadar manyak değilim.


2 Responses

Bir yorum yazın


  • sedat on

    Hocam bu dosyaları nereye, nasıl kaydediyoruz? ilk 3 dosya .conf dosyası anladım ama 3. komut dizini nereye? biraz daha açıklaya bilir misin? 🙁


    • Tanshaydar on

      Merhaba;
      Ben linux kullandığım için bu dosyaların atılacağı yerleri o şekilde verdim. Linux’ta bash script komutlarını atacağınız yer pek farketmez, home klasörü altında dosyaadi.sh şeklide bir dosyaya yazıp kaydederseniz komut satırından çalıştırabilirsiniz.


Leave a Reply