Dapatkah mesin Linux bertindak sebagai klien nirkabel dan titik akses secara bersamaan menggunakan antarmuka WLAN fisik tunggal?
12
Jika saya hanya memiliki 1 antarmuka WLAN fisik, apakah ada beberapa peretasan yang dapat dilakukan sehingga dapat menjadi klien dari titik akses yang ada dan pada saat yang sama juga bertindak sebagai titik akses untuk klien lain?
Saya memiliki router ADSL 802.11g yang ada, dan saya akan membangun HTPC yang akan memiliki 802.11n. Laptop saya juga memiliki 802.11n, tetapi saat ini hanya terhubung pada 54Mbps karena itulah yang didukung oleh AP. Saya ingin HTPC menjadi klien router ADSL saya, tetapi laptop saya menjadi klien HTPC, jadi menyalin file ke sana akan lebih cepat.
Bisa jadi?
Sunting: jelas saya dapat menghubungkan HTPC ke router ADSL menggunakan Ethernet dan menonaktifkan wifi pada router, tetapi mari kita abaikan saja opsi itu. :-)
Saya belum pernah melakukan ini sebelumnya secara pribadi, tetapi inilah beberapa informasi untuk membuat Anda menuju ke arah yang benar.
Dari perspektif protokol, sangat mungkin untuk memiliki radio tunggal yang berfungsi baik sebagai AP dan STA klien. Ini bekerja paling baik (atau mungkin hampir wajib) jika AP yang Anda buat dan yang Anda bergabung sebagai klien berada di saluran yang sama. Memiliki kartu radio harus terus beralih saluran ke permintaan layanan adalah resep untuk frame yang hilang dan kinerja yang buruk.
Dari segi perangkat lunak, ini menjadi mungkin. Beberapa driver kartu 802.11 di Linux mendukung konsep VAP (AP virtual) yang memungkinkan kartu tunggal untuk bertindak sebagai beberapa AP (beberapa SSID, bahkan BSSID) secara 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 salah satu yang mendukung VAP. Jika kartu 802.11 Anda menggunakan chipset Atheros, dan Anda menginstal versi yang tepat dari driver MadWifi, 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 instruksi lengkap untuk mengatur semuanya, tetapi hanya upaya untuk memulai.
Anda mungkin ingin ke Google untuk sesuatu seperti " wifi vap " untuk informasi lebih lanjut. Saya menyalin perintah di atas dari sini .
Oh, dan beberapa penghilang mitos: 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 utama lainnya yang dapat melakukan hal serupa. Juga, 802.11s tidak diperlukan untuk ini. Mengatakan Anda harus melakukan 802.11s untuk melakukan ini seperti mengatakan Anda harus mendukung Spanning Tree Protocol hanya untuk meneruskan frame dari satu antarmuka ke antarmuka lainnya.
Sepertinya papan yang saya dapatkan memiliki chipset Atheros, jadi saya mungkin beruntung. Saya menunggu pengiriman komponen saya kemudian saya bisa membangun dan menguji.
ThatGraemeGuy
Saya belum memiliki kesempatan untuk bermain dengan MadWifi. Saya menerima karena jawabannya benar, sepertinya tidak ada chipset / keluarga lain yang menawarkan fungsi ini.
ThatGraemeGuy
Spiff, saya sudah bekerja dengan chip Atheros dan madwifi dan saya mencoba mengatur VAP satu di sta dan satu di ap. Saya dapat mengatur beberapa VAP dalam mode ap tetapi ketika saya mengatur VAP pertama di sta dan kemudian mencoba mengatur VAP lain di ap saya mendapatkan wlanconfig: ioctl: Kesalahan input / output. Apakah Anda punya ide bagaimana menangani ini?
sachinr
1
@sachinr Tanyakan itu sebagai Pertanyaan sehingga semua orang melihatnya, bukan hanya komentar atas Jawaban anak berusia tiga tahun.
Saya juga melihat rPI3 melakukan sesuatu yang serupa, tetapi dengan mode antarmuka "__ap" yang lebih teduh . Dengan cara itu pengguna membuat antarmuka kedua yang hanya berjalan dalam mode AP, dan menggunakan antarmuka awal sebagai mode klien.
Apa pun cara Anda menyadarinya (driver jelas harus mendukungnya), Anda akan memerlukan dua antarmuka (dari perangkat fisik yang sama). Satu antarmuka cukup menjalankan wpa_supplicant sebagai mode klien, yang lainnya (mode AP) biasanya menggunakan hostapd untuk memutar titik akses.
[EDIT:]
Kode sumber alat iw membuat banyak jelas tentang mode __ap teduh:
Mode __ap diterjemahkan menjadi tipe netlink NL80211_IFTYPE_AP. Saya juga menguji ini, dan ini berfungsi dengan baik. Aneh bahwa wiki dokumentasi kernel tidak menggunakannya.
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 daftar iw, 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 perangkat lunak AP dengan satu perangkat Wi-Fi
Membuat AP perangkat lunak tidak tergantung dari koneksi jaringan Anda sendiri (Ethernet, nirkabel, ...). Banyak perangkat nirkabel bahkan mendukung operasi simultan baik sebagai AP dan sebagai "klien" nirkabel pada saat yang sama. Dengan menggunakan kemampuan itu, Anda dapat membuat AP perangkat lunak yang bertindak sebagai "repeater nirkabel" untuk jaringan yang ada, menggunakan satu perangkat nirkabel. Kemampuan terdaftar di bagian berikut dalam output dari daftar iw:
Batasan #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 ini.
Jika Anda ingin menggunakan kapabilitas / fitur, 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 "repeater 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:
Menyiapkan lapisan tautan Wi-Fi, sehingga klien nirkabel dapat menghubungkan ke titik akses perangkat lunak komputer Anda dan bertukar paket IP dengannya.
Menyiapkan konfigurasi jaringan pada komputer Anda, sehingga itu benar relay paket IP antara koneksi internet sendiri dan klien nirkabel.
Alat
create_ap
Paket create_ap menyediakan skrip yang dapat membuat jalur akses yang dijembatani atau NATed untuk berbagi internet. Ini menggabungkan hostapd, dnsmasq dan iptables untuk berfungsinya titik akses. Sintaks dasar untuk membuat jaringan virtual NATed adalah sebagai berikut:
Driver nl80211 memiliki sesuatu yang disebut mode antarmuka "dikelola". Anda dapat mengonfigurasinya menggunakan utilitas "iw" seperti:
Info lebih lanjut tentang ini tersedia di https://wireless.wiki.kernel.org/en/users/documentation/iw . Phy0 merujuk pada apa yang Anda lihat di / sys / class / ieee80211 /.
Saya juga melihat rPI3 melakukan sesuatu yang serupa, tetapi dengan mode antarmuka "__ap" yang lebih teduh . Dengan cara itu pengguna membuat antarmuka kedua yang hanya berjalan dalam mode AP, dan menggunakan antarmuka awal sebagai mode klien.
Apa pun cara Anda menyadarinya (driver jelas harus mendukungnya), Anda akan memerlukan dua antarmuka (dari perangkat fisik yang sama). Satu antarmuka cukup menjalankan wpa_supplicant sebagai mode klien, yang lainnya (mode AP) biasanya menggunakan hostapd untuk memutar titik akses.
[EDIT:]
Kode sumber alat iw membuat banyak jelas tentang mode __ap teduh:
Mode __ap diterjemahkan menjadi tipe netlink NL80211_IFTYPE_AP. Saya juga menguji ini, dan ini berfungsi dengan baik. Aneh bahwa wiki dokumentasi kernel tidak menggunakannya.
sumber
sumber dan info lebih lanjut:
https://wiki.archlinux.org/index.php/Software_access_point
Jawaban singkat
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 daftar iw, di bawah blok Mode antarmuka yang didukung harus ada AP yang terdaftar:
Klien nirkabel dan perangkat lunak AP dengan satu perangkat Wi-Fi
Membuat AP perangkat lunak tidak tergantung dari koneksi jaringan Anda sendiri (Ethernet, nirkabel, ...). Banyak perangkat nirkabel bahkan mendukung operasi simultan baik sebagai AP dan sebagai "klien" nirkabel pada saat yang sama. Dengan menggunakan kemampuan itu, Anda dapat membuat AP perangkat lunak yang bertindak sebagai "repeater nirkabel" untuk jaringan yang ada, menggunakan satu perangkat nirkabel. Kemampuan terdaftar di bagian berikut dalam output dari daftar iw:
kombinasi antarmuka yang valid:
Batasan #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 ini.
Jika Anda ingin menggunakan kapabilitas / fitur, 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 "repeater nirkabel":
Konfigurasi
Menyiapkan titik akses terdiri dari dua bagian utama:
Alat
create_ap
Paket create_ap menyediakan skrip yang dapat membuat jalur akses yang dijembatani atau NATed untuk berbagi internet. Ini menggabungkan hostapd, dnsmasq dan iptables untuk berfungsinya titik akses. Sintaks dasar untuk membuat jaringan virtual NATed adalah sebagai berikut:
sumber