İnternetten Bilgisayarınızı Açın – WakeOnLan

10 Ağustos 2008

Bilgisayarımı uzaktan açabilmek benim için hep bir ihtiyaç olmuştur. Özellikle ofiste çalışırken acilen evdeki bilgisayardan almam gereken bazı dosyalar olabiliyor. Bu duruma en az 1-2 ayda bir düşmüşümdür. Ofis ile ev arası 17 km olunca “ah şu işi yapmamı sağlayacak birşeyler olsa” derdim. Bazen evde bilgisayar bilgisi sıfır olan Mert’in bakıcısı veya annem olabiliyor. Onlara bilgisayarın monitor olmadığını, üzerinde iki düğmesi olan kara kutuyu ve doğru düğmeleri tarif edene kadar bir ömür geçiyordu.

Yıllardır BIOS ayarlarında Ağ Üzerinden Uyan (ing. Wake on Lan) ayarını görmekteydim ama hiç kullanmak nasip olmamıştı. İlk çıktığı zamanlar da bu teknolojiden yararlanmamızı sağlayacak araçlar da pek yoktu. Bu teknolojiden yararlanmanın artık vakti gelmiştir diye düşündüm ve konuyu araştırıp uygulamaya koydum.

WoL özelliğinin çalışma mantığı şu şekilde. Öncelikle BIOS’tan WoL etkinleştirme ayarı yapılıyor. Bu ayar bilgisayar kapalıyken ethernet kartının elektrikle beslenip kablo üzerindeki sinyalleri işleyebilir olmasını sağlıyor. Ancak maalesef bu yeterli değil. Öncelikle bir işletim sistemi tarafından kapatılmış olması gerekiyor. Çünkü kablo üzerindeki sinyaller ethernet driverının ethernet belleğinde bırakmış olduğu bir miktar kod ile sistemi uyarabiliyor. Elektrik kesintisi sonrasında ethernet kartında bu kod yer almadığı için WoL özelliği BIOS’ta açık ve etkin olsa bile açılmayacaktır. Bilgisayarı bir MS-Windows işletim sistemi kapattıysa WoL %99 ihtimalle çalışacaktır. Bir Linux kapattıysa WoL %1 ihtimalle çalışacaktır. Bu duruma üzülmenize gerek yok. Linux’te ethernet üzerinde bu kodu bırakması için bir ayar yapmak gerekiyor. Tek sıkıntı bu. Bu ayardan sonra %99 ihtimalle Linux üzerinde de WoL çalışacaktır. Hatta Linux’te bu ayarla birlikte o kadar güzel seçenekler var ki Windows’un otomatik sağladığı WoL özelliği halt etmiş diyebilirim (donanımın da bu özellikleri destekliyor olması gerekiyor).

Linux’te WoL Ayarı:

root@sistem# ethtool -s eth0 wol g

Yukarıdaki komutun işletiminden sonra Linux kapanırken ethernet kartı üzerinde WoL kodunu bırakacaktır. Bu Windows’un bıraktığı kod ile uyumlu olandır. Diğer güvenlik ve güvensizlik seçenekleri için ethtool aracının kılavuz sayfalarını (ing. manual page) okumanızı öneririm. Yukarıdaki komut bu ayarı kalıcı yapmamaktadır. Kalıcı olması isin sistem açılış veya kapanış sürecinde işletilen betiklere dahil edilmesi gerekmektedir. Hem Linux hem Windows için geçerli olan birşey var ki bilgisayarınız bu şekilde kapalıyken elektrikler kesilir ve gelirse ethernet kartındaki WoL kodu yok olmuş olacak ve ne kadar uğraşırsanız uğraşın açılmayacaktır. Dolayısı ile bilgisayarınız kapalı da olsa KGK (ing. UPS) ile beslenmeye devam etmesi önerilir. Son bir hatırlatma olarak da ethernet kartınız PCI genişleme yuvasına takılı ise ayrıca bir WoL kablosunun bulunması ve anakarttaki ilgili pinlere bağlatısının yapılmış olması gerekmektedir. Ethernet kartı anakarta bütünleşik ise WoL kablolaması için özel birşey yapmanız gerekmeyecek.

