Raspberry Pi + CentOS = Wi-Fi ہاٹ سپاٹ (یا سرخ ٹوپی والا رسبری راؤٹر)

Raspberry سنگل بورڈ PC پر مبنی Wi-Fi رسائی پوائنٹس بنانے کے بارے میں انٹرنیٹ پر بہت زیادہ معلومات موجود ہیں۔ ایک اصول کے طور پر، اس کا مطلب ہے Raspbian آپریٹنگ سسٹم کو استعمال کرنا جو Raspberry کا ہے۔

RPM پر مبنی نظاموں کا پیروکار ہونے کے ناطے، میں اس چھوٹے سے معجزے سے گزر نہیں سکتا تھا اور اپنے پیارے CentOS کو اس پر آزما نہیں سکتا تھا۔

مضمون CentOS آپریٹنگ سسٹم پر مبنی Raspberry Pi 5 Model B+ سے 3GHz/AC Wi-Fi روٹر بنانے کے لیے ہدایات فراہم کرتا ہے۔ اس میں کئی معیاری لیکن بہت کم معلوم چالیں ہوں گی، اور بونس کے طور پر - اضافی Wi-Fi آلات کو Raspberry سے جوڑنے کے لیے ایک ڈرائنگ، جس سے یہ بیک وقت کئی طریقوں (2,4+5GHz) میں کام کر سکے۔

Raspberry Pi + CentOS = Wi-Fi ہاٹ سپاٹ (یا سرخ ٹوپی والا رسبری راؤٹر)
(آزادانہ طور پر دستیاب تصاویر کا مرکب)

آئیے فوراً نوٹ کرلیں کہ کچھ کائناتی رفتار کام نہیں کریں گی۔ میں اپنے Raspberry سے زیادہ سے زیادہ 100 Mbps نچوڑتا ہوں، اور یہ میرے انٹرنیٹ فراہم کنندہ کی رفتار کا احاطہ کرتا ہے۔ آپ کو اتنے سست اے سی کی ضرورت کیوں ہے، اگر تھیوری میں آپ N پر بھی آدھا گیگا بٹ حاصل کر سکتے ہیں؟ اگر آپ نے خود سے یہ سوال پوچھا ہے، تو آٹھ بیرونی اینٹینا کے ساتھ اصلی راؤٹر خریدنے کے لیے اسٹور پر جائیں۔

0. آپ کو کیا ضرورت ہو گی

  • درحقیقت، "رسبری پروڈکٹ" خود کیلیبر کی ہے: Pi 3 ماڈل B+ (5GHz رفتار اور چینلز کو حاصل کرنے کے لیے)؛
  • اچھا microSD>= 4GB؛
  • لینکس اور مائیکرو ایس ڈی ریڈر/رائٹر کے ساتھ ورک سٹیشن؛
  • لینکس میں کافی مہارتوں کی دستیابی، مضمون ایک تربیت یافتہ Geek کے لیے ہے۔
  • Raspberry اور Linux کے درمیان وائرڈ نیٹ ورک (eth0) کنیکٹوٹی، مقامی نیٹ ورک پر DHCP سرور چلانا اور دونوں آلات سے انٹرنیٹ تک رسائی۔

آخری نکتہ پر ایک چھوٹا سا تبصرہ۔ "کون سا پہلے آیا، انڈا یا..." انٹرنیٹ تک رسائی کا کوئی سامان نہ ہونے کی صورت میں وائی فائی راؤٹر کیسے بنایا جائے؟ آئیے اس تفریحی مشق کو مضمون کے دائرہ کار سے باہر چھوڑ دیں اور صرف یہ مان لیں کہ Raspberry مقامی نیٹ ورک سے تار کے ذریعے منسلک ہے اور اسے انٹرنیٹ تک رسائی حاصل ہے۔ اس صورت میں، ہمیں "رسبری" کو ترتیب دینے کے لیے اضافی ٹی وی اور ایک ہیرا پھیری کی ضرورت نہیں ہوگی۔

1. CentOS انسٹال کریں۔

پروجیکٹ ہوم پیج

اس مضمون کو لکھنے کے وقت، ڈیوائس پر CentOS کا چل رہا ورژن 32 بٹ ہے۔ ورلڈ وائڈ ویب پر کہیں مجھے یہ رائے ملی کہ 64 بٹ اے آر ایم آرکیٹیکچر پر اس طرح کے OS کی کارکردگی 20٪ تک کم ہو گئی ہے۔ میں اس لمحے کو بغیر کسی تبصرہ کے چھوڑ دوں گا۔

لینکس پر، کرنل کے ساتھ کم سے کم تصویر ڈاؤن لوڈ کریں "-راسباری پائی-اور اسے مائیکرو ایس ڈی پر لکھیں:

# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz | 
  dd of=/dev/mmcblk0 bs=4M
# sync

