Bir Linux makinesi, tek bir fiziksel WLAN arabirimini kullanarak aynı anda hem kablosuz istemci hem de erişim noktası olarak işlev görebilir mi?


12

Yalnızca 1 fiziksel WLAN arabirimim varsa, varolan bir erişim noktasının istemcisi olabileceği ve aynı zamanda diğer istemciler için bir erişim noktası görevi görebileceği bazı hackery'ler var mı?

Mevcut bir 802.11g ADSL yönlendiricim var ve 802.11n'ye sahip bir HTPC inşa edeceğim. Dizüstü bilgisayarımda da 802.11n var, ancak şu anda sadece 54Mbps'de bağlanıyor çünkü AP destekliyor. HTPC'nin ADSL yönlendiricimin bir istemcisi olmasını istiyorum, ancak dizüstü bilgisayarımın HTPC'nin bir istemcisi olmasını istiyorum, bu nedenle dosyaları kopyalamak daha hızlı olacaktır.

Mümkün?

Düzenleme: Açıkçası HTPC'yi Ethernet kullanarak ADSL yönlendiriciye bağlayabilir ve yönlendiricideki wifi'yi devre dışı bırakabilirim, ancak bu seçeneği görmezden gelelim. :-)

Yanıtlar:


9

Bunu daha önce şahsen yapmadım, ama işte doğru yönde ilerlemeniz için bazı bilgiler.

Protokol açısından bakıldığında, hem AP hem de istemci STA olarak çalışan tek bir radyonun olması kesinlikle mümkündür. Oluşturduğunuz AP ve istemci olarak katıldığınız AP aynı kanaldaysa en iyi sonucu verir (veya belki de neredeyse zorunludur). Radyo kartının kanalları servis isteklerine geçirmeye devam etmesi, kayıp çerçeveler ve korkunç performans için bir reçetedir.

Yazılım açısından mümkün hale geliyor. Linux'taki birkaç 802.11 kart sürücüsü, tek bir kartın aynı anda birden çok AP (birden çok SSID, hatta BSSID) gibi davranmasına izin veren VAP'ler (sanal AP'ler) kavramını destekler. Aksine, VAP terimi, sanal arabirimin AP modunda olup olmadığına bakılmaksızın, aynı 802.11 kartındaki her türlü sanal arabirim anlamına gelir. Bu kart / sürücü kombinasyonlarında iki VAP oluşturabilirsiniz - bir STA modu VAP

Atheros tabanlı kartlar için MadWifi sürücüsü, VAP'leri destekleyen sürücüdür. 802.11 kartınız bir Atheros yonga seti kullanıyorsa ve MadWifi sürücüsünün doğru sürümünü yüklüyorsanız, kartınızı aynı anda STA + AP modu için şu şekilde yapılandırabilirsiniz:

wlanconfig ath0 create wlandev wifi0 wlanmode sta
wlanconfig ath1 create wlandev wifi0 wlanmode ap

Bunların her şeyi ayarlamak için eksiksiz talimatlar olmadığını, yalnızca başlamanız için bir girişim olduğunu unutmayın.

Daha fazla bilgi için Google'a " wifi vap " gibi bir şey isteyebilirsiniz . Yukarıdaki komutları buradan kopyaladım .

Oh, ve bazı efsane patlaması: Atheros kartları tüketici makinelerinde nadir değildir. 802.11 yonga setlerinde Broadcom, Marvell, Intel ve Ralink ile birlikte önemli bir oyuncu. MadWifi / Atheros örneğini kullandığım için, diğer büyük oyuncuların yongaları için benzer bir şey yapabilen Linux sürücüleri olmadığı anlamına gelmez. Ayrıca, bunun için 802.11s gerekli değildir . Bunu yapmak için 802.11s yapmanız gerektiğini söylemek, kareleri bir arabirimden diğerine iletmek için Yayılan Ağaç Protokolünü desteklemeniz gerektiğini söylemek gibidir.


Anlaşılan tahtada bir Atheros yonga seti var gibi görünüyor, bu yüzden şanslı olabilirim. Bileşenlerimin teslimatını bekliyorum, sonra inşa edebilir ve test edebilirim.
ThatGraemeGuy

Henüz MadWifi ile oynama şansım olmadı. Kabul ediyorum çünkü cevap doğru, bu işlevselliği sunan başka bir yonga seti / aile yok gibi görünüyor.
ThatGraemeGuy

Spiff, bir Atheros yongası ve madwifi ile çalışıyorum ve VAP'ları sta ve ap'de bir tane kurmaya çalışıyorum. Ap modunda birden çok VAP ayarlayabiliyorum, ancak sta'da ilk VAP'ı kurduğumda ve sonra ap'de başka bir VAP kurmayı denediğimde wlanconfig: ioctl: Giriş / çıkış hatası alıyorum. Bununla nasıl başa çıkacağınız hakkında bir fikriniz var mı?
sachinr

1
@sachinr Bir soru olarak sorun, böylece herkesin görmesi için, sadece üç yaşındaki bir başkasının sorusuna bir cevap değil.
Spiff

Hey sorumu buraya ekledim - superuser.com/questions/649742/… . Bir bakabilir misin? Teşekkürler :)
sachinr

4

Nl80211 sürücüsünde "yönetilen" arabirim modu adı verilen bir şey vardır. Aşağıdaki gibi "iw" yardımcı programını kullanarak yapılandırabilirsiniz:

iw phy phy0 arayüzü yönetilen wlan1 türü ekleyin

Bununla ilgili daha fazla bilgiyi https://wireless.wiki.kernel.org/en/users/documentation/iw adresinde bulabilirsiniz . Phy0, / sys / class / ieee80211 / içinde gördüklerinizi ifade eder.

Ben de rPI3 benzer bir şey yaptığını gördüm, ama daha gölgeli "__ap" arayüz modu . Bu şekilde kullanıcı yalnızca AP modunda çalışan ikinci bir arabirim oluşturur ve ilk arabirimi istemci modu olarak kullanır.

Ne şekilde fark ederseniz edin (sürücünün bunu desteklemesi gerekir), iki arayüze ihtiyacınız olacak (aynı fiziksel cihazdan). Bir arabirim wpa_supplicant'ı istemci modu olarak çalıştırabilir, diğeri (AP modu) genellikle erişim noktasını çalmak için hostapd kullanır.

[DÜZENLE:]

İw aracının kaynak kodu, gölgeli __ap modu hakkında çok şey açıklıyor:

..
} else if (strcmp(tpstr, "__ap") == 0) {
    *type = NL80211_IFTYPE_AP;
    return 0;
} else if (strcmp(tpstr, "__ap_vlan") == 0) {
    *type = NL80211_IFTYPE_AP_VLAN;
    return 0;
} else if (strcmp(tpstr, "wds") == 0) {
    *type = NL80211_IFTYPE_WDS;
    return 0;
} else if (strcmp(tpstr, "managed") == 0 ||
       strcmp(tpstr, "mgd") == 0 ||
       strcmp(tpstr, "station") == 0) {
    *type = NL80211_IFTYPE_STATION;
    return 0;
} 
..

__Ap modu, NL80211_IFTYPE_AP netlink türüne dönüşür. Bunu da test ettim ve bu iyi çalışıyor. Çekirdek dokümantasyon wiki'sinin buna uymaması garip.


4

kaynak ve daha fazla bilgi:

https://wiki.archlinux.org/index.php/Software_access_point

Kısa cevap

sudo iw dev wlan0 interface add wlan0_ap type managed
sudo create_ap wlan0_ap wlan0 createap mypassword

Kablosuz cihaz AP modunu desteklemelidir

AP çalışma modunu destekleyen nl80211 uyumlu bir kablosuz cihaza ihtiyacınız vardır. Bu, iw list komutu çalıştırılarak doğrulanabilir, Desteklenen arayüz modları bloğunun altında AP listelenmelidir:

...
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point
...

Tek bir Wi-Fi cihazıyla kablosuz istemci ve yazılım AP'si

Bir yazılım AP'si oluşturmak kendi ağ bağlantınızdan (Ethernet, kablosuz, ...) bağımsızdır. Birçok kablosuz cihaz aynı anda hem AP hem de kablosuz "istemci" olarak eşzamanlı çalışmayı destekler. Bu özelliği kullanarak, tek bir kablosuz cihaz kullanarak mevcut bir ağ için "kablosuz tekrarlayıcı" görevi gören bir yazılım AP'si oluşturabilirsiniz. Bu yetenek iw listesinin çıktısında aşağıdaki bölümde listelenmiştir:

geçerli arayüz kombinasyonları:

$ iw list
...
valid interface combinations:
     * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
       total <= 3, #channels <= 2
...

#Channel <= 1 kısıtlaması, yazılım AP'nizin Wi-Fi istemci bağlantınızla aynı kanalda çalışması gerektiği anlamına gelir; aşağıdaki hostapd.conf'daki kanal ayarına bakın.

Yeteneği / özelliği kullanmak istiyorsanız, muhtemelen bir Ethernet bağlantısı olmadığından, kullanmak için iki ayrı sanal arabirim oluşturmanız gerekir. Fiziksel aygıt wlan0 için sanal arabirimler aşağıdaki gibi oluşturulabilir: Ağ bağlantısının (wlan0_sta) kendisi ve AP / hostapd "kablosuz tekrarlayıcı" yazılımı için benzersiz MAC adresine sahip sanal arabirimler oluşturulur:

# iw dev wlan0 interface add wlan0_sta type managed 
# iw dev wlan0 interface add wlan0_ap  type managed

Yapılandırma

Bir erişim noktası kurmak iki ana bölümden oluşur:

  1. Wi-Fi bağlantı katmanını, kablosuz istemcilerin bilgisayarınızın yazılım erişim noktasıyla ilişkilendirilmesi ve IP paketlerini onunla değiştirebilmesi için ayarlama.
  2. Bilgisayarınızda ağ yapılandırmasını ayarlamak, böylece IP paketlerini kendi internet bağlantısı ve kablosuz istemciler arasında düzgün bir şekilde geçirir.

Araçlar

create_ap

Create_ap paketi, internet paylaşımı için köprülü veya NATed erişim noktası oluşturabilen bir komut dosyası sağlar. Erişim noktasının iyi çalışması için hostapd, dnsmasq ve iptables'ı birleştirir. Bir NATed sanal ağı oluşturmak için temel sözdizimi şöyledir:

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase

Harika cevap, teşekkürler!
Iman Akbari

İkincisi, bu harika bir cevap, özellikle kanal kısıtlaması hakkında biraz
crazystick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.