Bu teknoloji nasıl çalışyor? Öncelikle sihirli paket (ing. magic packet) hazırlamalı ve bu sihirli paketi ağ üzerindeki kapalı olan ancak WoL şartlarını sağlayan bilgisayarınıza ulaştırmalısınız. Sihirli paket aslında 6 byte’lik 0xFFFFFFFFFFFF değerinden sonra ilgili ethernet kartının MAC adresini 16 kez peş peşe içeren özel bir UDP paketidir. Ancak uyandırılacak olan sistem kapalı olduğu için UDP paketinin hedefine ulaşması amacıyla hedef MAC adresi değerinde (ing. destination mac address) tüm ağa yayılması için FF:FF:FF:FF:FF:FF yayın adresini (ing. broadcast address) kullanılabilir. Tüm bunların normal ağ veya tcp/ip programları ile yapılması mümkün değil (switch’in arp çağrılarına kapalı olduğu için cevap vermeyecektir, dolayısı ile nerede olduğunu asla bilemezsiniz, bu nedenle normal socket programlama ile WoL uygulaması yapılamaz). Dolayısı ile sadece bu amaca yönelik packet injection kütüphaneleri kullanılarak geliştirilmiş uygulamalar kullanılır. WoL şartlarını sağlayan kapalı bilgisayarların ethernet kartına bu sihirli paket ulaştığında, kendi MAC adresini peş peşe 16 kez görünce anakarta sanki düğmeye basılmış gibi açılma sinyali gönderilmekte ve bilgisayar açılmaktadır.

Linux ortamında etherwake veya wakeonlan araçları kullanılabilir. Packet injection işlemi yapılacağı için root kullanıcısı hakları ile kullanılmasını öneririm.

root@sistem# etherwake 00:13:23:DB:BD:FA

Yukarıdaki komutu çalıştırdığımızda ağımızda yer alan ve WoL şartlarını sağlayan 00:13:23:DB:BD:FA MAC adresli bilgisayar açılacaktır.

Buraya kadar herşey güzel. Peki ya ofisten evdeki bilgisayarı internet üzerinden nasıl açarız? Eğer evinizde ulaşabileceğiniz 7/24 açık bir sunucunuz varsa onun üzerinden yapabilirsiniz. Ya o da yoksa? Bu durumda şansınızın yaver gitmesi için duğa etmelisiniz. Çünkü geri kalan tamamen ADSL (veya diğer türlerdeki) router/firewall’unuzun yeteneğidir. Bazı ADSL router’larının PAT (ing. Port Address Translation) ayarlarında dış UDP port 9, hedef iç UDP port 9, hedef iç IP 192.168.0.255 gibi yayın adresi (ing. broadcast) olan iç adres belirtilebiliyor. Bu durumda dış IP’nizin 9 numaralı UDP portune gelecek olan her paket içteki tüm ağınıza yayılmış olacak. Sade ve sadece sihirli paketin içeriği kendi mac adresi ile eşleşen bilgisayar açılacaktır.

Peki ya ADSL router’ınız yayın adresini yazmanıza izin vermiyorsa? Benim durumum da aynı bu şekilde. Yerli Airties firmamızın arayüzünde Türkçe çeviri yaparak fason olarak piyasamıza soktuğu, Çinli Arcadyan’ın üretiği ve dünya piyasasında Philips, SNA, Ozenda gibi değişik markalarda da görebildiğimiz Airties rt210’un ilk sürümünü kullanmaktayım. Çok güzel, sağlam, ısıya dayanıklı, mükemmel bir ürün, öyle olmasa Philips ve SNA tercih etmezlerdi. Bu alet NAT ayarlarındaki Virtual Server bölümünde iç hedef IP adresi olarak yayın adresi girilmesine kesinlikle izin vermiyor. Sizin durumunuz da bu şekildeyse WoL’ı internet üzerinden çalıştırmak için küçük bir şansınız daha olabilir. Ben o küçük şansa sahip olanlardan birisiyim ve Airties rt210’da bu iş oluyor. Hemen ayrıntılara girelim.

Bir komut isteminden Airties’a telnet ile bağlantı kuruyorsunuz. Windows kullanıcıları Komut İstemini kullanabilirler, ben Linux üzerinden örnekleyeceğim.

=================================

kullanici@sistem$ telnet 192.168.2.1
User Name : root
User Password : **********
Telnet Manager Version 0.44
Type ? for Command-Sensitive Help, TAB match command
ROOT :> dhcp fixed add 00:13:23:DB:BD:FA 192.168.2.100
ROOT :> show dhcp

(1) DHCP Server Parameters
    Service(TAB)       : Enable
    Interface(TAB)     : LAN 1
    Default Gateway    : 192.168.2.1
    Subnet Mask        : 255.255.255.0
    DHCP Start IP      : 192.168.2.10
    DHCP IP Count      : 155
    Leased Time (sec.) : 1209600
    Name Server IP     : 192.168.2.1

(2) List Fixed Host Entries
  No   Ethernet  Address     IP  Address
 ---- ------------------- -----------------
   1  00:13:23:DB:BD:FA    192.168.2.100

(3) DHCP Client Parameters
    Client Functionality      : Disable
    Activate interface number : ATM 1

ROOT :> write

Do you want to write the configuration(y/n) ? : y
Write configuration successful !!!

Do you want to restart the system to activate new configuration(y/n) ? : n