تصویر کا استعمال شروع کرنے سے پہلے، ہم اس سے SWAP پارٹیشن کو ہٹا دیں گے، روٹ کو پوری دستیاب والیوم تک پھیلائیں گے اور SELinux سے چھٹکارا حاصل کریں گے۔ الگورتھم آسان ہے: لینکس پر روٹ کی ایک کاپی بنائیں، مائیکرو ایس ڈی سے پہلے (/boot) کے علاوہ تمام پارٹیشنز کو حذف کریں، ایک نیا روٹ بنائیں اور کاپی سے اس کے مواد واپس کریں۔

مطلوبہ اعمال کی مثال (شدید کنسول آؤٹ پٹ)

# mount /dev/mmcblk0p3 /mnt
# cd /mnt
# tar cfz ~/pi.tgz . --no-selinux
# cd
# umount /mnt

# parted /dev/mmcblk0

(parted) unit s
(parted) print free
Model: SD SC16G (sd/mmc)
Disk /dev/mmcblk0: 31116288s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start     End        Size       Type     File system     Flags
        63s       2047s      1985s               Free Space
 1      2048s     1370111s   1368064s   primary  fat32           boot, lba
 2      1370112s  2369535s   999424s    primary  linux-swap(v1)
 3      2369536s  5298175s   2928640s   primary  ext4
        5298176s  31116287s  25818112s           Free Space

(parted) rm 3
(parted) rm 2

(parted) print free
Model: SD SC16G (sd/mmc)
Disk /dev/mmcblk0: 31116288s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start     End        Size       Type     File system  Flags
        63s       2047s      1985s               Free Space
 1      2048s     1370111s   1368064s   primary  fat32        boot, lba
        1370112s  31116287s  29746176s           Free Space

(parted) mkpart
Partition type?  primary/extended? primary
File system type?  [ext2]? ext4
Start? 1370112s
End? 31116287s

(parted) set
Partition number? 2
Flag to Invert? lba
New state?  on/[off]? off

(parted) print free
Model: SD SC16G (sd/mmc)
Disk /dev/mmcblk0: 31116288s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start     End        Size       Type     File system  Flags
        63s       2047s      1985s               Free Space
 1      2048s     1370111s   1368064s   primary  fat32        boot, lba
 2      1370112s  31116287s  29746176s  primary  ext4

(parted) quit

# mkfs.ext4 /dev/mmcblk0p2 
mke2fs 1.44.6 (5-Mar-2019)
/dev/mmcblk0p2 contains a swap file system labelled '_swap'
Proceed anyway? (y,N) y
Discarding device blocks: done                            
Creating filesystem with 3718272 4k blocks and 930240 inodes
Filesystem UUID: 6a1a0694-8196-4724-a58d-edde1f189b31
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done   

# mount /dev/mmcblk0p2 /mnt
# tar xfz ~/pi.tgz -C /mnt --no-selinux

روٹ پارٹیشن کے مواد کو کھولنے کے بعد، اس میں کچھ تبدیلیاں کرنے کا وقت آگیا ہے۔

SELinux کو غیر فعال کریں۔ /mnt/etc/selinux/config:

SELINUX=disabled

ترمیم کرنا /mnt/etc/fstab، اس میں پارٹیشنز کے بارے میں صرف دو اندراجات چھوڑ کر: boot (/boot، کوئی تبدیلی نہیں) اور روٹ (ہم UUID ویلیو کو تبدیل کرتے ہیں، جو لینکس پر blkid کمانڈ کے آؤٹ پٹ کا مطالعہ کرکے معلوم کیا جاسکتا ہے):

UUID=6a1a0694-8196-4724-a58d-edde1f189b31  /     ext4    defaults,noatime 0 0
UUID=6938-F4F2                             /boot vfat    defaults,noatime 0 0

آخر میں، ہم کرنل بوٹ پیرامیٹرز کو تبدیل کرتے ہیں: ہم روٹ پارٹیشن کے لیے ایک نیا مقام متعین کرتے ہیں، ڈیبگنگ کی معلومات کے آؤٹ پٹ کو غیر فعال کرتے ہیں اور (اختیاری طور پر) کرنل کو نیٹ ورک انٹرفیس پر IPv6 ایڈریس تفویض کرنے سے منع کرتے ہیں:

# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt

یہاں مواد ہے /mnt/cmdline.txt درج ذیل شکل میں (ایک لائن بغیر ہائفن کے):

root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1

ہو گیا:

# cd
# umount /mnt
# sync

ہم مائیکرو ایس ڈی کو "رسبری" میں دوبارہ ترتیب دیتے ہیں، اسے لانچ کرتے ہیں اور ssh (root/centos) کے ذریعے اس تک نیٹ ورک تک رسائی حاصل کرتے ہیں۔

2. CentOS ترتیب دینا

پہلی تین غیر متزلزل حرکتیں: پاس ورڈ, آپ کو اپ ڈیٹ, ربوٹ.

