یه روش ارزونقیمت و کارآمد برای افزایش رنج شبکه وایفای، استفاده از Wi-Fi Extender رزبری پای است. Wi-Fi Extender کمی با نقطه دسترسی(Access point) وایفای فرق داره.
تفاوت اصلی که میان این دو تا وجود داره اینه که Wi-Fi Extender به جای اتصال به شبکه اترنت به آداپتور Wi-Fi وصل میشه.
به همین دلیل، برای انجام این پروژه به دو تا آداپتور Wi-Fi نیاز دارین که یکیشون باید بتونه از نقطه اتصال پشتیبانی کنه. زمانی که به Wi-Fi repeater وصل میشید سرعت اتصال به شبکه کمی پایین میاد. مهمترین دلیلش هم اینه که باید منتظر بمونین تا ترافیک به اتصال اولیه Wi-Fi منتقل بشه و دوباره از RPi تکرار بشه تا دستگاهها بتونن بهش وصل بشن!
تجهیزات مورد نیاز
یه فهرست از تمامی قطعات و تجهیزاتی که برای این Wi-Fi Extender رزبری پای استفاده شده تهیه کردم. برای کامل کردن این پروژه به دو تا دانگل وایفای(Wi-Fi dongle) نیاز دارین و حداقل یکیشون باید بتونه به عنوان نقطه دسترسی عمل کنه.
لیست قطعات مورد نیاز
رزبری پای
کارت حافظه MicroSD و یا اگه از نسخه قدیمی Pi استفاده میکنین یه SD card
آداپتور برق
دانگل وای فای (درصورتی که رزبری پای مورد استفاده شما Wi-Fi داخلی داره فقط به 1 دانگل نیاز دارید در غیر اینصورت داشتن 2 دانگل Wi-Fi برای این پروژه الزامیه.)
راهاندازی Wi-Fi Extender
برای راهاندازی Wi-Fi Extender رزبری پای از پکیج dnsmasq استفاده میکنیم، این پکیج برای اتصالات ما هم به عنوان DNS و هم به عنوان سرور DHCP عمل میکنه و به همین دلیل خیلی از کارای سخت تو این پروژه رو انجام میده. از پکیج hostapd هم باید استفاده کنیم، این پکیج به ما اجازه میده یکی از ماژولهای Wi-Fi رو به عنوان نقطه دسترسی راهاندازی کنیم.
یادتون باشه برای انجام این پروژه به یه روتر فعال Wi-Fi نیاز دارید تا بهش وصل بشد و یک دستگاه اترنت نیاز دارید تا اتصال Wi-Fi رو بهش منتقل کنید.
قبل از نصب و راهاندازی پکیجها، با اجرای دو فرمان زیر در ترمینال (terminal) RPi رو به روزرسانی میکنیم:
sudo apt-get update sudo apt-get upgrade
پس از به روزرسانی RPi میتوانیم پکیجهای dnsmasq و hostapd رو نصب کنیم. برای نصب این دو تا پکیج فرمان زیر رو اجرا کنین:
sudo apt-get install dnsmasq sudo apt-get install hostapd
قبل از هر چیز، اتصال wlan0 رو راهاندازی کنید. در غیر این صورت با اجرای فرمان زیر در RPi پوشه wpa-supplicant.conf را باز کنین:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
فرمان زیر رو به این فایل اضافه کنین، حتماً SSID رو با نام شبکهای که قصد دارید بهش وصل شید و PSK value رو با رمز عبور شبکه جایگزین کنین:
network={ ssid="networkname" psk="networkpassword" }
پس از وارد کردن نام و رمزعبور شبکه فایل رو با زدن کلید CTRL + x و سپس Y و در نهایت ENTER ذخیره کنین.
پس از نصب پکیجها و راهاندازی Wi-Fi، برای تعیین یه آدرس IP ثابت برای رزبری پای dhcpcd رو راهاندازی میکنیم. برای تغییر پوشه dhcpcd.conf فرمان زیر رو اجرا کنین:
sudo nano /etc/dhcpcd.conf
در انتهای این فایل باید خطوط زیر را اضافه کنیم. این فرمان اتصال wlan1 رو راهاندازی میکنه.
interface wlan1 static ip_address=192.168.220.1/24 static routers=192.168.220.0
برای ذخیره کردن و خروج از این پوشه کلید CTRL + x و سپس Y و در نهایت ENTER رو بزنین.
الان باید سرویس dhcpd رو Restart کنیم تا تمامی تغییراتی که در پیکربندی ایجاد شدن بارگذاری بشن:
sudo service dhcpcd restart
حالا باید پیکربندی hostapd رو تغییر بدین. برای انجام این کار باید با اجرای فرمان زیر در RPi خود، فایل پیکربندی رو ویرایش کنین:
sudo nano /etc/hostapd/hostapd.conf
در این فایل باید خطوط زیر را بنویسیم، این خطوط نحوه تعامل ما با دستگاه wlan رو مشخص میکنن. تنها خطوطی که باید نگرانشون باشین خط =ssid و خط =wpa_passphrase هست.
نکته: ممکنه مجبور بشین خط =driver رو به بهترین driver برای دستگاهتون تغییر بدین، چون بعضی از دستگاههای Wi-Fi شرایط و الزامات خاصی برای driver دارن. برای اینکه متوجه بشید چه driverی مناسب شماست بهتره از گوگل کمک بگیرین.
interface=wlan1 driver=nl80211 hw_mode=g channel=6 ieee80211n=1 wmm_enabled=1 ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] macaddr_acl=0 ignore_broadcast_ssid=0 auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP ssid=Pi3-Extender wpa_passphrase=raspberry
حتماً wpa_passphrase رو به رمز عبور خودتون تغییر بدین و یک رمز قوی انتخاب کنید تا دیگران نتونن به Wi-Fi Extender شما وصل بشن. برای ذخیره و خروج از این پوشه کلید CTRL + x و سپس Y و در نهایت ENTER رو بزنین.
در مرحله بعد باید فایل hostapd رو در /etc/default/ و /etc/init.d/ تغییر بدین. Hostapd برای پیدا کردن فایل پیکربندی جدید که قبلاً ایجاد کرده بویم این فایلها رو میخونه.
برای ویرایش اولین پوشه فرمان زیر رو اجرا کنید:
sudo nano /etc/default/hostapd
در این پوشه، باید خط زیر رو پیدا و جایگزین کنیم.
این خط رو پیدا کنین:
#DAEMON_CONF=""
با این خط جایگزین کنین:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
برای ذخیره و خروج از این پوشه کلید CTRL + x و سپس Y و در نهایت ENTER رو بزنین.
حالا باید دومین فایل پیکربندی رو ویرایش کنیم، این فایل در پوشه init.d
قرار داره. برای تغییر این پوشه فرمان زیر رو اجرا کنین:
sudo nano /etc/init.d/hostapd
در این پوشه، باید خط زیر رو پیدا و جایگزین کنیم. این خط رو پیدا کنین:
#DAEMON_CONF=
با این خط جایگزین کنین:
DAEMON_CONF=/etc/hostapd/hostapd.conf
برای ذخیره و خروج از این پوشه کلید CTRL + x و سپس Y و در نهایت ENTER رو بزنین.
پس از راهاندازی hostapd باید dnsmasq رو راهاندازی کنیم. قبل از تغییر پیکربندی dnsmasq حالت پیشفرض اول را به یه جای جدید منتقل میکنیم. برای انجام این کار میتونیم از فرمان زیر کمک بگیریم:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
حالا که جای پوشه اصلی پیکربندی رو تغییر دادیم میتوانیم فایل پیکربندی خودمون رو ایجاد کنیم. برای ایجاد و تغییر فایل جدید فرمان زیر رو اجرا کنین:
sudo nano /etc/dnsmasq.conf
خطوط زیر رو به این فایل اضافه کنین، این خطوط برای dnsmasq مشخص میکنه که چجوری اتصالات رو کنترل کنه.
interface=wlan1 # Use interface wlan1 listen-address=192.168.220.1 # Specify the address to listen on bind-interfaces # Bind to the interface server=8.8.8.8 # Use Google DNS domain-needed # Don't forward short names bogus-priv # Drop the non-routed address spaces. dhcp-range=192.168.220.50,192.168.220.150,12h # IP range and lease time
برای ذخیره و خروج از این پوشه کلید CTRL + x و سپس Y و در نهایت ENTER رو بزنین.
حالا باید RPi رو پیکربندی کنیم تا تمامی ترافیک رو از اتصال wlan1
به اتصال wlan0
منتقل کنه. اول باید RPi رو از طریق فایل پیکربندی sysctl.conf فعال کنیم، پس با اجرای فرمان زیر اون رو ویرایش میکنیم:
sudo nano /etc/sysctl.conf
در این فایل باید خط زیر رو پیدا کنید و هشتگ (#) رو حذف کنید:
#net.ipv4.ip_forward=1
با این خط جایگزین کنین یا بصورت دستی (#) رو حذف کنید:
net.ipv4.ip_forward=1
برای ذخیره و خروج از این پوشه کلید CTRL + x و سپس Y و در نهایت ENTER رو بزنین.
حالا چون نمیخواهیم منتظر بمونیم تا در boot بعدی فعال بشه، برای اینکه بلافاصله فعال بشه فرمان زیر رو اجرا میکنیم:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
حالا که IPv4 فعال شده میتونیم یک NAT رو بین رابط wlan0
و رابط wlan1
پیکربندی کنیم. در واقع این کُل ترافیک را از نقطه دسترسی ما به اتصال اترنت منتقل میکنه. برای اضافه کردن قوانین جدید به iptables فرمان زیر رو اجرا کنین:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE sudo iptables -A FORWARD -i wlan0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
نکته: اگه هنگام وارد کردن خطوط بالا به خطا مواجه شدین با استفاده از sudo reboot، پای رو reboot کنین.
البته iptableها هر بار بعد از اینکه RPi راهاندازی (boot) میشه، خالی میشن، بنابراین باید قوانین جدیدمون رو یه جایی ذخیره کنیم تا بعد هر بار راهاندازی بارگذاری بشن. برای ذخیره مجموعه قوانین جدید فرمان زیر رو اجرا کنین:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
حالا که قوانین جدید رو ذخیره کردیم باید کاری کنیم تا بعد از هر بار راهاندازی این فایل بارگذاری بشه. آسونترین روش برای انجام این کار باید فایل rc.local رو ویرایش کنیم. برای ویرایش فایل فرمان زیر رو اجرا کنین:
sudo nano /etc/rc.local
حالا باید خط زیر رو به این فایل اضافه کنیم. این خط حتما باید بالای exit 0
قرار بگیره. این خط در واقع تنظیمات فایل iptables.ipv4.nat رو میخونه و اونا رو در iptables بارگذاری میکنه.
این خط رو پیدا کنین:
exit 0
دستور زیر رو که مشاهده میکنید در بالای دستور exit 0
اضافه کنید.
iptables-restore < /etc/iptables.ipv4.nat
برای ذخیره و خروج از این پوشه کلید CTRL + x و سپس Y و در نهایت ENTER رو بزنین.
حالا تنها کاری که باید بکنیم اینه که دو تا سرویس رو به کار بندازیم و در systemctl اونا رو فعال کنیم. دو فرمان زیر رو اجرا کنین:
sudo service hostapd start sudo service dnsmasq start
حالا باید یک RPi Wireless Access Point داشته باشین، برای اینکه مطمئن بشین به خوبی کار میکنه با استفاده از SSID و WPA Passphrase یکی از دستگاههای بیسیمتون رو به نقطه دسترسی جدیدتون وصل کنید.
برای اینکه مطمئن بشین همه چیز به خوبی کار میکنه بهتره RPi رو مجدداً راهاندازی (reboot) کنین. اینجوری میتونین مطمئن بشین که وقتی RPi مجدداً راهاندازی میشه همه چیز به خوبی کار میکنه. برای راهاندازی مجدد RPi فرمان زیر رو اجرا کنین:
sudo reboot
راهاندازی Wi-Fi Extender رزبری پای
حالا شما باید یک Raspberry Pi Wi-Fi Extender کاملاً آماده به کار داشته باشید. اگر با مشکلی برخورد کردید یا بازخوردی در رابطه با این آموزش دارید، میتونید در بخش نظرات، سوال و نظرتون رو مطرح کنید.