Как сказано выше в аннотации к статье, подразумевается, что вы уже создали какой-то проект и имеете доступ к датчикам проекта по локальной сети. И теперь вам необходимо настроить доступ по интернету к вашему проекту.
Все настройки делаются на роутере локальной сети, в которую включен Raspberry Pi, так как вы подключаетесь к серверу на Raspberry Pi.
Настройка доступа из интернета к Raspberry Pi состоит из трех шагов:
- присвоить Raspberry Pi статический IP-адрес в локальной сети, чтобы этот адрес не менялся при перезагрузках и выключениях роутера. Без этого все последующие настройки просто теряют смысл
- настроить в роутере проброс портов (port forwarding) для компьютера с ранее настроенным статическим IP адресом
- зарегистрировать домен на каком-нибудь бесплатном динамическом DNS сервисе.
Первый шаг - присвоение статического адреса, можно реализовать двумя способами.
Первый вариант - использовать DHCP сервер. Ссылки на настройки статического адреса некоторых роутеров приведены ниже. В других случаях смотрите инструкцию по настройкам своего роутера.
Второй вариант, если DHCP сервера нет или отключен, - сделать настройки на самом Raspberry Pi. Raspberry Pi может быть подключен как кабелем, так и по Wi-Fi.
По второму варианту, - как настроить Raspberry Pi с системой Raspbian Jessie, описано в [1]. Автор рекомендует делать это на вновь установленной системе. Если это не так, то удалите ранее произведенные настройки. Этот способ можно использовать, если DHCP сервер на роутере не работает или по каким-то причинам выключен.
Отредактируйте файл dhcpcd.conf командой
sudo nano /etc/dhcpcd.conf
Допустим, ваш Raspberry Pi подключен кабелем к роутеру и вы хотите назначить ему IP адрес 192.168.0.10.
Прокрутите строки до конца файла и вставьте фрагмент
interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
где 192.168.0.1 - IP адрес роутера в локальной сети.
Если Raspberry Pi подключен по Wi-Fi и вы хотите задать ему IP адрес 192.168.1.200, то вставьте следующий фрагмент
interface wlan0
static ip_address=192.168.1.200/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
где 192.168.1.1 - IP адрес роутера в локальной сети.
Задаваемые адреса не должны быть заняты другими устройствами.
Сохраните изменения и перезагрузите микрокомпьютер. В терминале дайте команду hostname -I. Система выведет на экран назначенный вами IP адрес.
Я использую первый вариант - включаю в роутере DHCP сервер и настраиваю его. Мне кажется, это быстрее и удобнее. Эта настройка может называться - зарезервировать или зафиксировать IP адрес. Для этого потребуется MAC адрес компьютера. Чтобы узнать MAC адрес Raspberry Pi, откройте терминал и дайте команду ifconfig. В выводе команды вы увидите что-то наподобие HWaddr 90:2b:34:9e:9e:42. HWaddr - это MAC адрес компьютера (HardWare address в переводе адрес "железа").
В Raspbian Stretch MAC адрес - это параметр ether например ether b8:27:eb:f9:a1:11.
В Windows, чтобы узнать MAC адрес компьютера, запустите командную строку от имени администратора. Введите команду ipconfig /all. В параметрах адаптера найдите физический адрес - это и будет MAC адрес.
Второй шаг - надо настроить port forwarding (проброс портов). В инструкции к своему роутеру найдите, где расположены эти настройки. Эти настройки могут скрываться под разными пунктами меню. Например, в роутерах DIR-620, DIR-620A настройка port forwarding (проброс портов) находится в разделе Виртуальные серверы. Если меню на английском языке, то придется вооружиться словарем.
Конкретный пример настроек подробно описан в статье Видеонаблюдение через интернет на примере роутера DIR-300. Хотя описано подключение видеосистемы, но принцип тот же.
О настройках некоторых роутеров можно прочитать в следующих статьях.
Настройка роутера MikroTik описана в статье MikroTik RBD52G-5HacD2HnD-TC - настройка статического IP адреса и port forwarding.
Настройка роутера Xiaomi описана в статье Xiaomi Mi Wi-Fi mini - настройка статического IP адреса и port forwarding.
Настройка роутера ZyXEL описана в статье ZyXEL - настройка статического IP адреса и port forwarding.
Настройка роутера DIR-655 описана в статье DIR-655 - настройка статического IP адреса и port forwarding.
Настройка ADSL Wi-Fi роутера ZXHN H108N описана в статье ZXHN H108N - настройка статического IP адреса и port forwarding.
Настройка Wi-Fi роутера TP-Link Archer C20(RU) описана в статье Archer C20 - настройка статического IP адреса и port forwarding.
Настройка ADSL Wi-Fi роутера Sagemcom Fast 2804 v7 описана в статье Sagemcom Fast 2804 v7 - настройка статического IP адреса и port forwarding.
Не забудьте в настройках port forwarding пробросить все порты используемых протоколов и программ.
Список портов популярных протоколов и программ
DNS |
53 |
FTP |
21 |
SSH |
22 |
GOPHER |
70 |
HTTP |
80 |
NTP |
123 |
NNTP |
119 |
POP3 |
110 |
PPTP |
1723 |
SMTP |
25 |
SOCKS |
1080 |
TELNET |
23 |
RDP |
3389 |
Webmin |
10000 |
RPi-Monitor |
8888 |
Если настройки роутера позволяют, то можно указать диапазон портов или укажите несколько строк (несколько настроек) с конкретными портами. Указывать широкий диапазон портов небезопасно.
Третий шаг - зарегистрировать домен на бесплатном динамическом DNS сервисе.
После регистрации домена на бесплатном динамическом DNS сервисе вам на компьютере Windows или Linux необходимо установить утилиту этого сервиса, которая будет отслеживать IP адрес и сообщать об изменениях на сервис. Сервис будет подставлять новый IP адрес и ваш домен снова будет доступен в интернет. Это может сработать не сразу. Иногда домен бывает доступен только через 20-30 минут. Эту утилиту удобно установить на том же компьютере, для которого настраивается port forwarding, но это не обязательно.
Например, в вашей локальной сети, кроме компьютера Raspberry Pi, есть компьютер Windows. Тогда вы можете установить утилиту динамического DNS сервиса на нём. Он должен быть постоянно включен и иметь доступ в интернет. Он будет периодически обновлять IP адреса на серверах DNS сервиса. В этом случае вам не придётся заморачиваться с установкой такой утилиты на Raspberry Pi.
Проверять работу домена надо из другой локальной сети или через вашего мобильного оператора, т.е. из интернета.
Возможна такая ошибка — ваш браузер вместо открытия страницы начинает поиск по этому адресу и выводит кучу сообщений о невозможности найти такой текст. Значит, вам надо изменить настройки браузера. В настройках браузера отмените поиск по адресной строке. В Mozilla Firefox в разделе Поиск снимите галку "Использовать адресную строку для поиска и навигации". Теперь браузер должен сразу открывать адрес, а не начинать поиск.
Для Raspberry Pi после регистрации домена на бесплатном динамическом DNS сервисе необходимо скачать и установить в Raspbian утилиту этого сервиса. Бесплатно можно использовать до трех доменов. Она будет периодически с заданным интервалом посылать на сервис ваш текущий IP адрес. Если он изменится, то сервис автоматически приведет выданный вам домен в соответствие новому IP адресу. no-ip.com удобен тем, что предлагает такую утилиту как для Windows, так и для Linux. Установите её на Raspberry Pi и доступ из интернета будет поддерживаться автоматически. Необходимо лишь один раз в месяц подтверждать пользование доменом. Напоминание об этом будет приходить на ваш e-mail, указанный при регистрации.
Как установить эту утилиту в Linux, описано в статье magicpast.net/linux/index.php?p=ustanovka-i-nastrojka-klienta-noip-opensuse-12-2. Скачайте утилиту noip-duc-linux.tar.gz в домашний каталог и распакуйте ее командой tar xf noip-duc-linux.tar.gz. Перейдите в созданный каталог noip-2.1.9-1. Для установки утилиты дайте команду sudo make install. Сразу после установки запустится настройка утилиты и придется ответить на несколько вопросов. В заключение программа предлагает дать название утилите. Я указал noip2. В дальнейшем при запуске утилиты указывайте своё название. Для изменения настроек надо дать команду, например sudo /usr/local/bin/noip2 -C. Если не работает, то перейдите в каталог /usr/local/bin и проверьте, есть ли там утилита с вашим названием. Права доступа к утилите должны быть 755, владелец root и группа root (staff).
Пример настройки утилиты на Orange Pi (Raspberry Pi) для одного из двух доменов, зарегистрированных на сервисе no-ip.com, с подробным комментарием:
Хотя и выдаются предупреждения, но утилита компилируется. Сразу же запускается настройка утилиты. Потребуется ввести логин и пароль, под которыми вы зарегистрировались на сервисе no-ip.com. У меня на сервисе no-ip.com зарегистрировано два домена. Утилита запрашивает: "Do you wish to have them all updated (Настроить все домены)?". Отвечаю: "Нет (n)". Выдается имя первого домена и запрос на его настройку: "Do you wish to have host [xxx.net] updated?". Отвечаю: "Нет (n)". Выдается имя второго домена и запрос на его настройку: "Do you wish to have host [xxxxx.net] updated?". Отвечаю: "Да (y)". Запрашивается интервал обновления: "Please enter an update interval:[30]". Нажал Enter, т.е. оставил по умолчанию 30 минут. На вопрос: "Do you wish to run something at successful update (Вы хотите запустить утилиту при успешном обновлении)?" ответил: "Да (y)". Далее программа предлагает дать ей новое имя: "Please enter the script/program name". Я назвал её noip2. Затем программа сообщает о том, что создан новый файл конфигурации и помещён в папку /usr/local/etc/no-ip2.conf. Сама же программа будет помещена в папку /usr/local/bin/.
Если у вас настроено подключение к интернету по кабелю (eth0) и через Wi-Fi (wlan0), то при настройке утилиты будет выдан запрос на выбор интерфейса:
Введите 0 для eth0 или 1 для wlan0.
Важное замечание. При использовании Wi-Fi при отключении электроэнергии придется вручную перезапускать Raspberry Pi или сетевые службы после подачи питания для восстановления Wi-Fi подключения. При использовании же кабеля (eth0) при возобновлении подачи электропитания сетевое подключение обычно восстанавливается самостоятельно (автоматически).
Чтобы утилита запускалась при выключениях или перезагрузке Raspbian, добавьте в /etc/rc.local строку, например так:
sudo /usr/local/bin/noip2
до строки exit 0.
При выключениях/включениях роутера провайдер выдаёт роутеру новый IP адрес. Linux-утилита no-ip.com только через 30 минут (интервал обновления по умолчанию) обновит IP адрес на серверах no-ip.com. Можно ускорить это дело, если в локальной сети с Raspberry Pi присутствует компьютер Windows. Запустите утилиту no-ip.com на компьютере Windows и нажмите кнопку Refresh Now (Обновить Сейчас). IP адрес будет обновлён немедленно и сервер на Raspberry Pi снова будет доступен из интернета.
Для доступа из интернета более надежен платный вариант: купить у провайдера статический IP адрес и у регистратора доменов привязать этот адрес к выбранному домену.
P.S. Динамический DNS можно настроить, если роутер получает белый IP адрес. Если ваш роутер получает серый IP адрес, то настроить динамический DNS не получится. Подробно об этом тут.
Последнее редактирование 6 ноября 2022 г.
Использованные ресурсы
1. https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update
2. http://lock.3dn.ru/news/videonabljudenie_cherez_internet/2013-06-19-100
3. https://portscaner.ru/protocols-ports-tcp-udp
|