ہم نیٹ ورک کا انتظام دیتے ہیں۔ نیٹ ورک:

# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off

ایک فائل بنائیں (ڈائریکٹریوں کے ساتھ) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

ہم "raspberry" کو دوبارہ بوٹ کرتے ہیں اور دوبارہ ssh کے ذریعے اس تک نیٹ ورک تک رسائی حاصل کرتے ہیں (IP ایڈریس تبدیل ہو سکتا ہے)۔ استعمال کیا جاتا ہے پر توجہ دینا /etc/resolv.conf، جو پہلے نیٹ ورک مینیجر کے ذریعہ تخلیق کیا گیا تھا۔ لہذا، حل کے ساتھ مسائل کی صورت میں، اس کے مواد میں ترمیم کریں. استعمال کریں۔ سسٹم حل شدہ ہم نہیں کریں گے.

ہم "غیر ضروری" کو ہٹاتے ہیں، OS کی مرمت اور لوڈنگ کو تیز کرتے ہیں:

# systemctl set-default multi-user.target
# yum remove GeoIP Network* aic* alsa* cloud-utils-growpart 
  cronie* dhc* firewal* initscripts iwl* kexec* logrotate 
  postfix rsyslog selinux-pol* teamd wpa_supplicant

جس کی ضرورت ہے۔ کرون اور جو بلٹ میں ہضم نہیں ہوتا سسٹمڈ ٹائمر، جو غائب ہے اسے قائم کر سکتا ہے۔ / ویار / لاگ- اور کے ذریعے دیکھو صحافی. اگر آپ کو لاگ ہسٹری کی ضرورت ہے (بطور ڈیفالٹ، معلومات صرف اس وقت سے محفوظ کی جاتی ہیں جب سسٹم شروع ہوتا ہے):

# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf

بنیادی خدمات کے ذریعہ IPv6 کے استعمال کو غیر فعال کریں (اگر ضرورت ہو)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

"رسبری" پر وقت کی مطابقت ایک اہم چیز ہے۔ چونکہ ریبوٹ پر گھڑی کی موجودہ حالت کو بچانے کے لیے کوئی ہارڈ ویئر کی صلاحیت نہیں ہے، اس لیے ہم آہنگی کی ضرورت ہے۔ اس کے لیے ایک بہت اچھا اور تیز ڈیمون ہے۔ chrony - پہلے سے انسٹال اور خود بخود شروع ہوتا ہے۔ آپ NTP سرورز کو قریبی سرورز میں تبدیل کر سکتے ہیں۔

/etc/chrony.conf:

server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst

ٹائم زون سیٹ کرنے کے لیے ہم استعمال کریں گے۔ چال. چونکہ ہمارا مقصد 5GHz فریکوئنسی پر چلنے والا Wi-Fi روٹر بنانا ہے، اس لیے ہم سرپرائزز کے لیے پیشگی تیاری کریں گے۔ ریگولیٹر:

# یم انفارمیشن سی آر ڈی اے
خلاصہ: 802.11 وائرلیس نیٹ ورکنگ کے لیے ریگولیٹری تعمیل ڈیمون

یہ بری ڈیزائن، ٹائم زون کی بنیاد پر بھی، 5GHz فریکوئنسی اور "اعلی" نمبر والے چینلز کے استعمال (روس میں) "ممنوع" کرتا ہے۔ چال یہ ہے کہ براعظموں/شہروں کے نام استعمال کیے بغیر ٹائم زون متعین کیا جائے، یعنی اس کے بجائے:

# timedatectl set-timezone Europe/Moscow

ہم دبائیں:

# timedatectl set-timezone Etc/GMT-3

اور نظام کے بالوں کے انداز کو حتمی شکل دیتے ہیں:

# hostnamectl set-hostname router

/root/.bash_profile:

. . .

# User specific environment and startup programs

export PROMPT_COMMAND="vcgencmd measure_temp"
export LANG=en_US.UTF-8
export PATH=$PATH:$HOME/bin

3. CentOS ایڈ آنز

سب کچھ جو اوپر کہا گیا تھا Raspberry Pi پر "ونیلا" CentOS کو انسٹال کرنے کے لئے مکمل ہدایات پر غور کیا جا سکتا ہے. آپ کو ایک ایسے پی سی کے ساتھ ختم ہونا چاہئے جو (دوبارہ) 10 سیکنڈ سے بھی کم وقت میں بوٹ ہوتا ہے، 15 میگا بائٹس سے کم ریم اور 1.5 گیگا بائٹس مائیکرو ایس ڈی استعمال کرتا ہے (اصل میں ایک نامکمل /بوٹ کی وجہ سے 1 گیگا بائٹ سے کم ہے، لیکن آئیے ایماندار بنیں)۔

