Router Nirkabel DIY


  1. Pemilihan komponen
  2. Luncurkan Antarmuka Jaringan
  3. Mengatur Titik Akses 802.11ac (5 GHz)
  4. Mengkonfigurasi SSID virtual menggunakan hostapd

Selama sepuluh tahun terakhir, saya telah membeli peralatan jaringan murah dan menginstal DD-WRT untuk mengembalikan "fungsi" lebih dari $ 500 yang dihapus dari kernel Linux, yang menjadi dasar dari firmware saham.

Terlepas dari build yang tidak stabil, kesalahan yang tidak diperbaiki dan perselisihan , DD-WRT masih lebih baik daripada stock firmware. Tapi sekarang komponen yang layak lebih murah dari sebelumnya, dan komunitas DIY telah sepenuhnya beralih ke Linux (saya melihat Anda, Mr. Raspberry), jadi mengapa tidak membangun router nirkabel Anda sendiri untuk selamanya?

Pemilihan komponen


Pertama-tama, Anda perlu memutuskan platform: x86 atau ARM ? Saya tidak akan membahas secara rinci perbedaan utama , tetapi secara singkat: yang pertama memiliki kinerja yang lebih baik, sedangkan yang kedua lebih murah dan lebih hemat energi. Papan Raspberry Pi (dan setara) sangat murah dan mungkin lebih kuat daripada kebanyakan router komersial nirkabel, tetapi platform x86 tersebar luas dan memiliki keunggulan faktor bentuk standar dan port ekspansi.

Tentu saja, detail terpenting adalah chipset. Saat ini, standar de facto adalah 802.11n (2.4 GHz) dan 802.11ac (5 GHz), tetapi mengambil driver untuk Linux masih merupakan tantangan , terutama dengan dukungan untuk mode AP (titik akses). Singkatnya, jika Anda tidak ingin masalah, maka pilih chipset Atheros . Driver ath9k dan ath10k didukung dengan baik, Anda dapat dengan mudah menemukannya dengan antarmuka USB dan / atau mini-PCIe.

Setidaknya satu pengontrol antarmuka jaringan (NIC) adalah minimum yang diperlukan, dan pilih RAM dan penyimpanan sesuai selera Anda.

Daftar Bahan


Setelah mengorbankan harga dan konsumsi daya, saya memilih platform x86 untuk konfigurasi modular yang relatif kuat yang tersedia untuk peningkatan.

Jika Anda tidak membutuhkan ARM, maka kipas tidak diperlukan.


Rumahnya luas, dengan dua lubang yang disiapkan untuk steker AC / DC. Memasang motherboard, RAM dan Pico-PSU berjalan dengan lancar:


Besi porno

Memasang mini-PCIe WiFi ternyata yang paling sulit, karena papan hanya mendukung kartu setengah-ukuran: di sini kabel ekstensi mPCIe datang untuk menyelamatkan. Saya mengambil kabel FFC 20 cm (termasuk) untuk menghubungkan kedua sisi adaptor dan memperbaiki mini-PCIe ke sasis menggunakan pita dua sisi.




Mini-PCIe expander

Untungnya, sasis dilengkapi dengan tiga lubang antena pra-potong. Inilah hasil akhirnya:





Perangkat lunak


Jelas kita menempatkan Linux. Tergantung pada perangkat kerasnya, itu bisa berupa distribusi yang dioptimalkan seperti Raspbian (untuk Raspberry Pi) atau distribusi Linux lain yang Anda suka. Karena saya telah menggunakan Ubuntu selama bertahun-tahun, saya memilih Ubuntu Server 18.04 LTS , yang saya lebih terbiasa bekerja dengannya dan yang memiliki dukungan jangka panjang.

Sisa dari artikel ini mengasumsikan bahwa Anda menggunakan distribusi berbasis Debian.

Jika instalasi berjalan dengan baik dan Anda pergi ke konsol, tentukan nama antarmuka:

$ ip -br a | awk '{print $1}' lo enp1s0 enp2s0 wlp5s0 

Ada dua NIC enp1s0 pada motherboard: ini adalah enp1s0 dan enp2s0 . Kartu nirkabel muncul sebagai wlp5s0 dan mendukung mode AP, sebagaimana dimaksud:

 $ iw list ... Supported interface modes: * managed * AP * AP/VLAN * monitor * mesh point 

Sekarang kita dapat menguraikan apa yang kita butuhkan: kita meletakkan NIC pertama sebagai port WAN, dan yang kedua kita terhubung ke antarmuka nirkabel:



Jaringan


Jika Anda memiliki Ubuntu 18.04, segera singkirkan netplan untuk kembali ke dukungan untuk / etc / network / interfaces:

 $ sudo apt-get install ifupdown bridge-utils $ sudo systemctl stop networkd-dispatcher $ sudo systemctl disable networkd-dispatcher $ sudo systemctl mask networkd-dispatcher $ sudo apt-get purge nplan netplan.io 

Sebagai server DHCP / DNS, pilih dnsmasq :

 $ sudo apt-get install dnsmasq 

Karena kita akan memulai dan mengkonfigurasi proses dnsmasq melalui post-up hook, ingatlah untuk menonaktifkan daemon saat boot:

 $ sudo sed -i "s/^ENABLED=1$/ENABLED=0/g" /etc/default/dnsmasq 

Kami akan menulis konfigurasi awal antarmuka jaringan sesuai dengan diagram, termasuk konfigurasi minimum dnsmasq :

 $ cat /etc/network/interfaces # Loopback auto lo iface lo inet loopback # WAN interface auto enp1s0 iface enp1s0 inet dhcp # Bridge (LAN) auto br0 iface br0 inet static address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 bridge_ports enp2s0 post-up /usr/sbin/dnsmasq \ --pid-file=/var/run/dnsmasq.$IFACE.pid \ --dhcp-leasefile=/var/lib/misc/dnsmasq.$IFACE.leases \ --conf-file=/dev/null \ --interface=$IFACE --except-interface=lo \ --bind-interfaces \ --dhcp-range=192.168.1.10,192.168.1.150,24h pre-down cat /var/run/dnsmasq.$IFACE.pid | xargs kill 

Dokumentasi /etc/network/interfaces di sini

Seperti yang Anda lihat dari bagian post-up , dnsmasq dimulai segera setelah jembatan naik. Konfigurasi ini dilakukan hanya dengan argumen baris perintah ( --conf-file=/dev/null ), dan proses akan berhenti ketika antarmuka dimatikan.

Antarmuka bridge_ports tidak secara khusus ditentukan dalam wlp5s0 , karena hostapd akan menambahkannya ke jembatan secara otomatis (brctl dapat menolak untuk melakukan ini sebelum hostapd mulai mengubah mode antarmuka).

Lihat dokumentasi dnsmasq .

Sekarang Anda dapat me-restart jaringan ( sudo service networking restart ) atau cukup reboot untuk memverifikasi bahwa konfigurasi jaringan sudah benar.

Harap dicatat: meskipun saat ini kami dapat menerima DHCP dari enp2s0 , kami tidak akan memiliki koneksi nirkabel (lebih lanjut tentang ini nanti), atau akses Internet (lihat di bawah).

Routing


Pada titik ini, Anda perlu merutekan paket antara enp1s0 LAN ( enp2s0 ) dan WAN ( enp1s0 ) dan mengaktifkan terjemahan alamat jaringan .

Mengaktifkan penerusan paket mudah:

 $ sudo sysctl -w net.ipv4.ip_forward=1 $ echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf 

Perintah terakhir memastikan bahwa konfigurasi disimpan sampai reboot berikutnya.

Terjemahan alamat jaringan adalah masalah lain, biasanya Anda harus berurusan dengan (atau lebih tepatnya melawan) iptables . Untungnya, Zaman Batu sudah lama berlalu, dan orang-orang dari FireHol melakukan banyak upaya untuk menambahkan tingkat abstraksi yang diperlukan:

 $ sudo apt-get install firehol 

