تو کدها دنبال رویام میگشتم، گیر ماشینلرنینگ افتادم! آقای دیتا و دارای شوق برای دوآپس;
راهاندازی رزبریپای به عنوان روتر-اکسسپوینت به زبان ساده!
پیشنویس: اول از همه، نمیدونستم که چه عنوانی برای این نوشته انتخاب کنم. این کارایی که تو این نوشته گفته میشن همگی تو هر نسخهای از لینوکس رو هر کامپیوتری قابل اجرا هستن و فقط محدود به رزبریپای نیستین!
حالا بریم سر اصل مطلب! یکی از مشکلاتی که تو خونه داشتم این بود که برای هرکاری باید vpnمو قطع و وصل میکردم؛ یه سایت فیلتره، یه سایت تحریمه یا اینکه یه سایت دسترسی رو از خارج بسته (سایتای دانلود فیلم یا یسری درگاههای پرداخت مثال این سایتا هستن). از طرفی هم روشن بودن همیشگی vpn پدر باتری گوشیمو در میآورد؛ برای همین به این فکر افتادم که کاشکی یه دیوایسی باشه روش یه بار این تنظیمات رو ران کنم و خودش فازو بگیره برام.
یکمی سرچ کردم و بین خریدن یه روتر که از OpenWRT پشتیبانی کنه و یه رزبری که باهاش کلی کار دیگه هم میشد کرد، رزبری رو انتخاب کردم. طی یه عملیات سورپرایزی، دوستام برام رزبریپای خریدن و دیگه بهونهای شد که اینکار رو بکنم!
### پیشنیازها
اول از همه به یه سرور نیاز دارین که روش vpnتونو با پروتکل مورد نظرتون کانفیگ کنین. من خودم از wireguard استفاده میکنم. اینجا فرض میکنیم اسم اینترفیسش `wg0` هست و ip سرورتون `10.66.66.1` ه. روی مودم/روتر اصلیتون هم باید کانفیگ کنین که به رزبریتون همیشه آیپی ثابت (در مورد ما `192.168.10.100`) بده و آیپی خود مودمتون `192.168.10.1` هست؛ اینکار رو میتونین با وارد کردن mac address رزبریپایتون تو تنظیمات dhcp انجام بدین. فرض آخرمون هم اینه که رو رزبریپای یا همون دیوایسی که قراره اکسسپوینت بشه یه اینترفیس وایرلس هم به اسم `wlan0` دارین که امکان اکسسپوینت شدن هم داره. رنج آیپی `192.168.1.0/24` هم بازه و تو شبکه کسی کاریش نداره.
### کانفیگ هاتاسپات
حالا که همه پیشنیازا رو دارین، باید بریم سراغ کانفیگ خود رزبری. پکیجای `dnsmaq` و `hostapd` رو نصب کنین:
sudo apt install dnsmasq hostapd
و بعدش توی فایل `/etc/dhcpcd.conf` به اینترفیس وایرلستون هم آیپی ثابت بدین:
interface wlan0
static ip_address=192.168.1.1/24
nohook wpa_supplicant
و سرویس dhcpcd رو ریستارت کنین.
مرحله بعدی کانفیگ dnsmasq هست که رزبریتون بتونه به درخواستای dnsتون رسیدگی کنه، برای اینکار فایل ` /etc/dnsmasq.conf` رو باز کنین و این تنظیمات رو انجام بدین:
interface=wlan0 # Listening interface
dhcp-range=192.168.1.2,192.168.1.25,255.255.255.0,24h
# Pool of IP addresses served via DHCP
domain=wlan # Local wireless DNS domain
address=/rpi.wlan/192.168.1.1
# Alias for this router
except-interface=eth0
except-interface=wg0
داخل خود فایل مشخصه که هر کدوم از فیلدا برای چی هستن. بعد از سیو و خروج از فایل، سرویس dnsmasq رو هم ریستارت کنین.
قدم سوم، کانفیگ hostapd هست که بتونین باهاش دیوایستون رو اکسسپوینت کنین و بهش دسترسی داشته باشین. فایل `/etc/hostapd/hostapd.conf` رو باز کنین و این محتوا رو توش وارد کنین:
country_code=IR
interface=wlan0
ssid=Routed AP
hw_mode=g
channel=0
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=WIFI_PASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
خط اول در مورد اینکه تو کدوم کشور هستین به دیوایس وایرلستون اطلاع میده تا قوانین رگولاتوری اون منطقه رو رعایت کنین (دقیقا نمیدونم برای ایران چه حالات خاصی رو شامل میشه)
خط سوم اسم اکسسپوینتمون رو (همون اسمی که نمایش داده میشه برای ملت) رو تنظیم میکنیم. خط پایینیش میگیم رو چه باندی باشیم که اینجا رو g هستیم (اگه بخواین، میتونین دانگل وایرلسی بگیرین که از باند a هم پشتیبانی میکنه و رو فرکانس ۵گیگاهرتز برین که تداخل امواجش کمتره، فقط انگاری بردش هم کمتر میشه) و خط پایینش هم میگی رو چه کانالی باشیم. اینجا کانال رو ۰ گذاشتیم به این معنیه که خود سیستم یه کانال خالی پیدا کنه، ولی شما میتونین یه کانال دیگه ثابت انتخاب کنین. در آخر، خط ۱۱ پسوردمون رو تنظیم میکنیم. برای امنیت بیشتر یه پسورد به اندازه کافی طولانی و رندوم بذارین.
حالا کافیه که اجازهی فروارد کردن پکتها رو هم به سیستمتون بدین تا کار این مرحله تموم بشه! با این کامندها این کار انجام میشه:
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/97-wifi-ap.conf
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo netfilter-persistent save
با خط آخر تنظیمات فایروالتون هم سیو میشه و با هر ریستارت نمیپره. حالا ریستارت کنین و تست کنین که اینترنت داشته باشین (حواستون باشه که رزبریپای رو به مودم/روتر وصل کرده باشین.)
### کانفیگ ویپیان
کانفیگ کلاینت wireguardتون رو تو مسیر `/etc/wireguard/wg0.conf` سیو کنین و با دستور زیر سرویسشو enable کنین:
sudo systemctl enable wg-quick@wg0
بعدش فایروال رو کانفیگ کنین که بذاره ترافیکتون فروارد بشه:
sudo iptables -A FORWARD -i wlan0 -o wg0 -j ACCEPT
sudo iptables -A FORWARD -i wg0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
sudo netfilter-persistent save
حالا یبار سرویس رو بالا بیارین و تست کنین که کار میکنه یا نه:
sudo systemctl start wg-quick@wg0
وقتی از درست کار کردن ویپیان مطمئن شدین، نوبت اینه که بگیم ترافیک ایران رو از vpn رد نکنه D:
برای اینکار باید لیستی از آیپیهای ایران داشته باشیم و به iproute بگیم که اینا رو مستقیم رد کن. با اسکریپتی که هادی زحمتشو کشیده دوتا فایل دستورات iproute2 بسازین (gateway رو باید آدرس آیپی مودم یا همون `192.168.10.1` بذارین).
اول با کامند زیر وایرگارد رو بیارین پایین:
sudo systemctl stop wg-quick@wg0
سپس برای اینکه ترافیک ایران رو مستقیم رد کنین وقتی vpn میاد بالا، توی کانفیگ کلاینت وایرگاردتون زیر بخش Interface این دو خط رو اضافه کنین:
PostUp = ip -force -batch /path/to/route.add.txt;
PreDown = ip -force -batch /path/to/route.del.txt;
حالا برای تست دوباره وایرگارد رو بیارین بالا:
sudo wg-quick up wg0
(اینسری با خود wg-quick زدم که اگه مشکلی پیش اومد نشون بده)
برای اینکه بتونین تست کنین درست کار میکنه یا نه میتونین با دستور dig آیپیهای یه سایتی مثل ifconfig.io رو پیدا کنین و همه رو به فایلایی که توسط اسکریپته ساختین اضافه کنین (طبیعتا قبلش باید وایرگارد رو بیارین پایین تا روتها پاک بشن و دوباره اپلایشون کنین.) و تو سیستم خودتون که به رزبری وصله دستور زیر رو وارد کنین:
curl ifconfig.io
خروجی باید آیپی خودتون باشه، نه آیپی سرور.
دیگه همه چی تموم شد و حالا میتونین از رزبریتون همراه بقیه استفادههایی که میکردین، به عنوان یه روتر هم استفاده کنین! اگه از این پست راضی بودین، میتونین برای حمایت از من بهم مبلغی رو دونیت کنین https://idpay.ir/mavahedinia
پ.ن: منابعم این دوتا مطلبن: ۱. https://www.raspberrypi.org/documentation/configuration/wireless/access-point-routed.md و ۲. https://blog.stigok.com/2019/03/26/raspberry-pi-wifi-ap-wireguard-port-53.html. اگر در مورد کانفیگ وایرگارد هم سوالی بود تو کامنتا بپرسین یا به توییترم دایرکت بدین یا به mohammadamin در vahedinia.me ایمیل بزنین (هرکاری کردم اسپمرا اسکرپ نکنن =))))) جواب میدم.
مطلبی دیگر از این انتشارات
نصب آردوینو در لینوکس مینت
مطلبی دیگر از این انتشارات
برترین پلتفرمهای متنباز اینترنت اشیا
مطلبی دیگر از این انتشارات
ظهور اکوسیستم اینترنت اشیا