اس سسٹم پر Wi-Fi ایکسیس پوائنٹ سافٹ ویئر انسٹال کرنے کے لیے، آپ کو معیاری CentOS ڈسٹری بیوشن کی صلاحیتوں کو قدرے بڑھانا ہوگا۔ سب سے پہلے، آئیے بلٹ ان وائی فائی اڈاپٹر کے ڈرائیور (فرم ویئر) کو اپ گریڈ کریں۔ پروجیکٹ ہوم پیج کہتا ہے:

Raspberry 3B اور 3B+ پر وائی فائی

Raspberry PI 3B/3B+ فرم ویئر فائلوں کو CentOS پروجیکٹ کے ذریعہ تقسیم کرنے کی اجازت نہیں ہے۔ آپ مسئلے کو سمجھنے، فرم ویئر حاصل کرنے اور وائی فائی سیٹ اپ کرنے کے لیے درج ذیل مضامین کا استعمال کر سکتے ہیں۔

CentOS پروجیکٹ کے لیے جو چیز ممنوع ہے وہ ہمارے لیے ذاتی استعمال کے لیے ممنوع نہیں ہے۔ ہم CentOS میں ڈسٹری بیوشن وائی فائی فرم ویئر کو براڈ کام ڈویلپرز (وہ وہی نفرت انگیز بائنری بلابز...) کے متعلقہ فرم ویئر سے بدل دیتے ہیں۔ یہ، خاص طور پر، آپ کو ایکسیس پوائنٹ موڈ میں AC استعمال کرنے کی اجازت دے گا۔

Wi-Fi فرم ویئر اپ گریڈڈیوائس ماڈل اور موجودہ فرم ویئر ورژن تلاش کریں:

# journalctl | grep $(basename $(readlink /sys/class/net/wlan0/device/driver))
Jan 01 04:00:03 router kernel: brcmfmac: F1 signature read @0x18000000=0x15264345
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43455-sdio.bin for chip 0x004345(17221) rev 0x000006
Jan 01 04:00:03 router kernel: usbcore: registered new interface driver brcmfmac
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Mar  1 2015 07:29:38 version 7.45.18 (r538002) FWID 01-6a2c8ad4
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 7.14.8 Compiler: 1.24.9 ClmImport: 1.24.9 Creation: 2014-09-02 03:05:33 Inc Data: 7.17.1 Inc Compiler: 1.26.11 Inc ClmImport: 1.26.11 Creation: 2015-03-01 07:22:34 

ہم دیکھتے ہیں کہ فرم ویئر ورژن 7.45.18 مورخہ 01.03.2015/XNUMX/XNUMX ہے، اور درج ذیل نمبروں کو یاد رکھیں: 43455 (brcmfmac43455-sdio.bin)۔

موجودہ Raspbian تصویر ڈاؤن لوڈ کریں۔. سست لوگ تصویر کو مائیکرو ایس ڈی پر لکھ سکتے ہیں اور وہاں سے فائلوں کو فرم ویئر کے ساتھ لے جا سکتے ہیں۔ یا آپ لینکس میں امیج کے روٹ پارٹیشن کو ماؤنٹ کر سکتے ہیں اور وہاں سے اپنی ضرورت کی کاپی کر سکتے ہیں:

# wget https://downloads.raspberrypi.org/raspbian_lite_latest
# unzip -p raspbian_lite_latest > raspbian.img
# fdisk -l raspbian.img
Disk raspbian.img: 2 GiB, 2197815296 bytes, 4292608 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x17869b7d

Device        Boot  Start     End Sectors  Size Id Type
raspbian.img1        8192  532480  524289  256M  c W95 FAT32 (LBA)
raspbian.img2      540672 4292607 3751936  1.8G 83 Linux

# mount -t ext4 -o loop,offset=$((540672 * 512)) raspbian.img /mnt
# cp -fv /mnt/lib/firmware/brcm/*43455* ...
'/mnt/lib/firmware/brcm/brcmfmac43455-sdio.bin' -> ...
'/mnt/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob' -> ...
'/mnt/lib/firmware/brcm/brcmfmac43455-sdio.txt' -> ...
# umount /mnt

نتیجے میں آنے والی وائی فائی اڈاپٹر فرم ویئر فائلوں کو کاپی کرکے ڈائرکٹری میں "رسبری" سے تبدیل کیا جانا چاہیے۔ /usr/lib/firmware/brcm/

ہم مستقبل کے راؤٹر کو ریبوٹ کرتے ہیں اور اطمینان سے مسکراتے ہیں:

# journalctl | grep $(basename $(readlink /sys/class/net/wlan0/device/driver))
Jan 01 04:00:03 router kernel: brcmfmac: F1 signature read @0x18000000=0x15264345
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43455-sdio.bin for chip 0x004345(17221) rev 0x000006
Jan 01 04:00:03 router kernel: usbcore: registered new interface driver brcmfmac
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Feb 27 2018 03:15:32 version 7.45.154 (r684107 CY) FWID 01-4fbe0b04
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 9.10.105 Compiler: 1.29.4 ClmImport: 1.36.3 Creation: 2018-03-09 18:56:28 

