Сеть на 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 собственный веб-сервер.

Проверьте себя
1. Что такое порт в контексте сети?
AФизический разъём USB
BНомер, по которому к одному IP-адресу адресуются разные сервисы (SSH на 22, веб на 80)
CСкорость интернета
DИмя устройства
2. Чем особенны локальные IP-адреса вида 192.168.x.x?
AОни видны из любой точки интернета
BОни работают только внутри домашней сети и не видны напрямую из интернета
CЭто адреса в облаке
DОни никогда не меняются