Значна частина переваг Raspberry Pi (RPi) в його малому розмірі. Багато з цих переваг губляться, коли потрібно підключити зовнішній дисплей, клавіатуру і мишу, хоча насправді з ними мало працюють. На попередніх заняттях ми розглядали, як отримати віддалений доступ до свого RPi. Тепер навчимося, як автоматично підключатися до мережі, в тому числі, до бездротової, і отримати статичну IP-адресу.
Огляд поточних мережевих налаштувань
Загальна схема підключення RPi до Інтернету через маршрутизатор виглядає таким чином:
RPi автоматично налаштований для отримання за замовчуванням IP-адреси від вашої провідної або бездротової мережі. Чому RPi потрібна IP-адреса? Ця адреса необхідна для того, щоб будь-який трафік, призначений для RPi, був в змозі знайти його в мережі.
Такий спосіб отримання IP-адреси називається DHCP-протоколом або динамічною конфігурацією хоста. Ця адреса часто називається динамічною IP-адресою. Маршрутизатори зазвичай роздають IP-адреси, але це не гарантує, що RPi щоразу буде отримувати одну і ту ж IP-адресу. Це викликає певні незручності, якщо ви намагаєтеся підключитися до RPi віддалено.
Для того, щоб дізнатися про IP-адресу, яка призначена RPi, а також про параметри мережі, підключіться в термінальному режимі до нього і введіть команду:
sudo ifconfig
Занотуйте вашу поточну IP-адресу, широкомовний (Bcast) IP і маску (Mask) підмережі. Вони виглядатимуть десь так:
inet addr: 192.168.0.2
Bcast: 192.168.0.255
Mask: 255.255.255.0
Тепер нам ще потрібно дізнатися про IP-адресу шлюза (gateway). В більшості випадків це буде внутрішня адреса вашого маршрутизатора. Введіть наступну команду:
sudo route -nee
і отримаєте адресу шлюзу:
Gateway: 192.168.0.1
Для налаштування локальної мереж використовують визначені діапазони ip-адрес і:
• 10.0.0.0 - 10.255.255.255 (маска підмережі 255.0.0.0 або /8)
• 172.16.0.0 - 172.31.255.255 (маска підмережі 255.240.0.0 або /12)
• 192.168.0.0 - 192.168.255.255 (маска підмережі 255.255.0.0 або /16)
Також для інтерфейсів типу петля (не використовується для обміну між вузлами мережі) зарезервований діапазон 127.0.0.0 - 127.255.255.255 (маска підмережі 255.0.0.0 або /8).
При цьому вибір конкретного діапазону залежить лише від розмірів вашої локальної мережі. Так, в домашніх або інших невеликих мережах зазвичай використовують діапазон адрес 192.168.0.1 -192.168.0.254, при якому можна підключати до 254 клієнтів.
Збереження існуючої мережевої конфігурації
Тепер переглянемо файл конфігурації мережевих інтерфейсів за допомогою команди:
cat /etc/network/interfaces
Рядок, наведений нижче, посилається на інтерфейс eth0 і підтверджує, що використовується DHCP:
iface eth0 inet dhcp
Буде хорошою звичкою зберігати файли конфігурації перед внесенням змін до них. Скористаємося вже відомою командою копіювання:
sudo cp /etc/network/interfaces /etc/network/interfaces.backup
Тепер можемо перейти до редагування, щоб надати статичну IP-адресу для RPi (c.54).
Встановлення статичної адреси Raspberry Pi в мережі
Відкриваємо файл конфігурації в редакторі nano:
sudo nano /etc/network/interfaces
Видаляємо рядок, який читається як
iface eth0 inet dhcp
Додаємо необхідні рядки, щоб отримати наступне (коментарі можна не друкувати):
# власний інтерфейс RPi
auto lo
iface lo inet loopback
# інтерфейс Ethernet зі статичною адресацією
iface eth0 inet static
# статична адреса вашого RPi, яку занотували раніше
address 192.168.0.2
# маска підмережі
netmask 255.255.255.0
# адреса вашої мережі (не обов'язково)
network 192.168.0.0
broadcast 192.168.0.255
# IP вашого шлюзу
gateway 192.168.0.1
# Додавання доступних DNS-серверів
dns-nameservers 8.8.8.8 8.8.4.4
Збережіть файл, натиснувши CTRL+X і вибравши Y для збереження змін.
Примітка: Нові версії Raspbian (починаючи з 5.05.2015) змушують RPi також мати другу динамічно призначену IP-адресу (з DHCP), навіть якщо ви вибрали статичний IP. Хоча цей IP лише один з доступних IP в мережі, це може призвести до конфліктів в ній, тому краще дану адресу видалити. Скористуйтеся командою hostname -I
, щоб побачити те, що малося на увазі, або щоб побачити, чи немає у вас аналогічної "проблеми".
Щоб запобігти присвоєння другої IP-адреси Raspbian є кілька рішень. Найзрозуміліше - просто видалити службу dhcpcd (клієнта DHCP) на RPi за допомогою наступного командного рядка:
sudo update-rc.d -f dhcpcd remove
Тепер dhcpcd не буде завантажуватися при запуску і всі налаштування /etc/network/interfaces будуть реалізовані належним чином.
Для відновлення використання служби dhcpcd введіть:
sudo update-rc.d dhcpcd defaults
Але дана служба надавала не лише динамічну IP-адресу, але й адреси DNS-серверів, а тепер ці адреси в RPi не будуть передаватися. Щоб виправити це, в файлі /etc/network/interfaces додається новий рядок з доступними серверами DNS (наприклад, публічними серверами Google):
dns-nameservers 8.8.8.8 8.8.4.4
Перезавантажуємо RPi з командою
sudo reboot
або з такою:
sudo shutdown -r now
Хоча, зазвичай, досить лише перезапустити мережеву службу командою:
sudo /etc/init.d/networking restart
Після перезапуску мережевої служби введіть наступне:
ping 192.168.0.1 -c5
Це буде пінг адреси вашого шлюзу або маршрутизатора. Ключ -c5 означає, що буде відправлено лише 5 пакетів, а отримана відповідь повинна показати час затримки проходження цих пакетів.
Налаштування Wi-Fi з'єднання за допомогою командного рядка (с.61)
Для початку необхідно правильно вибрати USB-модуль Wi-Fi. Для цього ознайомтесь зі списком перевірених на працездатність з RPi адаптерів Wi-Fi, або хоча б з цими 5 кращими Wi-Fi адаптерами, рекомендованими для використання в медіа центрах.
Під’єднання інших адаптерів розглядається в наступному підрозділі.
Точка доступу (Access Point – AP) може бути відкритою, тобто без парольного захисту, або використовуються протоколи доступу з шифрування WEP чи WPA/WPA2. Шифрування WEP є ненадійним і тому не рекомендується для регулярного використання. Пам’ятайте, що чим надійніше шифрування, тим більше ресурсів процесора необхідно, тому сповільнюється передача даних.
Для налаштування нам доведеться редагувати 2 файли: /etc/network/interfaces і /etc/wpa_supplicant/wpa_supplicant.conf. В першому описуються всі мережеві інтерфейси, а в в другому задається тип шифрування та паролі доступу.
Відкриваємо термінал і редагуємо файл мережевих інтерфейсів:
sudo nano /etc/network/interfaces
У файлі вже є один або кілька рядків. Змінюємо перший рядок (або додаємо, якщо такого ще немає) на:
auto wlan0
Потім внизу файла, якщо використовується DHCP, додаємо наступні рядки, вказуючи, що wlan буде методом підключення і що файл /etc/wpa_supplicant/wpa_supplicant.conf використовується як наш конфігураційний файл:
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Натискуємо CTRL+X, потім Y, щоб зберегти і закрити редактор.
Якщо будемо використовувати статичні IP-адреси, то файл /etc/network/interfaces матиме інший вигляд:
# /etc/network/interfaces
auto l0
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
dns-nameservers 8.8.8.8 8.8.4.4
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.3
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Переходимо до редагування файлу конфігурації:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Додайте наступний код (за умовчанням цей файл повинен бути порожнім, але якщо ви вже додали з'єднання, ви можете вибрати все, щоб видалити):
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
# Приклад для відкритої мережі
network={
ssid="Mikrotik_Academy"
scan_ssid=1
key_mgmt=NONE
}
# Приклад для шифрування WEP
network={
ssid="Mikrotik_Academy"
scan_ssid=1
key_mgmt=NONE
wep_key0="MIKROTIKWEPKEY"
}
# Приклад для шифрування WPA
network={
ssid="Mikrotik_Academy"
scan_ssid=1
key_mgmt=WPA-PSK
psk="MIKROTIKWPAKEY"
}
# Приклад для шифрування WPA2
network={
ssid="Mikrotik_Academy"
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
psk="MIKROTIK_RSN_KEY"
}
Змініть в наведеному змісті дані відповідно до параметрів вашої мережі, а пояснення окремих полів, які можуть бути в network={}, наведені в таблиці:
Тепер перезавантажуємо RPi:
sudo reboot
після якого (якщо конфігурація правильна) ваш Wi-Fi буде працювати. Якщо не працює, то уважно перевірте файли, які редагували.
Налаштування декількох Wi-Fi з'єднань на Raspberry Pi
Така необхідність виникає, наприклад, якщо ви працюєте зі своїм Raspberry Pi як дома, так і в університеті чи школі.
Для такої можливості відредагуємо файл /etc/wpa_supplicant/wpa_supplicant.conf, в якому додаємо id_str="academy" з параметрами доступу до точки доступу через шифрування WPA2 в університеті і id_str="home" з даними вашої домашньої точки доступу. Ваш файл повинен виглядати приблизно так:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
ssid="Mikrotik_Academy"
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
psk="MIKROTIK_RSN_KEY"
id_str="academy"
}
network={
ssid="HOME NETWORK NAME"
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
psk="HOME PASSWORD"
id_str="home"
}
Звичайно, якщо у вас дома використовується інший спосіб шифрування чи взагалі воно відсутнє, то необхідно змінити відповідні параметри, користуючись наведеними раніше прикладами.
Тепер налаштовуємо /etc/network/interfaces з iface academy inet static і iface home inet dhcp, щоб файл виглядав подібним чином:
auto lo
iface lo inet loopback
iface eth0 inet static
address <academy address_1>
netmask <academy netmask>
network <academy network>
broadcast <academy broadcast>
gateway <academy gateway>
dns-nameservers 8.8.8.8 8.8.4.4
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface academy inet static
address <academy address_2>
gateway <academy gateway>
netmask <academy netmask>
iface home inet dhcp
Пошук і встановлення драйвера USB-модуля Wi-Fi
RPi – це, перш за все, чудовий девайс для навчання, а яке навчання без експериментів, тому впевнений, що ви захочете спробувати під’єднатися з RPi до Wi-Fi через інші адаптери, які підримують Linux. В такому випадку велика ймовірність того. що вам доведеться шукати та встановлювати додаткові драйвери вручну.
Для встановлення коректної версії програмного забезпечення (ПЗ) для даного адаптера Wi-Fi необхідно знати тип адаптера. Більшість виробників таких адаптерів випускають свої пристрої на одних і тих же базових елементах, тому маркування на пристрої може дати мало інформації про те, яке ПЗ треба встановити.
Головне, це визначити тип базового кристалу, встановленого в адаптері Wi-Fi. Один з способів це зробити –приєднатися до RPi і перевірити кільцевий буфер ядра на наявність повідомлень про помилки.
Кільцевий буфер ядра – це область пам’яті, яка використовується ядром Linux для збереження інформації в зручному для читання форматі. Це дуже важлива особливість ОС, бо при її завантаженні текстові повідомлення пробігають на моніторі надто швидко, щоб встигнути їх проаналізувати. Вміст кільцевого буфера дозволяє зробити це пізніше.
Якщо адаптер Wi-Fi приєднаний до системи, але драйвери та утиліти для даного пристрою не встановлені, то ядро видає серію повідомлень про помилки, які будуть розміщені в кільцевому буфері. Для читання цих повідомлень на екрані можна скористатися командою dmesg, яку можна запустити з будь-якого терміналу.
Результатом виконання команди dmesg буде весь вміст кільцевого буфера, який відображатиме всі повідомлення системи. Нам необхідно обмежити цей список лише повідомленнями стосовно нашого адаптера, тому скористаємося командою:
dmesg | grep usb
Наприклад, ми визначити, що в системі використовується USB-адаптер Wi-Fi Realtek.
Уважно придивившись, можна помітити рядок, в якому вказаний виробник пристрою, тобто компанія, яка випускає базовий чіп для даного адаптера, Природньо, що нормальна робота даного адаптера Wi-Fi можлива лише з драйверами цієї компанії.
Якщо, використовуючи ключ usb, не вдалося нічого виявити, то можна скористатися командою:
sudo lsusb
яка виведе на екран список USB-пристроїв:
Для пошуку ПЗ адаптера скористаємося командою apt-cache. В нашому випадку командний рядок виглядатиме як:
apt-cache search realtek
Якщо за допомогою цієї команди не вдалося знайти необхідний драйвер, то можна спробувати встановити один з пакетів, які присутні в дистрибутиві Debian:
⦁ atmel-firmware – для пристроїв на основі чіпсета Atmel AT76C50X;
⦁ firmware-atheros – для пристроїв на основі чіпсета Atheros;
⦁ firmware-brcm80211 - для пристроїв на основі чіпсета Broadcom;
⦁ firmware-intelwimax - для пристроїв на основі чіпсета Intel’s WiMAX;
⦁ firmware-ipw2x00 - для пристроїв на основі чіпсета Intel Pro Wireless (в тому числі версії 2100, 2200 і 2915);
⦁ firmware-iwlwifi - для інших пристроїв на основі чіпсета Intel (в тому числі версії 3945, 4965 і 5000);
⦁ firmware-ralink - для пристроїв на основі чіпсета Ralink;
⦁ firmware-realtek - для пристроїв на основі чіпсета Realtek;
⦁ zd1211-firmware - для пристроїв на основі чіпсета ZyDAS 1211.
Встановити необхідне ПЗ можна, наприклад, за допомогою команди:
sudo apt-get install firmware-realtek
Якщо встановлене ПЗ не працює з даним адаптером, то його видаляють з:
sudo apt-get remove firmware-realtek
Після встановлення ПЗ, перш за все, необхідно переконатися, що USB-адаптер Wi-Fi працює, скориставшись командою iwlist.
Ця команда дозволить здійснити сканування точок доступу (якщо такі є), розміщених поблизу:
sudo iwlist scan | less
Буде відображений список бездротових мереж, доступних для RPi, а також детальний опис параметрів кожної з виявлених мереж.
Поточний стан бездротової мережі також можна визначити за допомогою команди iwconfig. Подібно до команди ifconfig, вона дозволяє визначити стан бездротової мережі і, при необхідності, налаштувати її параметри. На відміну від ifconfig, команда iwconfig спеціально розроблена для керування бездротовими мережами. Якщо набрати команду без параметрів:
iwconfig
то на екран консолі буде виведена поточна конфігурація мережі.
Додаткові інструменти налаштування мережевої конфігурації
Зручна консольна утиліта, яка дозволяє сортувати всі бездротові мережі, а також може бути використана для конфігурування. Для її встановлення запустіть команду:
sudo apt-get install wicd-curses
Буде встановлено чимало пакетів, але свою службу (демон) утиліта запускає в фоновому режимі. Для запуску введіть:
sudo wicd-curses
Якщо ви отримаєте повідомлення, що не виявлено жодної мережі, натисніть P (повинна бути прописна літера, тому використайте [SHIFT]p) і введіть wlan0 в полі для бездротового інтерфейсу, а потім натисніть F10 для збереження. Виконайте таку послідовність:
1. Натисніть R для оновлення списку.
2. Скористайтеся клавішами клавіатури для переміщення вверх і вниз списку.
3. Натисніть клавішу «Вправо» для конфігурування бездротового з’єднання.
4. Натисніть клавішу «Вниз» кілька разів, щоб вибрати "Automatically connect to this network" (Автоматично приєднатися до цієї мережі)
5. Натисніть знову клавішу «Вниз» кілька разів і введіть свій пароль в полі для нього.
6. Натисніть F10 для збереження
7. Повторіть все, починаючи з пункту 1 для будь-якої іншої мережі.
Тепер можете натиснути C для підключення до AP.
Завдання та питання для перевірки
1. Відкрийте в редакторі nano файл interfaces. Поясніть його зміст.
2. Відкрийте в редакторі nano файл wpa_supplicant.conf. Поясніть відмінність встановленого файлу і наведеного в даному уроці.
3. Якою командою перезапустити мережеву службу?
4. Як задати Raspberry Pi, щоб для серфінгу в Інтернеті вибиралися DNS-сервери Google?
5. Які функції команди allow-hotplug?
6. Поясніть значення параметрів при організації підключення до мережі Wi-Fi.
7. Виконайте команду dmesg | grep usb і поясніть результати її роботи.
8. Виконайте пошук драйвера адаптера Wi-Fi, якщо він на основі чіпсета Ralink.
9. За допомогою якої команди встановлюється програмне забезпечення для адаптера Wi-Fi?