Сеть на Raspberry Pi: IP, Wi-Fi и порты
Pi подключён к сети — значит, к нему можно обращаться откуда угодно в доме, а он может ходить в интернет и общаться с другими устройствами.
Сеть — это то, что превращает одинокую плату в часть умного дома. Без понимания IP и портов проекты так и останутся "локальными игрушками".
Каждое устройство в сети имеет IP-адрес — что-то вроде 192.168.1.42. Это домашний "почтовый адрес" Pi. Программы на Pi слушают определённые порты — это как номера квартир по одному адресу: SSH живёт на порту 22, веб-сервер — на 80.
Представь большой дом, где живёт много семей. У дома один адрес на улице — это IP. Но письмо нужно доставить не "в дом вообще", а в конкретную квартиру — это порт. Почтальон-роутер привозит пакет данных по адресу, а внутри уже смотрит номер квартиры и относит его нужной программе. Поэтому на одном Pi одновременно могут работать и веб-сервер, и SSH, и игровой сервер — они просто слушают разные порты и не мешают друг другу. Для подростка это знакомая ситуация: один телефон, но в нём и мессенджер, и игра, и музыка работают одновременно, каждое приложение на своём "канале".
Зачем вообще всё это знать? Без сети твой проект — вещь в себе: он работает, но ты не можешь к нему обратиться с дивана или со школы. Как только Pi получает адрес в сети, он становится доступным: можно зайти на него по SSH с ноутбука, открыть страницу управления с телефона, забрать данные с датчиков на другой компьютер. Сеть — это мост между платой и остальным миром.
Как работает под капотом
Интернет
|
[ Роутер ] раздаёт локальные IP
|--- Ноутбук 192.168.1.10
|--- Телефон 192.168.1.20
|--- Raspberry Pi 192.168.1.42
|
порт 22 -> SSH
порт 80 -> веб-сервер
Узнать IP-адрес Pi можно командой:
hostname -I
# 192.168.1.42
# посмотреть, какие порты слушаются
ss -tlnp
# проверить, доступно ли устройство в сети
ping 192.168.1.42
Роутер выдаёт устройствам локальные адреса (начинаются с 192.168 или 10.). Они видны только внутри дома. Чтобы достучаться до Pi из интернета, нужны отдельные шаги (проброс портов или туннель) — и это тема для осторожного обращения с безопасностью.
Как роутер вообще раздаёт адреса? За это отвечает протокол DHCP. Когда новое устройство подключается к Wi-Fi, оно как бы кричит в сеть: "Мне нужен адрес!" — а роутер отвечает: "Держи, ты теперь 192.168.1.42, аренда на сутки". Поэтому после перезагрузки роутера Pi может получить уже другой номер. Чтобы этого избежать, в настройках роутера адрес можно закрепить за устройством навсегда по его уникальному MAC-адресу — это как личный паспорт сетевой карты, который не меняется.
А ещё у каждого пакета данных есть не только адрес получателя, но и адрес отправителя — иначе ответ некуда было бы прислать. Грубая схема обмена выглядит так:
Телефон 192.168.1.20 Pi 192.168.1.42:80
| запрос: "дай страницу" |
| -------------------------> |
| ответ: HTML страницы |
| <------------------------- |
браузер рисует страницу сервер слушает порт 80
Локальные адреса важны ещё и тем, что они приватные: миллионы домашних сетей по всему миру используют одни и те же диапазоны 192.168.x.x, и это не вызывает конфликтов, потому что наружу, в большой интернет, эти адреса не выходят. Роутер прячет всю домашнюю сеть за одним внешним адресом — этот трюк называется NAT.
Частые ошибки
- IP-адрес меняется. Роутер может выдать новый адрес после перезагрузки — закрепи его (статический/резерв) или используй имя
.local. - Порт занят. Если два сервиса хотят один порт — будет ошибка "address already in use".
- Открыли Pi в интернет без защиты. Это опасно: смени пароль и не выставляй наружу лишнего.
- Путают локальный и внешний адрес. С телефона в той же сети Pi доступен по 192.168.x.x, но этот адрес бесполезен, когда ты не дома.
- Файрвол молча режет порт. Сервис запущен, но не отвечает — проверь, не блокирует ли соединение брандмауэр.
Best practices
- Закрепи за Pi постоянный локальный IP в настройках роутера.
- Используй имя хоста
.local, чтобы не зависеть от смены IP. - Не открывай Pi в интернет, пока не разберёшься в безопасности.
- Записывай, какой сервис на каком порту живёт — через месяц это легко забыть.
- Проверяй доступность через
pingпрежде чем винить программу: иногда проблема в самой сети.
Итоги. В сети у Pi есть IP-адрес (домашний адрес) и порты (номера квартир для сервисов). Адреса раздаёт роутер по протоколу DHCP, поэтому их стоит закреплять; локальные адреса приватны и видны только дома, а наружу сеть смотрит через NAT. Дальше запустим на Pi собственный веб-сервер.