GNU/Linux >> Belajar Linux >  >> Linux

Bisakah mesin Linux bertindak sebagai klien nirkabel dan titik akses secara bersamaan menggunakan antarmuka WLAN fisik tunggal?

Secara pribadi saya belum pernah melakukan ini sebelumnya, tetapi berikut beberapa informasi untuk mengarahkan Anda ke arah yang benar.

Dari perspektif protokol, sangat mungkin untuk memiliki satu radio yang berfungsi sebagai AP dan klien STA. Ini bekerja paling baik (atau mungkin hampir wajib) jika AP yang Anda buat dan yang Anda ikuti sebagai klien berada di saluran yang sama. Memiliki kartu radio yang harus terus berpindah saluran ke permintaan layanan adalah penyebab hilangnya bingkai dan kinerja yang buruk.

Dari segi perangkat lunak, itu menjadi mungkin. Beberapa driver kartu 802.11 di Linux mendukung konsep VAP (Virtual APs) yang memungkinkan satu kartu bertindak sebagai banyak AP (beberapa SSID, bahkan BSSID) pada saat yang bersamaan. Secara berlawanan, istilah VAP berarti segala jenis antarmuka virtual pada kartu 802.11 yang sama, terlepas dari apakah antarmuka virtual dalam mode AP atau tidak. Jadi pada kombo kartu/driver ini, Anda dapat membuat dua VAP -- VAP mode STA

Driver MadWifi untuk kartu berbasis Atheros adalah driver yang mendukung VAP. Jika kartu 802.11 Anda menggunakan chipset Atheros, dan Anda menginstal driver MadWifi versi yang tepat, Anda mungkin dapat mengonfigurasi kartu Anda untuk mode STA + AP simultan seperti ini:

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

Perhatikan bahwa ini bukan petunjuk lengkap untuk menyiapkan semuanya, tetapi hanya upaya untuk membantu Anda memulai.

Anda mungkin ingin Google untuk sesuatu seperti "wifi vap" untuk informasi lebih lanjut. Saya menyalin perintah di atas dari sini.

Oh, dan beberapa mitos yang hilang:Kartu Atheros tidak jarang di mesin konsumen. Mereka adalah pemain utama dalam chipset 802.11, bersama dengan Broadcom, Marvell, Intel, dan Ralink. Dan hanya karena saya menggunakan contoh MadWifi/Atheros, tidak berarti tidak ada driver Linux untuk chip pemain besar lainnya yang dapat melakukan hal serupa. Juga, 802.11s tidak diperlukan untuk ini. Mengatakan Anda harus melakukan 802.11 untuk melakukan ini sama seperti mengatakan Anda harus mendukung Spanning Tree Protocol hanya untuk meneruskan bingkai dari satu antarmuka ke antarmuka lainnya.


sumber dan info lebih lanjut:

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

Jawaban singkat

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

Perangkat Wi-Fi harus mendukung mode AP

Anda memerlukan perangkat nirkabel yang kompatibel dengan nl80211, yang mendukung mode operasi AP. Ini dapat diverifikasi dengan menjalankan perintah iw list, di bawah blok Mode antarmuka yang didukung harus ada AP yang terdaftar:

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

Klien nirkabel dan AP perangkat lunak dengan satu perangkat Wi-Fi

Membuat perangkat lunak AP tidak bergantung pada koneksi jaringan Anda sendiri (Ethernet, nirkabel, ...). Banyak perangkat nirkabel bahkan mendukung operasi simultan baik sebagai AP dan sebagai "klien" nirkabel pada saat yang bersamaan. Dengan menggunakan kemampuan tersebut, Anda dapat membuat perangkat lunak AP yang berfungsi sebagai "pengulang nirkabel" untuk jaringan yang ada, menggunakan satu perangkat nirkabel. Kemampuan tercantum di bagian berikut dalam output dari iw list:

kombinasi antarmuka yang valid:

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

