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
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
.
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
.
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.
Mengatur DHCP sehingga melayani alamat dalam rentang yang disesuaikan dengan jaringan, I.E. 172.17.xxx.1
untuk 172.17.xxx.253
.
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.
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.
sumber