FireHOL adalah bahasa firewall aman yang canggih, konfigurasinya mudah dipahami dan diakses. Anda tidak perlu lagi menulis pernyataan iptables : file konfigurasi itu sendiri diterjemahkan ke dalam pernyataan iptables dan diterapkan sesuai kebutuhan. Tidak ada daemon di latar belakang.

Mengaktifkan penerjemahan alamat jaringan untuk antarmuka LAN dengan tambahan aturan firewall minimum dilakukan secara mendasar:

 $ cat /etc/firehol/firehol.conf version 6 # Accept all client traffic on WAN interface enp1s0 wan client all accept # Accept all traffic on LAN interface br0 lan server all accept client all accept # Route packets between LAN and WAN router lan2wan inface br0 outface enp1s0 masquerade route all accept 

FireHOL ditulis oleh orang untuk orang, dokumentasinya ada di sini .

Anda dapat memeriksa pengaturan dengan memulai secara manual firehol ( sudo firehol start ) dan menghubungkan laptop ke port LAN: sekarang Anda dapat online jika port WAN terhubung.

Sebelum me-reboot, pastikan untuk mengedit /etc/default/firehol untuk memungkinkan FireHol untuk memulai saat boot:

 $ sudo sed -i -E "s/^START_FIREHOL=.+$/START_FIREHOL=YES/g" /etc/default/firehol 

Saya tidak akan membahas rincian seluruh sintaks firehol , file konfigurasi menjelaskan sendiri, saya sarankan firehol pada dokumentasi jika konfigurasi lebih kompleks. Jika Anda benar-benar tertarik dengan apa yang dilakukan firehol dengan iptables , ketikkan saja sudo firehol status di baris perintah.

Hotspot nirkabel


Jelas, kami akan mengelola titik akses menggunakan hostapd :

 $ sudo apt-get install hostapd 

Di bawah ini Anda akan menemukan file konfigurasi 802.11 n / 2.4 Ghz / WPA2-AES yang minimal dan hampir tidak dapat dijelaskan:

 $ cat /etc/hostapd/hostapd-simple.conf #### Interface configuration #### interface=wlp5s0 bridge=br0 driver=nl80211 ##### IEEE 802.11 related configuration ##### ssid=iCanHearYouHavingSex hw_mode=g channel=1 auth_algs=1 wmm_enabled=1 ##### IEEE 802.11n related configuration ##### ieee80211n=1 ##### WPA/IEEE 802.11i configuration ##### wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=YouCantGuess 

Lihat hostpad.conf dokumentasi di /usr/share/doc/hostapd/examples/hostapd.conf .

Konfigurasi yang dijelaskan dapat diuji secara manual:

 $ sudo hostapd /etc/hostapd/hostapd-simple.conf 

Jika semuanya berjalan dengan baik, koneksi nirkabel akan muncul . Jika Anda puas dengan hasilnya, jangan lupa untuk mengubah konfigurasi untuk memulai hostapd segera setelah antarmuka naik (seperti yang ditunjukkan di bawah).

Inilah akhir /etc/network/interfaces:

 $ cat /etc/network/interfaces # Loopback auto lo iface lo inet loopback # WAN interface auto enp1s0 iface enp1s0 inet dhcp # Bridge (LAN) auto br0 iface br0 inet static address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 bridge_ports enp2s0 post-up /usr/sbin/hostapd \ -P /var/run/hostapd.$IFACE.pid \ -B /etc/hostapd/hostapd-simple.conf post-up /usr/sbin/dnsmasq \ --pid-file=/var/run/dnsmasq.$IFACE.pid \ --dhcp-leasefile=/var/lib/misc/dnsmasq.$IFACE.leases \ --conf-file=/dev/null \ --interface=$IFACE --except-interface=lo \ --bind-interfaces \ --dhcp-range=192.168.1.10,192.168.1.150,24h pre-down cat /var/run/dnsmasq.$IFACE.pid | xargs kill pre-down cat /var/run/hostapd.$IFACE.pid | xargs kill 

Mengatur Titik Akses 802.11ac (5 GHz)


Pemindaian pasif


Menurut dokumentasi Airetos AEX-QCA9880-NX , chipset mendukung 802.11ac, sehingga kita dapat meninggalkan saluran 2,4 GHz yang ramai ke surga 5 GHz.

Mari kita lihat frekuensi apa yang didukung:

 $ iw list ... Frequencies: * 2412 MHz [1] (20.0 dBm) * 2417 MHz [2] (20.0 dBm) * 2422 MHz [3] (20.0 dBm) * 2427 MHz [4] (20.0 dBm) * 2432 MHz [5] (20.0 dBm) * 2437 MHz [6] (20.0 dBm) * 2442 MHz [7] (20.0 dBm) * 2447 MHz [8] (20.0 dBm) * 2452 MHz [9] (20.0 dBm) * 2457 MHz [10] (20.0 dBm) * 2462 MHz [11] (20.0 dBm) * 2467 MHz [12] (disabled) * 2472 MHz [13] (disabled) * 2484 MHz [14] (disabled) ... Frequencies: * 5180 MHz [36] (17.0 dBm) (no IR) * 5200 MHz [40] (17.0 dBm) (no IR) * 5220 MHz [44] (17.0 dBm) (no IR) * 5240 MHz [48] (17.0 dBm) (no IR) * 5260 MHz [52] (23.0 dBm) (no IR, radar detection) * 5280 MHz [56] (23.0 dBm) (no IR, radar detection) * 5300 MHz [60] (23.0 dBm) (no IR, radar detection) * 5320 MHz [64] (23.0 dBm) (no IR, radar detection) * 5500 MHz [100] (23.0 dBm) (no IR, radar detection) * 5520 MHz [104] (23.0 dBm) (no IR, radar detection) * 5540 MHz [108] (23.0 dBm) (no IR, radar detection) * 5560 MHz [112] (23.0 dBm) (no IR, radar detection) * 5580 MHz [116] (23.0 dBm) (no IR, radar detection) * 5600 MHz [120] (23.0 dBm) (no IR, radar detection) * 5620 MHz [124] (23.0 dBm) (no IR, radar detection) * 5640 MHz [128] (23.0 dBm) (no IR, radar detection) * 5660 MHz [132] (23.0 dBm) (no IR, radar detection) * 5680 MHz [136] (23.0 dBm) (no IR, radar detection) * 5700 MHz [140] (23.0 dBm) (no IR, radar detection) * 5720 MHz [144] (23.0 dBm) (no IR, radar detection) * 5745 MHz [149] (30.0 dBm) (no IR) * 5765 MHz [153] (30.0 dBm) (no IR) * 5785 MHz [157] (30.0 dBm) (no IR) * 5805 MHz [161] (30.0 dBm) (no IR) * 5825 MHz [165] (30.0 dBm) (no IR) ... 

Dalam daftar di atas, kita melihat bahwa chipset mendukung saluran 1-14 (2,4 GHz) dan saluran 36-165 (5 GHz), tetapi apakah Anda melihat no IR tanda no IR ?

Bendera no IR menunjukkan radiasi tanpa inisiasi (mis. Pemindaian pasif ). Ini berarti bahwa mode ini dilarang dalam kasus ketika perangkat adalah yang pertama kali memulai radiasi (termasuk suar ). Dengan kata lain, Anda tidak dapat menjalankan jalur akses di saluran ini !



Persyaratan peraturan


Situasi di atas dijelaskan oleh persyaratan peraturan Linux , yang mengatur penggunaan spektrum frekuensi radio tergantung pada negara .

Tapi hei!