Cancel by user !!!
ROOT :> exit

CONF :> exit

USER :> exit

Do you want to disconnect(y/n) ?  : y

 Disconnect by user.....Connection closed by foreign host.
kullanici@sistem$

=================================

Yukarıdaki telnet oturumunda açıkça görülmektedir ki DHCP ayarlarında bir MAC adresi için static IP rezervasyonu yaptım. Web arayüzünde olmayan bunun gibi ilave özelliklere de telnet komut isteminden ulaşabilirsiniz. Hatta Philips ya da SNA’in firmware’larını yazarsanız QoS / VLAN gibi ayarlarınız da olacak. 😉 Airties ile uğraşmayı bırakıp konumuza geri dönelim.

Bu ayardan sonra Airties’ın web tabanlı arayüzünün NAT -> Virtual Server ayarlarında dışa geken UDP 9 portu paketlerini içteki 192.168.2.100’ün UDP 9’una yönlendir ayarı yapıp kaydetmek gerekiyor. Bu aşamadan sonra ofisinizden evinizin dış IP’sini aşağıdaki gibi hedef göstererek evinizdeki WoL şartlarını sağlayan kapalı bilgisayarınızı uyandırabilirsiniz.

kullanici@sistem$ wakeonlan -i 81.214.22.200 -p 9 00:13:23:DB:BD:FA
Sending magic packet to 81.214.22.200:9 with 00:13:23:DB:BD:FA
kullanici@sistem$

Bu yöntemle aylarca yaşadım. Ta ki evimde bir Linux sunucum oluncaya kadar. İhtiyacı olanların denemesini öneririm. Son bir hatırlatma, şansınız yaver gitmezse ve ADSL router’ınız Airties gibi davranmıyorsa tüm bu çabalarınız boşa olabilir.

Etiketler: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

  1. “İnternetten Bilgisayarınızı Açın – WakeOnLan” için 6 Yorum

  2. aLi diyor ki:
    09 Kasım 2008 tarihinde.

    Cok guzel bi anlatim ve cok guzel bir konu. Ayrica buldugunuz cozumde gercekten yaratici. Bu arada kullandigim all in one router’da wol ozelligi geliyor.

  3. Sezai YILMAZ diyor ki:
    09 Kasım 2008 tarihinde.

    Güzel yorum için teşekkür ederim. Demek ki donanım üreticileri bu ihtiyacı zamanla fark etmişler, bu açığı kapatan ve pazarlama açısından daha güçlü olmalarını sağlayacak olan bu tür katma değer etkili özellikleri ürünlerinde gömülü olarak sunmaya başlamışlar.

  4. cankut diyor ki:
    14 Haziran 2009 tarihinde.

    Merhaba,

    Gerçekten çok güzel bir yazı, elinize sağlık.

    Anlatılanları heyecanla Airties RT-211 modemimde denerken “dhcp” komutunun geçersiz olduğunu gördüm.

    Yılmadım, benzer komutları kurcaladım, bir şey çıkmadı. Web arayüzünden local ip’mi statik ip olarak ekledim o da işe yaramadı.

    Neticede çözüme ulaşamadım. LAN’da sorunsuz çalışıyor fakat internet üzerinden yollanan “magic packet” ler sanırım gitmesi gereken yere ulaşmıyor.

    Çözüm konusunda sizin başka bir fikriniz var mı acaba?

  5. Sezai YILMAZ diyor ki:
    15 Haziran 2009 tarihinde.

    Maalesef bаşka bir fikir gelmiyor aklıma. Tamamen arada kalan cihaz olan RT-211’in becerileri ile sınırlı durumdasınız.

  6. Akay ERGEN diyor ki:
    05 Ekim 2009 tarihinde.

    Selamlar,

    RT-210 ile yazılanı aynen yaptım ancak sonuç alamadım. Hatta SMC firmware update ile denedim yine fayda yok.

    PC kapandıktan kısa bir süre sonra WOL yaparsam açılıyor, ancak biraz beklersem açılmıyor. Sanırım ARP listesinden MAC adresi ve IP belli bir süre sonra silinince paket yerine ulaşmıyor. kısa bir süre sonra açılmasının açıklaması bu diye düşünüyorum. Farklı bir yerde Statik ARP olarak MAC adresi ve IP girildiği gibi yöntemler okumuştum. 210 da Statik ARP giriş yapacak yer veya ARP listesini bulamadım.

    DHCP IP rezervasyonu dışında yapmış olduğunuz artı bir konfigürasyon var mı ?

  7. Sezai YILMAZ diyor ki:
    08 Ekim 2009 tarihinde.

    Üzerinden çok uzun zaman geçti. Ancak başka bir konfigürasyon yaptığımı zannetmiyorum.

Yorum Yapın