Cara menggunakan beberapa Raspberry Pi untuk membuat jaringan tunggal (mesh) titik akses

2

Saya memiliki beberapa papan B model raspberry pi 3 dengan adaptor wifi eksternal yang terpasang padanya. Tujuan saya adalah:

  1. Buat jaringan mesh perangkat RSP.
  2. Setiap dewan RSP harus memiliki AP mereka sendiri dan klien (ponsel / laptop) dapat terhubung dengannya.
  3. Klien dari AP ini dapat bergerak di sekitar rentang perangkat RSP yang berbeda dan masih harus dapat berbicara satu sama lain, apa pun AP yang mereka hubungkan (seperti mereka terhubung ke satu jaringan)

Untuk memperbaiki # 1: Saya menggunakan batman-adv pada antarmuka wifi internal (wlan0) RSP3 dan sekarang semua perangkat dapat melakukan ping satu sama lain melalui antarmuka bat0 virtual mereka.

Untuk # 2: Saya menggunakan adaptor wifi eksternal (wlan1) dan dengan bantuan hostapd dan dnsmasq, saya dapat menjalankan AP (ssid yang sama dan saluran pada semua AP) pada setiap papan RSP. Saya juga telah menghubungkan beberapa perangkat seluler di berbagai AP sekarang.

Masalah pemblokiran utama saya adalah tujuan # 3:

Untuk mengatasi ini, saya mencoba membuat jembatan antara antarmuka wlan0 dan wlan1 dengan alat bridge-utils. Namun di RSP, kedua antarmuka tidak mendukung modul WDS. Jadi sampai sekarang saya tidak dapat membuat jaringan tunggal untuk semua klien. Saya juga mencoba menggunakan IP forwarding antara wlan0 dan wlan1 tapi saya tidak bisa melakukan ping klien yang terhubung dari perangkat RSP lainnya.

Apakah ada pendekatan lain (selain WDS) untuk membuat jaringan tunggal untuk semua klien yang terhubung?

Mahesh Jena
sumber

Jawaban:

1

Anda tidak mengatakan apa-apa tentang konfigurasi IP, dan konfigurasi IP adalah apa yang Anda butuhkan untuk mengatasi masalah # 3.

Pilih paket IP Anda dengan hati-hati

Seluruh jaringan Anda akan memiliki "skema IP umum". Misalnya, banyak jaringan yang digunakan 192.168.*.*.

Kamu bisa memakai ruang privat IP apa pun, baik dalam IPv4 dan IPv6 . Pastikan itu tidak akan bertabrakan dengan jaringan lain yang digunakan pengguna Anda atau RPis mungkin terhubung ke.

Misalnya, katakanlah kita akan menggunakan jaringan global 172.17.*.*. Perhatikan bahwa "semua-nol" ( 172.17.*.0 ) dan "semua-yang" ( 172.17.*.255 ) alamat dicadangkan (mis. tidak dapat digunakan) dalam jaringan dan semua subdivisinya.

Kami harus membagi jaringan besar ini menjadi jaringan yang lebih kecil yang setiap RPi akan gunakan secara independen. Salah satu subnetwork akan digunakan untuk komunikasi antara RPis, untuk itu kami akan tetap menyimpannya 172.17.0.* Untuk kita sendiri. Kita bisa menggunakan nomor lain, tetapi menggunakan 0 memudahkan untuk mengkonfigurasi Pis dengan skrip.

Bagian "publik" dari jaringan akan menggunakan IP 172.17.xxx.* dimana xxx unik untuk setiap RPi. Sekali lagi, untuk memudahkan skrip, kita mulai dari 1, dan bertambah.

RPis membutuhkan IP masuk kedua jaringan. Untuk jaringan publik, ini praktik terbaik untuk digunakan .254, jadi itu akan menjadi 172.17.xxx.254. Tetapi bagaimana dengan jaringan pusat? RPi akan digunakan sebagai gateway ke jaringan 172.17.xxx.* oleh APIS lainnya. Masuk akal untuk mencocokkan alamat IP dengan jaringan yang di-relay: kami akan gunakan 172.17.0.xxx.

Siapkan Pis

  1. Konfigurasikan RPis Anda wlan1 (itu publik antarmuka) untuk menggunakan tetap AKU P 172.17.xxx.254 dimana xxx unik di antara semua RPis Anda dan bukan 0 (lihat di atas). Netmask adalah 255.255.255.0.

  2. Konfigurasikan RPis Anda wlan0 (itu pribadi antarmuka) untuk menggunakan tetap AKU P 172.17.0.xxx dimana xxx sama seperti di atas. Netmask adalah 255.255.255.0.

  3. Di setiap RPi, jalankan skrip berikut, setelah diganti $END dengan jumlah RP yang Anda gunakan:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    for i in $(seq 1 $END); do route add -net 172.17.$i.0 netmask 255.255.255.0 gw 172.17.0.$i; done
    iptables -A FORWARD -s 172.17.0.0/16 -d 172.17.0.0/16 -j ACCEPT
    

TL; DR, kami melakukan hal berikut: kami memilih jaringan besar, di sini 172.17.0.0/16. Kami membaginya dalam 255 jaringan yang lebih kecil: 172.17.xxx.0/24. Kami menyimpan 0 untuk diri kita sendiri, dan memberikan semua nomor lain kepada pengguna. Kemudian, kami memberi tahu RPis untuk mentransfer paket yang menuju komputer lain ke RPi "gateway" yang sesuai.

Beri tahu perangkat pengguna untuk mencari di tempat yang tepat

Saya berasumsi Anda menggunakan dnsmasq sebagai server DHCP untuk jaringan publik. Agar perangkat pengguna terkonfigurasi dengan benar, Anda harus mengubah pengaturannya.

  1. Mengatur DHCP sehingga melayani alamat dalam rentang yang disesuaikan dengan jaringan, I.E. 172.17.xxx.1 untuk 172.17.xxx.253.

  2. Tambahkan rute statis bagian DHCP dari konfigurasi dnsmasq (sekali lagi ganti xxx tepat):

    dhcp-option=121,16.172.17.0.0,172.17.xxx.254
    

Menggunakan rute statis menghindari menimpa gateway default klien Anda. Dengan cara ini, jika mereka masih terhubung ke jaringan lain (mis. Laptop dengan Ethernet terpasang), mereka seharusnya tidak memiliki masalah.

Pastikan Anda menguji ini dengan 1 atau 2 Pis dan 1 atau 2 klien sebelum melakukan komitmen untuk mengatur semua RPis Anda.

Nathan.Eilisha Shiraini
sumber
maaf karena terlambat membalas. sayangnya solusi Anda tidak berfungsi untuk masalah ini. namun saya menggunakan arahan Anda untuk memecahkan masalah.
Mahesh Jena
Ya, setidaknya saya sedikit membantu ^^ Untuk membantu orang lain yang mencoba melakukan hal serupa, dapatkah Anda memposting apa yang sebenarnya Anda lakukan sebagai jawaban, dan menandainya diterima? Terima kasih.
Nathan.Eilisha Shiraini
1

Ada beberapa hal yang perlu diubah agar ini berfungsi.

  • Pertama, Anda seharusnya tidak membuat setiap wlan1 AP RPI berada di saluran yang sama karena akan menyebabkan interferensi yang signifikan di antara mereka.

  • Anda juga tidak perlu menggunakan WDS. Lihat penjelasan ini untuk informasi lebih lanjut tentang ini. Pastikan setiap AP memiliki SSID, jenis keamanan WiFi, dan kata sandi yang sama.

  • Anda memiliki ide yang tepat karena Anda perlu membuat jembatan antara wlan0 dan wlan1 pada setiap RPI. Saya tidak terbiasa dengan utilitas jembatan, tetapi mungkin akan lebih baik untuk hanya mengikuti instruksi membuat jembatan di dokumentasi batman-adv sini .

Hal lain yang perlu diperhatikan adalah Anda mungkin tidak perlu menjalankan dnsmasq untuk layanan DHCP. Klien Anda bisa menggunakan tautan alamat IPv6 lokal yang ditetapkan secara otomatis untuk berkomunikasi satu sama lain melalui LAN nirkabel ini.

EDIT: Kesalahanku. Sepertinya membuat jembatan yang benar menggunakan wlan di RPI3 tidak didukung. Sepertinya ada solusi potensial menggunakan NAT sini . Juga dimungkinkan jika Anda menghubungkan dua adapter WiFi eksternal yang mendukung koneksi bridge.

davekats
sumber
terima kasih @davekats atas tanggapan cepatnya. saya akan menerapkan 2 poin 1 Anda dan memperbarui hasilnya. untuk saran ke-3, saya sudah mencoba membuat jembatan antara bat0 dan wlan1 sementara dalam panduan cepat contoh mereka telah menyebutkan port bat0 dan eth0 (ethernet) untuk menghubungkan satu perangkat dan bukan antarmuka nirkabel yang bisa menjadi AP yang menghubungkan klien lain. Namun, membuat jembatan antara wlan1 dan bat0 gagal di RSP dengan kesalahan: Tidak Didukung (-95).
Mahesh Jena
@ MaheshJena kesalahanku! Saya akan mengedit jawaban saya. Kedengarannya tidak ada solusi jembatan sejati untuk wlan menggunakan antarmuka nirkabel bawaan RPI 3.
davekats
@ MaheshJena Bisakah Anda memperbarui .. apakah Anda dapat menerapkan roaming wifi / handover di rpi?
Suyash Singh