Saya tinggal di AS, dan tautannya mengatakan bahwa saya memiliki hak untuk memulai radiasi pada saluran 36-48, jadi ada apa? Mari kita lihat domain peraturan mana yang sedang digunakan:

 $ iw reg get country 00: DFS-UNSET (2402 - 2472 @ 40), (N/A, 20), (N/A) (2457 - 2482 @ 40), (N/A, 20), (N/A), NO-IR (2474 - 2494 @ 20), (N/A, 20), (N/A), NO-OFDM, NO-IR (5170 - 5250 @ 80), (N/A, 20), (N/A), NO-IR (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, NO-IR (5490 - 5730 @ 160), (N/A, 20), (0 ms), DFS, NO-IR (5735 - 5835 @ 80), (N/A, 20), (N/A), NO-IR (57240 - 63720 @ 2160), (N/A, 0), (N/A) 

Masalahnya menunjukkan bahwa domain dunia saat ini aktif (atau tidak diinstal), yaitu nilai minimum yang diperbolehkan di setiap negara .

Sayangnya, Anda tidak dapat menginstal secara manual sudo iw reg set domain, karena domain tersebut dilindungi di EEPROM:

 $ dmesg | grep EEPROM [ 12.123068] ath: EEPROM regdomain: 0x6c 



Tambalan!


Untungnya, persyaratan peraturan diproses pada tingkat driver, sehingga dapat dengan mudah diubah: kami menemukan tambalan dalam kode sumber Open-WRT .

Pertama-tama, jangan lupa menghubungkan repositori kode sumber dari /etc/apt/sources.list :

 $ cat /etc/apt/sources.list ... deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted ... 

Kemudian siapkan lingkungan dengan menginstal dependensi yang diperlukan:

 $ sudo apt-get install build-essential fakeroot $ sudo apt-get build-dep linux 

Unduh sumber kernel Anda:

 $ apt-get source linux 

Karena patch Open-WRT yang asli tidak dapat diterapkan "apa adanya" ke pohon kernel Ubuntu karena perbedaan halus dalam sistem build, saya harus memperbaikinya:

 $ VERSION=$(uname -r) $ cd linux-${VERSION%%-*} $ wget -O - https://gist.github.com/renaudcerrato/02de8b2e8dc013bc71326defd2ef062c/raw/a2db325e520e6442c8c12f7599d64ac1b7596a3e/402-ath_regd_optional.patch | patch -p1 -b 

Semuanya siap untuk perakitan:

 $ fakeroot debian/rules clean $ fakeroot debian/rules binary-generic 

Jika tidak ada masalah, sekarang Anda dapat menginstal kernel tetap di atas yang sebelumnya:

 $ cd .. $ sudo dpkg -i linux*.deb 

Nyalakan kembali, dan voila:

 $ sudo iw reg set US $ iw list ... Frequencies: * 5180 MHz [36] (17.0 dBm) * 5200 MHz [40] (17.0 dBm) * 5220 MHz [44] (17.0 dBm) * 5240 MHz [48] (17.0 dBm) * 5260 MHz [52] (23.0 dBm) (radar detection) * 5280 MHz [56] (23.0 dBm) (radar detection) * 5300 MHz [60] (23.0 dBm) (radar detection) * 5320 MHz [64] (23.0 dBm) (radar detection) * 5500 MHz [100] (23.0 dBm) (radar detection) * 5520 MHz [104] (23.0 dBm) (radar detection) * 5540 MHz [108] (23.0 dBm) (radar detection) * 5560 MHz [112] (23.0 dBm) (radar detection) * 5580 MHz [116] (23.0 dBm) (radar detection) * 5600 MHz [120] (23.0 dBm) (radar detection) * 5620 MHz [124] (23.0 dBm) (radar detection) * 5640 MHz [128] (23.0 dBm) (radar detection) * 5660 MHz [132] (23.0 dBm) (radar detection) * 5680 MHz [136] (23.0 dBm) (radar detection) * 5700 MHz [140] (23.0 dBm) (radar detection) * 5720 MHz [144] (23.0 dBm) (radar detection) * 5745 MHz [149] (30.0 dBm) * 5765 MHz [153] (30.0 dBm) * 5785 MHz [157] (30.0 dBm) * 5805 MHz [161] (30.0 dBm) * 5825 MHz [165] (30.0 dBm) ... 

Untuk menghindari pembaruan otomatis, Anda mungkin perlu memperbaiki versi kernel Linux .

Konfigurasi


hostapd konfigurasi hostapd baru akan sangat sederhana: hw_mode=a termasuk band 5 GHz, dan ieee80211ac=1 termasuk 802.11ac (VHT). Opsi ieee80211d=1 dengan country_code=US menentukan domain pengaturan di mana kami beroperasi.

Untuk memanfaatkan bandwidth secara ht_capab , ht_capab dan vht_capab harus mencerminkan kemampuan peralatan:

 $ iw list ... Band 1: Capabilities: 0x19e3 RX LDPC HT20/HT40 Static SM Power Save RX HT20 SGI RX HT40 SGI TX STBC RX STBC 1-stream Max AMSDU length: 7935 bytes DSSS/CCK HT40 ... Band 2: VHT Capabilities (0x338001b2): Max MPDU length: 11454 Supported Channel Width: neither 160 nor 80+80 RX LDPC short GI (80 MHz) TX STBC RX antenna pattern consistency TX antenna pattern consistency 

Dengan mengingat hal ini, inilah hostapd.conf terakhir :

 $ cat /etc/hostapd/hostapd.conf #### Interface configuration #### interface=wlp5s0 bridge=br0 driver=nl80211 ##### IEEE 802.11 related configuration ##### ssid=iCanHearYouHavingSex hw_mode=a channel=0 auth_algs=1 wmm_enabled=1 country_code=US ieee80211d=1 ieee80211h=0 ##### IEEE 802.11n related configuration ##### ieee80211n=1 ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CK-40][LDPC][MAX-AMSDU-7935] ##### IEEE 802.11ac related configuration ##### ieee80211ac=1 vht_capab=[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-A-MPDU-LEN-EXP7][TX-ANTENNA-PATTERN][RX-ANTENNA-PATTERN] vht_oper_chwidth=1 ##### WPA/IEEE 802.11i configuration ##### wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=YouCantGuess 

Lihat hostpad.conf dokumentasi di /usr/share/doc/hostapd/examples/hostapd.conf .

Pada titik ini, router nirkabel sepenuhnya operasional, dan jika Anda memerlukan konfigurasi yang lebih kompleks, maka sekarang Anda dapat masuk ke file konfigurasi.

Mengkonfigurasi SSID virtual menggunakan hostapd


Terlepas dari apakah Anda ingin mengonfigurasi titik akses tamu atau jaringan nirkabel khusus untuk VPN Anda, pada titik tertentu Anda harus mengonfigurasi SSID virtual.

Bagan


Berdasarkan konfigurasi saat ini , berikut adalah diagram terbaru dari apa yang ingin kami dapatkan. Dengan asumsi wlp5s0 adalah antarmuka nirkabel fisik, SSID virtual akan bekerja pada antarmuka virtual wlan0 menggunakan subnet 192.168.2.0/24 sendiri:



Persiapan


Pertama, periksa apakah perangkat nirkabel Anda mendukung beberapa SSID:

 $ iw list ... valid interface combinations: * #{ AP, mesh point } <= 8, total <= 8, #channels <= 1, STA/AP BI must match ... 

Seperti yang Anda lihat, chipset mendukung hingga delapan titik akses pada satu saluran. Ini berarti Anda dapat mengonfigurasi hingga tujuh SSID virtual, dan semuanya akan berfungsi pada saluran yang sama.

Antarmuka jaringan


Menurut dokumentasi di hostapd.conf, ada koneksi yang ketat antara alamat MAC dari antarmuka fisik dan BSSID dari antarmuka virtual:

hostapd akan menghasilkan topeng BSSID berdasarkan pada BSSID yang dikonfigurasi. hostapd akan memverifikasi bahwa dev_addr & MASK == dev_addr . Jika ini bukan masalahnya, alamat MAC radio harus diubah sebelum memulai hostapd. Jika BSSID dikonfigurasi untuk setiap BSS sekunder, batasan ini tidak diterapkan di hostapd dan masker lain dapat digunakan jika driver mendukungnya (mis., Menukar bit yang dikelola secara lokal)

BSSID ditugaskan untuk setiap BSS, kecuali BSSID eksplisit ditentukan menggunakan parameter 'bssid'.

Jika BSSID eksplisit ditentukan, ia harus dipilih sedemikian rupa sehingga:
- menghasilkan MASKER yang valid yang mencakupnya dan dev_addr
- tidak sama dengan alamat MAC radio
- tidak sama dengan BSSID lainnya yang ditentukan secara eksplisit

Untuk memenuhi persyaratan ini dan memungkinkan hostapd secara otomatis menetapkan BSSID dari antarmuka virtual, kami memperbarui alamat MAC dari antarmuka nirkabel fisik dengan menghilangkan empat bit paling tidak signifikan. Ini cukup untuk 15 BSSID virtual - lebih dari yang diperlukan.

Pertama, tentukan alamat MAC saat ini:

 $ ip addr show wlp5s0 | grep link | awk '{print $2}' 44:c3:06:00:03:eb 

Jika Anda menghapus empat bit terakhir dan mengatur bit U / L , Anda mendapatkan alamat MAC 46:c3:06:00:03:e0 .

Sekarang kami akan memperbarui konfigurasi untuk menetapkan alamat MAC yang benar tepat sebelum memuat antarmuka, dan juga mendeklarasikan antarmuka nirkabel virtual sesuai dengan diagram kami:

 $ cat /etc/network/interfaces ... # Physical Wireless auto wlp5s0 iface wlp5s0 inet manual pre-up ip link set dev wlp5s0 address 46:c3:06:00:03:e0 # Virtual Wireless allow-hotplug wlan0 iface wlan0 inet static address 192.168.2.1 network 192.168.2.0 netmask 255.255.255.0 broadcast 192.168.2.255 post-up /usr/sbin/dnsmasq \ --pid-file=/var/run/dnsmasq-wlan0.pid \ --conf-file=/dev/null \ --interface=wlan0 --except-interface=lo \ --bind-interfaces \ --dhcp-range=192.168.2.10,192.168.2.150,24h post-down cat /var/run/dnsmasq-wlan0.pid | xargs kill ... 

Bagus Saya menggunakan dnsmasq sebagai server DHCP - jangan ragu untuk mengganti dengan apa pun yang Anda suka. Harap perhatikan bahwa agar antarmuka virtual berfungsi dengan benar, allow-hotplug diperlukan.

Konfigurasi Titik Akses


Sekarang yang paling sederhana: tambahkan SSID virtual ke konfigurasi hostapd saat ini. Tambahkan saja ini di akhir file hostapd.conf ada:

 $ cat /etc/hostapd/hostapd.conf ... ### Virtual SSID(s) ### bss=wlan0 ssid=MyVirtualSSID wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=you_cant_guess 

Dalam contoh saya menggunakan enkripsi WPA2, tetapi sebagian besar opsi antarmuka radio tersedia di sini (misalnya, channel ). Anda dapat menambahkan lebih banyak SSID virtual dengan hanya menambahkan baris dalam file konfigurasi sesuai dengan antarmuka virtual yang dinyatakan dan dikonfigurasi dengan benar.

Sekarang reboot - dan lihat SSID baru Anda bersama dengan antarmuka nirkabel baru (perhatikan alamat MAC):

 $ ip addr show wlan0 | grep link | awk '{print $2}' 46:c3:06:00:03:e1 

Itu dia teman-teman!

Source: https://habr.com/ru/post/id437634/


All Articles