Kendala #channels <=1 berarti AP perangkat lunak Anda harus beroperasi pada saluran yang sama dengan koneksi klien Wi-Fi Anda; lihat pengaturan saluran di hostapd.conf di bawah.

Jika Anda ingin menggunakan kemampuan/fitur tersebut, mungkin karena koneksi Ethernet tidak tersedia, Anda perlu membuat dua antarmuka virtual terpisah untuk menggunakannya. Antarmuka virtual untuk perangkat fisik wlan0 dapat dibuat sebagai berikut:Antarmuka virtual dengan alamat MAC unik dibuat untuk koneksi jaringan (wlan0_sta) itu sendiri dan untuk perangkat lunak AP/hostapd "pengulang nirkabel":

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

Konfigurasi

Menyiapkan titik akses terdiri dari dua bagian utama:

  1. Menyiapkan lapisan tautan Wi-Fi, sehingga klien nirkabel dapat terhubung ke titik akses perangkat lunak komputer Anda dan bertukar paket IP dengannya.
  2. Menyiapkan konfigurasi jaringan di komputer Anda, sehingga mengirimkan paket IP dengan benar antara koneksi internetnya sendiri dan klien nirkabel.

Alat

buat_ap

Paket create_ap menyediakan skrip yang dapat membuat jalur akses terhubung atau NAT untuk berbagi internet. Ini menggabungkan hostapd, dnsmasq dan iptables untuk berfungsinya jalur akses dengan baik. Sintaks dasar untuk membuat jaringan virtual NATed adalah sebagai berikut:

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase

Driver nl80211 memiliki sesuatu yang disebut mode antarmuka "terkelola". Anda dapat mengonfigurasinya menggunakan utilitas "iw" seperti ini:

antarmuka iw phy phy0 menambahkan jenis wlan1 dikelola

Info lebih lanjut tentang ini tersedia di https://wireless.wiki.kernel.org/en/users/documentation/iw. Phy0 mengacu pada apa yang Anda lihat di /sys/class/ieee80211/.

Saya juga melihat rPI3 melakukan hal serupa, tetapi dengan mode antarmuka "__ap" yang lebih teduh. Dengan begitu, pengguna membuat antarmuka kedua yang hanya berjalan dalam mode AP, dan menggunakan antarmuka awal sebagai mode klien.

Apa pun cara Anda menyadarinya (pengandar jelas harus mendukungnya), Anda memerlukan dua antarmuka (dari perangkat fisik yang sama). Satu antarmuka cukup menjalankan wpa_supplicant sebagai mode klien, yang lain (mode AP) biasanya menggunakan hostapd untuk memainkan titik akses.

[EDIT:]

Kode sumber alat iw memperjelas tentang mode __ap yang teduh:

..
} 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;
} 
..

Mode __ap diterjemahkan menjadi jenis netlink NL80211_IFTYPE_AP. Saya juga menguji ini, dan ini berfungsi dengan baik. Aneh bahwa wiki dokumentasi kernel tidak menyebutkannya.


Linux
  1. Bagaimana saya bisa memeriksa port mana yang sibuk dan port mana yang kosong di mesin Linux saya?

  2. Pengikatan kunci yang efisien menggunakan Mac dan Linux

  3. Enkripsi hard drive eksternal dengan akses baca+tulis di Windows dan Linux

  1. Buat Titik Akses Nirkabel Dan Bagikan Koneksi Internet Dengan Nmcli?

  2. Mengupas tanda kutip tunggal dan ganda dalam sebuah string hanya menggunakan perintah bash / standar Linux

  3. Bagaimana saya bisa mendefinisikan DIRECTORY_SEPARATOR untuk platform Windows dan Linux?

  1. (C/C++) Bagaimana cara menghasilkan file yang dapat dieksekusi yang dapat berjalan di Windows dan Linux?

  2. Menggunakan kbhit() dan getch() di Linux

  3. Sistem file apa yang digunakan saat menggunakan Windows dan Linux?