ورژن: 7.45.154 مورخہ 27.02.2018/XNUMX/XNUMX۔

اور یقینا EPEL:

# cat > /etc/yum.repos.d/epel.repo << EOF
[epel]
name=Epel rebuild for armhfp
baseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/
enabled=1
gpgcheck=0
EOF

# yum clean all
# rm -rfv /var/cache/yum
# yum update

4. نیٹ ورک کنفیگریشن اور آگے چیلنجز

جیسا کہ ہم نے اوپر اتفاق کیا، "رسبری" مقامی نیٹ ورک سے "تار" کے ذریعے منسلک ہے۔ آئیے فرض کریں کہ فراہم کنندہ بالکل اسی طرح انٹرنیٹ تک رسائی فراہم کرتا ہے: عوامی نیٹ ورک پر ایڈریس DHCP سرور (شاید MAC بائنڈنگ کے ساتھ) کے ذریعہ متحرک طور پر جاری کیا جاتا ہے۔ اس صورت میں، رسبری کے حتمی سیٹ اپ کے بعد، آپ کو صرف فراہم کنندہ کی کیبل کو اس میں "پلگ" کرنے کی ضرورت ہے اور آپ کا کام ہو گیا۔ اجازت کا استعمال کرتے ہوئے systemd-networkd - ایک الگ مضمون کا موضوع اور یہاں زیر بحث نہیں ہے۔

Raspberry کا Wi-Fi انٹرفیس ایک مقامی نیٹ ورک ہے، اور بلٹ ان ایتھرنیٹ اڈاپٹر (eth0) بیرونی ہے۔ آئیے مقامی نیٹ ورک کو مستحکم طور پر نمبر دیں، مثال کے طور پر: 192.168.0.0/24۔ Raspberry ایڈریس: 192.168.0.1. ایک DHCP سرور بیرونی نیٹ ورک (انٹرنیٹ) پر کام کرے گا۔

نام کی مطابقت کا مسئلہ и مشہور گوئٹے مالا پروگرامر - دو پریشانیاں جو کسی ایسے شخص کا انتظار کرتی ہیں جو سسٹمڈ ڈسٹری بیوشنز میں نیٹ ورک انٹرفیس اور خدمات کو ترتیب دیتا ہے۔

متوازی افراتفری (گیتی انتشار)Lennart Pottering نے اپنا پروگرام مرتب کیا ہے۔ systemd بہت اچھا. یہ systemd دوسرے پروگراموں کو اتنی تیزی سے لانچ کرتا ہے کہ وہ ریفری کے سیٹی کے جھٹکے سے سنبھلنے کا وقت نہیں پاتے، ٹھوکر کھاتے اور شروع میں ہی گر جاتے ہیں، یہاں تک کہ ان کی رکاوٹ کا راستہ بھی شروع نہیں ہوتا۔

لیکن سنجیدگی سے، سسٹمڈ OS کے آغاز پر شروع کیے گئے عمل کا جارحانہ متوازی ہونا تجربہ کار ترتیب وار LSB ماہرین کے لیے ایک قسم کا "گدھے کا پل" ہے۔ خوش قسمتی سے، اس "متوازی افراتفری" کو ترتیب دینا آسان نکلا، اگرچہ ہمیشہ واضح نہیں ہوتا۔

ہم مستقل ناموں کے ساتھ دو ورچوئل برج انٹرفیس بناتے ہیں: لین и ان. ہم Wi-Fi اڈاپٹر کو پہلے والے سے اور eth0 "رسبری" کو دوسرے سے "کنیکٹ" کریں گے۔

/etc/systemd/network/lan.netdev:

[NetDev]
Name=lan
Kind=bridge

/etc/systemd/network/lan.network:

[Match]
Name=lan

[Network]
Address=192.168.0.1/24
IPForward=yes

/etc/systemd/network/wan.netdev:

[NetDev]
Name=wan
Kind=bridge
#MACAddress=xx:xx:xx:xx:xx:xx

/etc/systemd/network/wan.network:

[Match]
Name=wan

[Network]
DHCP=ipv4
IPForward=yes

IPForward=ہاں روٹنگ کو فعال کرنے کے لیے sysctl کے ذریعے کرنل کو اشارہ کرنے کی ضرورت کو ختم کرتا ہے۔
MACA ایڈریس = آئیے غیر تبصرہ کریں اور اگر ضروری ہو تو تبدیل کریں۔

پہلے ہم eth0 کو "کنیکٹ" کرتے ہیں۔ ہم "یکسانیت کا مسئلہ" کو یاد رکھتے ہیں اور اس انٹرفیس کا صرف MAC ایڈریس استعمال کرتے ہیں، جو معلوم کیا جا سکتا ہے، مثال کے طور پر، اس طرح:

# cat /sys/class/net/eth0/address 

ہم تخلیق کرتے ہیں۔ /etc/systemd/network/eth.network:

[Match]
MACAddress=b8:27:eb:xx:xx:xx

[Network]
Bridge=wan

ہم پچھلی کنفیگریشن فائل eth0 کو ڈیلیٹ کرتے ہیں، Raspberry کو ریبوٹ کرتے ہیں اور اس تک نیٹ ورک تک رسائی حاصل کرتے ہیں (IP ایڈریس میں تبدیلی کا امکان ہے):

# rm -fv /etc/systemd/network/eth0.network
# reboot

5.DNSMASQ

وائی ​​فائی تک رسائی پوائنٹس بنانے کے لیے، کچھ بھی میٹھے جوڑے کو ہرا نہیں سکتا dnsmasq + میزبان ابھی تک اس کا پتہ نہیں چلا۔ میر ے خیال سے.

اگر کوئی بھول جائے تو...میزبان - یہ وہ چیز ہے جو وائی فائی اڈاپٹر کو کنٹرول کرتی ہے (خاص طور پر، یہ انہیں ورچوئل سے منسلک کرنے کا خیال رکھے گا لین "raspberries")، وائرلیس کلائنٹس کو مجاز اور رجسٹر کرتا ہے۔

dnsmasq - کلائنٹس کے نیٹ ورک اسٹیک کو ترتیب دیتا ہے: آئی پی ایڈریسز، ڈی این ایس سرورز، ڈیفالٹ گیٹ وے اور اسی طرح کی خوشیاں۔

آئیے dnsmasq کے ساتھ شروع کریں:

# yum install dnsmasq

پیٹرن /etc/resolv.conf:

nameserver 1.1.1.1
nameserver 1.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 77.88.8.8
nameserver 77.88.8.1
domain router.local
search router.local

اپنی پسند کے مطابق اس میں ترمیم کریں۔

minimalistic /etc/dnsmasq.conf:

domain-needed
bogus-priv
interface=lan
bind-dynamic
expand-hosts
domain=#
dhcp-range=192.168.0.100,192.168.0.199,255.255.255.0,24h
conf-dir=/etc/dnsmasq.d

یہاں "جادو" پیرامیٹر میں ہے۔ پابند متحرک، جو dnsmasq ڈیمون کو سسٹم پر ظاہر ہونے تک انتظار کرنے کو کہتا ہے۔ انٹرفیس = lan، اور آغاز کے بعد قابل فخر تنہائی سے بیہوش نہیں ہونا۔

# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f

6. HOSTAPD

اور آخر میں، جادو ہوسٹاپ ڈی کنفیگریشنز۔ مجھے اس میں کوئی شک نہیں ہے کہ کوئی ان قیمتی لکیروں کی تلاش میں اس مضمون کو پڑھ رہا ہے۔

hostapd انسٹال کرنے سے پہلے، آپ کو "یکسانیت کے مسئلے" پر قابو پانے کی ضرورت ہے۔ بلٹ ان Wi-Fi اڈاپٹر wlan0 اضافی USB Wi-Fi آلات کو جوڑنے پر آسانی سے اپنا نام wlan1 میں بدل سکتا ہے۔ لہذا، ہم انٹرفیس کے ناموں کو درج ذیل طریقے سے ٹھیک کریں گے: ہم (وائرلیس) اڈاپٹرز کے لیے منفرد نام لے کر آئیں گے اور انہیں MAC ایڈریسز سے منسلک کریں گے۔

بلٹ ان وائی فائی اڈاپٹر کے لیے، جو اب بھی wlan0 ہے:

# cat /sys/class/net/wlan0/address 
b8:27:eb:xx:xx:xx

ہم تخلیق کرتے ہیں۔ /etc/systemd/network/wl0.link:

[Match]
MACAddress=b8:27:eb:xx:xx:xx

[Link]
Name=wl0

اب ہمیں یقین ہو جائے گا۔ WL0 - یہ بلٹ ان وائی فائی ہے۔ اس بات کو یقینی بنانے کے لیے ہم راسبیری کو ریبوٹ کرتے ہیں۔

انسٹال کریں:

# yum install hostapd wireless-tools

کنفیگریشن فائل /etc/hostapd/hostapd.conf:

ssid=rpi
wpa_passphrase=1234567890

channel=36

country_code=US

interface=wl0
bridge=lan

driver=nl80211

auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

macaddr_acl=0

hw_mode=a
wmm_enabled=1

# N
ieee80211n=1
require_ht=1
ht_capab=[MAX-AMSDU-3839][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]

# AC
ieee80211ac=1
require_vht=1
ieee80211d=0
ieee80211h=0
vht_capab=[MAX-AMSDU-3839][SHORT-GI-80]
vht_oper_chwidth=1
vht_oper_centr_freq_seg0_idx=42

ایک لمحے کے لیے بھی بھولے بغیر ریاستی ایمرجنسی کمیٹی، ہمیں درکار پیرامیٹرز کو تبدیل کریں اور دستی طور پر فعالیت کی جانچ کریں:

# hostapd /etc/hostapd/hostapd.conf

hostapd انٹرایکٹو موڈ میں شروع ہوگا، کنسول پر اپنی حالت نشر کرے گا۔ اگر کوئی خرابی نہیں ہے، تو وہ کلائنٹ جو AC موڈ کو سپورٹ کرتے ہیں رسائی پوائنٹ سے رابطہ کر سکیں گے۔ hostapd کو روکنے کے لیے - Ctrl-C۔

سسٹم اسٹارٹ اپ میں hostapd کو فعال کرنا باقی ہے۔ اگر آپ معیاری کام کرتے ہیں (systemctl enable hostapd)، تو اگلے ریبوٹ کے بعد آپ کو تشخیص کے ساتھ "خون میں گھومنے والا" شیطان مل سکتا ہے۔انٹرفیس wl0 نہیں ملا" "متوازی افراتفری" کے نتیجے میں، ہوسٹاپ ڈی نے وائرلیس اڈاپٹر کو تلاش کرنے والے دانا سے زیادہ تیزی سے شروع کیا۔

انٹرنیٹ علاج سے بھرا ہوا ہے: ڈیمون (کئی منٹ) شروع کرنے سے پہلے جبری ٹائم آؤٹ سے لے کر دوسرے ڈیمون تک جو انٹرفیس کی ظاہری شکل پر نظر رکھتا ہے اور (دوبارہ) ہوسٹ پیڈ کو شروع کرتا ہے۔ حل کافی قابل عمل ہیں، لیکن بہت بدصورت ہیں۔ ہم مدد کے لیے عظیم کو پکارتے ہیں۔ systemd اس کے "اہداف" اور "کاموں" اور "انحصارات" کے ساتھ۔

ڈسٹری بیوشن سروس فائل کو کاپی کریں۔ /etc/systemd/system/hostapd.service:

# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system

اور اس کے مواد کو درج ذیل شکل تک کم کر دیں:

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=sys-subsystem-net-devices-wl0.device
BindsTo=sys-subsystem-net-devices-wl0.device

[Service]
Type=forking
PIDFile=/run/hostapd.pid
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf -P /run/hostapd.pid -B

[Install]
WantedBy=sys-subsystem-net-devices-wl0.device

اپ ڈیٹ کردہ سروس فائل کا جادو نئے ہدف - wl0 انٹرفیس کے ساتھ hostapd کے متحرک پابند ہونے میں ہے۔ جب انٹرفیس ظاہر ہوتا ہے، ڈیمون شروع ہوتا ہے؛ جب یہ غائب ہوجاتا ہے، یہ رک جاتا ہے۔ اور یہ سب آن لائن ہے - سسٹم کو ریبوٹ کیے بغیر۔ USB Wi-Fi اڈاپٹر کو Raspberry سے منسلک کرتے وقت یہ تکنیک خاص طور پر مفید ہوگی۔

اب آپ کر سکتے ہیں:

# systemctl enable hostapd
# reboot

7. آئی پی ٹیبلز

"کیا؟؟؟" © ہاں، ہاں! کوئی نہیں۔ systemd. کوئی نیا فینگل کمبائنز نہیں (شکل میں فائر والڈڈ)، جو ایک ہی چیز کو انجام دیتا ہے۔

آئیے اچھے پرانے کو استعمال کریں۔ iptables، جس کی خدمات، شروع ہونے کے بعد، نیٹ ورک کے قواعد کو کرنل میں لوڈ کر دیں گی اور خاموشی سے بغیر رہائشی اور وسائل استعمال کیے بند کر دی جائیں گی۔ systemd ایک خوبصورت ہے IPMasquerade=، لیکن ہم پھر بھی ایڈریس ٹرانسلیشن (NAT) اور فائر وال کو iptables کے سپرد کریں گے۔

انسٹال کریں:

# yum install iptables-services
# systemctl enable iptables ip6tables

میں iptables کنفیگریشن کو بطور اسکرپٹ اسٹور کرنے کو ترجیح دیتا ہوں (مثال کے طور پر):

#!/bin/bash

#
# Disable IPv6
#
ip6tables --flush
ip6tables --delete-chain

ip6tables --policy INPUT   DROP
ip6tables --policy FORWARD DROP
ip6tables --policy OUTPUT  DROP

ip6tables-save > /etc/sysconfig/ip6tables
systemctl restart ip6tables

#
# Cleaning
#
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#
# Loopback, lan
#
iptables -A INPUT -i lo  -j ACCEPT
iptables -A INPUT -i lan -j ACCEPT

#
# Ping, Established
#
iptables -A INPUT -p icmp  --icmp-type echo-request    -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# NAT
#
iptables -t nat -A POSTROUTING -o wan -j MASQUERADE

#
# Saving
#
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables

ہم مندرجہ بالا اسکرپٹ پر عمل کرتے ہیں اور Raspberry کے ساتھ نئے وائرڈ SSH کنکشن قائم کرنے کی صلاحیت کھو دیتے ہیں۔ یہ ٹھیک ہے، ہم نے ایک وائی فائی روٹر بنایا ہے، جس تک رسائی "بذریعہ انٹرنیٹ" بطور ڈیفالٹ ممنوع ہے - اب صرف "اوور دی ایئر"۔ ہم فراہم کنندہ کی ایتھرنیٹ کیبل کو جوڑتے ہیں اور سرفنگ شروع کرتے ہیں!

8. بونس: +2,4GHz

جب میں نے اوپر بیان کردہ ڈرائنگ کا استعمال کرتے ہوئے پہلا Raspberry راؤٹر اسمبل کیا تو میں نے اپنے گھر میں بہت سے ایسے گیجٹس دریافت کیے جو اپنی Wi-Fi ڈیزائن کی حدود کی وجہ سے "رسبری" کو بالکل نہیں دیکھ سکتے تھے۔ روٹر کو 802.11b/g/n میں کام کرنے کے لیے دوبارہ ترتیب دینا غیر کھیل تھا، کیونکہ اس معاملے میں زیادہ سے زیادہ رفتار "اوور دی ایئر" 40 Mbit سے زیادہ نہیں تھی، اور میرا پسندیدہ انٹرنیٹ فراہم کنندہ مجھے 100 (کیبل کے ذریعے) پیش کرتا ہے۔

درحقیقت، مسئلے کا حل پہلے ہی ایجاد ہو چکا ہے: دوسرا وائی فائی انٹرفیس جو 2,4 گیگا ہرٹز کی فریکوئنسی پر کام کرتا ہے، اور دوسرا رسائی پوائنٹ۔ قریبی اسٹال پر میں نے پہلی نہیں بلکہ دوسری USB وائی فائی "سیٹی" خریدی۔ بیچنے والے کو چپ سیٹ، اے آر ایم لینکس کرنل کے ساتھ مطابقت اور اے پی موڈ میں کام کرنے کے امکان کے بارے میں سوالات نے اذیت دی تھی (وہ شروع کرنے والا پہلا شخص تھا)۔

ہم بلٹ ان وائی فائی اڈاپٹر کے ساتھ مشابہت سے "سیٹی" کو ترتیب دیتے ہیں۔

سب سے پہلے، آئیے اس کا نام بدل دیں۔ WL1:

# cat /sys/class/net/wlan0/address 
b0:6e:bf:xx:xx:xx

/etc/systemd/network/wl1.link:

[Match]
MACAddress=b0:6e:bf:xx:xx:xx

[Link]
Name=wl1

ہم نئے وائی فائی انٹرفیس کا نظم و نسق ایک علیحدہ ہوسٹاپ ڈی ڈیمون کے سپرد کریں گے، جو سسٹم میں سختی سے بیان کردہ "سیٹی" کی موجودگی پر منحصر ہو کر شروع اور رک جائے گا: wl1۔

کنفیگریشن فائل /etc/hostapd/hostapd2.conf:

ssid=rpi2
wpa_passphrase=1234567890

#channel=1
#channel=6
channel=11

interface=wl1
bridge=lan

driver=nl80211

auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

macaddr_acl=0

hw_mode=g
wmm_enabled=1

# N
ieee80211n=1
require_ht=1
ht_capab=[HT40][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]

اس فائل کا مواد براہ راست USB وائی فائی اڈاپٹر کے ماڈل پر منحصر ہے، لہذا ایک عام کاپی/پیسٹ آپ کو ناکام کر سکتا ہے۔

ڈسٹری بیوشن سروس فائل کو کاپی کریں۔ /etc/systemd/system/hostapd2.service:

# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service

اور اس کے مواد کو درج ذیل شکل تک کم کر دیں:

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=sys-subsystem-net-devices-wl1.device
BindsTo=sys-subsystem-net-devices-wl1.device

[Service]
Type=forking
PIDFile=/run/hostapd2.pid
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd2.conf -P /run/hostapd2.pid -B

[Install]
WantedBy=sys-subsystem-net-devices-wl1.device

جو کچھ باقی ہے وہ ہے hostapd کی ایک نئی مثال کو فعال کرنا:

# systemctl enable hostapd2

بس! خود "سیٹی" اور "رسبری" کو کھینچیں، اپنے آس پاس کے وائرلیس نیٹ ورکس کو دیکھیں۔

اور آخر میں، میں آپ کو USB Wi-Fi اڈاپٹر کے معیار اور Raspberry کی پاور سپلائی کے بارے میں خبردار کرنا چاہتا ہوں۔ منسلک "ہاٹ سیٹی" بعض اوقات قلیل مدتی برقی پریشانیوں کی وجہ سے "رسبری منجمد" کا سبب بن سکتی ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں