Раздел: Железяки
Написано: 21.11.2012
Автор: Antonio
Поставил на свой роутер Wi-Fi TP-Link TL-WR842ND прошивку от OpenWRT для расширения гибкости и возможностей, скажу вам это действительно так.
Столкнулся с вопросом как открыть доступ к веб интерфейсу роутера при использовании OpenWRT со стороны WAN порта (по-умолчанию доступ работает только из внутренней сети (LAN или Wi-Fi)).
Оказалось все решается прописанием 2-х строк.
Вопрос: OpenWRT как открыть доступ из интернет к web интерфейсу
Решение:
1. Заходим в раздел Network — подраздел Interfaces смотрим как называется наш WAN (в данном случае eth1)
2. Переходим в Network — Firewall — Custom Rules и дописываем нужное правило, в данном случае такое
WAN='eth1' iptables -A input_rule -i $WAN -p tcp --dport 80 -j ACCEPT
3. Перезагружаем роутер
Все, возможность управлять вашей точкой доступа со стороны WAN интерфейса должна появится.
Фразы: удаленное управление роутером nemcd.com, доступ через WAN TP-Link, удаленное управление OpenWRT
Время на прочтение
6 мин
Количество просмотров 13K
Всем привет, это мой первый опыт на Хабре. Хочу написать о том, как нестандартно управлять сетевым оборудованием во внешней сети. Что значит нестандартно: в большинстве случаев, для управления оборудованием во внешней сети Вам необходимо:
- Публичный IP-адрес. Ну, или если оборудование находится за чьим-то NAT-ом, то публичный IP и «проброшенный» порт.
- Туннель (PPTP/OpenVPN/L2TP+IPSec и т.д.) до центрального узла, через который была бы доступна.
Поэтому «мой велосипед» потребуется Вам, когда стандартные методы Вам не подходят, например:
- Оборудование находится за NAT-ом и кроме обычного http (80-го порта) — все закрыто. Вполне нормальная ситуация для крупных федеральных корпоративных сетей. Прописать порты — могут, но не сразу, не быстро и не Вам.
- Нестабильный и/или «узкий» канал связи. Маленькая скорость, постоянные потери. Боль и разочарование при попытке организовать туннель.
- Дорогой канал связи, где буквально каждый мегабайт на счету. Например спутниковая связь. Плюс большие задержки и «узкая» полоса.
- Ситуация, когда Вам надо «жонглировать» большим количеством маленьких роутеров, на которых с одной стороны установлена OpenWrt/Lede для расширения возможностей, а с другой стороны ресурсов (памяти) роутера хватает далеко не на все.
Примечание номер раз
А что мешает в USB-порт роутера установить «флэшку» и расширить память роутера?
Чаще всего требования к стоимости решения в целом, но иногда ключевую роль играет и форм-фактор. Например, на объекте стоит TP-Link ML3020, его единственный USB-порт используется под 2G/3G модем, все это завернуто в какой-нить небольшой пластиковый корпус и размещено где-то высоко-высоко (на мачте), далеко-далеко (в поле, в 30 км. от ближайшей базовой станции мобильного оператора). Да, можно воткнуть USB-hub и расширить число портов, но опыт показывает что это громоздко и ненадежно.
Итак, я постарался описать Вам мою типовую ситуацию: «где-то далеко-далеко, стоит очень важный, одинокий и маленький роутер под управлением Linux. Важно знать хотя бы раз в день, что он „жив“ и при необходимости отсылась ему команды, например „солнышко, перезагрузись!“
Перейдем к реализации:
1) На стороне роутера по cron-у каждые 5/10/1440 минут, или когда угодно необходимо отсылать http-запрос на сервер с помощью wget, результат запроса сохранять в файл, файл делать исполняемым, и исполнять его.
У меня строчка в cron-е выглядит примерно так:
Файл /etc/crontabs/root:
*/5 * * * * wget "http://xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php?u=user&p=password" -O /tmp/wa.sh && chmod 777 /tmp/wa.sh && /tmp/wa.sh
, где:
xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai — домен моего сервера. Сразу замечу: да, можно указать и конкретный ip-адрес сервера, мы так раньше делали, пока наше государство, в праведном порыве борьбы нескажусчемнезнаю — не закрыло доступ к львиной доле „облаков“ DigitalOcean и Amazon. В случае использования символьного домена, при возникновении подобного казуса, вы спокойно сможете поднять резервное облако, перенаправить на него домен и восстановить мониторинг устройств.
a.php — имя скрипта на стороне сервера. Да, я знаю, что это неправильно, называть переменные и имена файлов одной буквой… предлагаю считать, что так мы экономим несколько байт при отправке запроса
u — имя пользователя, логин железки
p — пароль
„-O /tmp/wa.sh“ — файл на удаленном роутере, куда будет сохранятся ответ сервера, например команда reboot.
Примечание номер два:
Аааа, почему мы используем wget, а не curl, ведь через curl можно отправлять https запросы и не GET-ом, а POST-ом? Аааа потому, что как в старом анекдоте „В крынку нЭ лезет!“. В состав curl входят библиотеки шифрования размером около 2МБ и в силу этого врятли Вам удастся собрать образ для маленького TP-LINK ML3020 к примеру. А с wget — пожалуйста.
2) На стороне сервера (у меня это Ubuntu) мы будем использовать Zabbix. Почему: хочу чтобы было красиво (с графиками) и удобно (отправлять команды через контекстное меню). У Заббикса есть такая прелестная вещь, как zabbix-агент. Через агента мы будем вызывать php-скрипт на сервере, который будет возвращать информацию о том, регистрировался ли наш роутер в требуемый период времени. Для хранения информации о времени регистрации, командах для устройств, я использую MySQL, отдельную таблицу users примерно с такими полями:
CREATE TABLE `users` (
`id` varchar(25) NOT NULL,
`passwd` varchar(25) NOT NULL,
`description` varchar(150) NOT NULL,
`category` varchar(30) NOT NULL,
`status` varchar(10) NOT NULL,
`last_time` varchar(20) NOT NULL, // время последнего соединения
`last_ip` varchar(20) NOT NULL, // IP последнего соединения
`last_port` int(11) NOT NULL, // порт последнего соединения
`task` text NOT NULL, // задача которую получает роутер
`reg_task` varchar(150) NOT NULL, // "регулярная" задача, если мы захотим чтобы задача выполнялась всегда при регистрации
`last_task` text NOT NULL, // лог задач
`response` text NOT NULL, // сюда пишется ответ устройства
`seq` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Все исходники можно забрать с Git-репозитория, по адресу: https://github.com/BazDen/iotnet.online.git
Теперь PHP-скрипты, размещаемые на стороне сервера(для удобства их можно положить в папку /usr/share/zabbix/):
Файл a.php:
<?php
// Получаем входные параметры: имя пользователя, пароль и сообщение от удаленного роутера
// Зачем нужен message ? Это способ ответа роутера, например если вы захотите посмотреть содержимое файла роутера
$user=$_REQUEST['u'];
$password=$_REQUEST['p'];
$message=$_REQUEST['m'];
// Подключаемся к нашей базе данных (MySQL)
$conn=new mysqli("localhost","db_login","db_password","DB_name");
if (mysqli_connect_errno()) {
exit();
}
$conn->set_charset("utf8");
// здесь ищем наш роутер в таблице базы данных
$sql_users=$conn->prepare("SELECT task, reg_task, response, last_time FROM users WHERE id=? AND passwd=? AND status='active';");
$sql_users->bind_param('ss', $user, $password);
$sql_users->bind_result($task, $reg_task, $response, $last_time);
$sql_users->execute();
$sql_users->store_result();
if (($sql_users->num_rows)==1){
$sql_users->fetch();
// здесь мы роутеру отправляем его задачи
echo $task;
echo "\n";
echo $reg_task;
// вот здесь мы пишем время ответа и сам ответ роутера
$response_history="[".date("Y-m-d H:i")."] ".$message;
// задачу отправили, теперь надо ее удалить,а после удаления отметить в логах, что такая-то задача выполнена
$last_ip=$_SERVER["REMOTE_ADDR"];
$last_port=$_SERVER["REMOTE_PORT"];
$ts_last_conn_time=$last_time;
$sql_users=$conn->prepare("UPDATE users SET task='', seq=1 WHERE (id=?);");
$sql_users->bind_param('s', $user);
$sql_users->execute();
if (strlen($message)>1){
$sql_users=$conn->prepare("UPDATE users SET response=?, seq=1 WHERE (id=?);");
$sql_users->bind_param('ss', $response_history, $user);
$sql_users->execute();
}
// теперь надо сохранить время регистрации пользователя, его айпи и сообщение от него. Пока только сообщение
$ts_now=time();
$sql_users=$conn->prepare("UPDATE users SET last_time=?, last_ip=?, last_port=? WHERE (id=?);");
$sql_users->bind_param('ssss', $ts_now, $last_ip, $last_port, $user);
$sql_users->execute();
}
// если мы не нашли роутер в нашей базе данных, или его статус "неактивный", то ему ... будет отправлена команда reboot....
// Почему так жестоко ? Потому что роутеры иногда пропадают, а это маленький способ проучить "новых владельцев".
else
{
echo "reboot";
}
$sql_users->close();
?>
Файл agent.php (это скрипт вызываемого zabbix-агента):
<?php
// файл агента Zabbix. Данный скрипт обращается к таблице users и получает "1" если устройство регистрировалось с момента последнего обращения
// user и password - учетные данные оборудования
$user = $argv[1];
$password = $argv[2];
// подключаемся к нашей базе данных
$conn=new mysqli("localhost","db_user","db_password","db_name");
if (mysqli_connect_errno()) {
exit();
}
$conn->set_charset("utf8");
$sql_users=$conn->prepare("SELECT seq FROM users WHERE id=? AND passwd=? AND status='active';");
$sql_users->bind_param('ss', $user, $password);
$sql_users->bind_result($seq);
$sql_users->execute();
$sql_users->store_result();
// обмен данными происходит через поле seq. При регистрации железка ставит данное поле в "1"
if (($sql_users->num_rows)==1){
$sql_users->fetch();
echo $seq;
}
// обнуляем $seq.
$sql_users=$conn->prepare("UPDATE users SET seq=0 WHERE id=? AND passwd=? AND status='active';");
$sql_users->bind_param('ss', $user, $password);
$sql_users->execute();
$sql_users->close();
?>
Ну и заключительный этап: прописание агента и добавление графиков.
Если у Вас еще не установлен zabbix-агент, то:
apt-get install zabbix-agent
Редактируем файл /etc/zabbix/zabbix_agentd.conf.
Добавляем строку:
UserParameter=test,php /usr/share/zabbix/agent.php user password
, где:
test — имя нашего агента
„php /usr/share/zabbix/agent.php user password“ — вызываемый скрипт с указанием регистрационных данных устройства.
Добавление графиков: открываем web-интерфейс zabbix, в меню выбираем:
Настройка -> Узлы сети -> Создать узел сети. Здесь достаточно указать имя узла сети, его группу, интерфейс агента по умолчанию:
Теперь нам для данного узла сети надо добавить элемент данных. Обратите внимание на два поля: „ключ“ — это как раз тот параметр, что мы прописывали в файле /etc/zabbix/zabbix_agentd.conf (в нашем случае это test), и „интервал обновления“ — я ставлю 5 минут, потому как и оборудование регистрируется на сервере тоже один раз в пять минут.
Ну и добавляем график. Рекомендую в качестве стиля отрисовки выбрать „Заполнение“.
На выходе получается нечто очень лаконичное, например вот так:
На резонный вопрос: „и это того стоило?“, отвечу: ну конечно, смотрите „причины создания велосипеда“ в начале статьи.
Если мой первый графоманский опыт вызовет интерес читателей, то в следующих статьях я хочу описать как отправлять команды на удаленное оборудование. Также удалось реализовать всю схему и для устройств на базе RouterOS (Mikrotik-ов).
OpenWrt — это популярная альтернативная прошивка для роутеров, которая предоставляет пользователю больше возможностей для настройки и управления устройством. Возможность получить удаленный доступ к роутеру является одной из ключевых особенностей OpenWrt. В этой статье мы рассмотрим, как настроить удаленный доступ к роутеру с использованием OpenWrt.
Удаленный доступ позволяет вам управлять роутером из любой точки мира, при условии, что у вас есть доступ к интернету. Это может быть полезно, если вы хотите настроить или управлять устройством из другого места, например, когда вы находитесь в командировке или в отпуске. Вместо того, чтобы позволить кому-то другому входить в вашу сеть, вы можете настроить удаленный доступ и иметь полный контроль над своим роутером.
Для настройки удаленного доступа к роутеру OpenWrt вам потребуется выполнить несколько шагов. Во-первых, вы должны убедиться, что ваш роутер имеет подключение к интернету. Затем вам потребуется войти в веб-интерфейс OpenWrt и включить удаленный доступ. После этого вы сможете получить удаленный доступ к вашему роутеру с помощью специального приложения или через веб-интерфейс.
Важно помнить, что удаленный доступ к роутеру может быть потенциальной угрозой безопасности. Настоятельно рекомендуется установить сложный пароль и установить ограничения на удаленный доступ, чтобы предотвратить несанкционированный доступ.
В заключение, настройка удаленного доступа к роутеру OpenWrt позволяет вам управлять устройством из любой точки мира. Однако помните о безопасности и принимайте соответствующие меры, чтобы защитить свою сеть от несанкционированного доступа.
Содержание
- Openwrt удаленный доступ: настройка и инструкция
- Подготовка к удаленному доступу
- Настройка Openwrt для удаленного доступа
- Установка и настройка OpenVPN для удаленного доступа
- Проверка удаленного доступа к роутеру
Openwrt удаленный доступ: настройка и инструкция
Перед тем, как начать настройку удаленного доступа, вам потребуется:
1. | Роутер с установленной прошивкой OpenWrt. |
2. | Стабильное подключение к Интернету на вашем роутере. |
3. | Учетную запись на сайте noip.com (для настройки динамического DNS) или статический IP-адрес. |
Шаги настройки удаленного доступа:
- Войдите в веб-интерфейс вашего роутера, введя IP-адрес роутера в адресной строке браузера.
- Введите имя пользователя и пароль для входа в веб-интерфейс.
- Перейдите в раздел «Настройки» или «System» и выберите пункт «Удаленный доступ» или «Remote Access».
- Включите опцию «Включить удаленный доступ» или «Enable Remote Access».
- Выберите протокол удаленного доступа (SSH или Telnet) и задайте порт для подключения.
- Если у вас динамический IP-адрес, настройте динамический DNS с помощью учетной записи на сайте noip.com. Если у вас статический IP-адрес, необходимо пропустить этот шаг.
- Сохраните настройки и перезагрузите роутер для применения изменений.
После настройки удаленного доступа вы сможете подключиться к роутеру из любого места и управлять настройками сети. Обратите внимание, что удаленный доступ может быть небезопасным, поэтому рекомендуется использовать парольную защиту и шифрование для повышения безопасности.
В заключение, настройка удаленного доступа в OpenWrt позволяет вам гибко управлять роутером и сетью из любого места, что очень удобно, особенно для удаленной поддержки и настройки.
Подготовка к удаленному доступу
Перед настройкой удаленного доступа к роутеру Openwrt требуется выполнить несколько предварительных шагов.
1. Убедитесь, что ваш роутер работает с Openwrt и доступен в локальной сети. Если у вас еще не установлена эта операционная система, установите ее с помощью официальной инструкции Openwrt.
2. Установите статический IP-адрес для вашего роутера. Это можно сделать, перейдя в раздел «Сеть» в веб-интерфейсе Openwrt и выбрав «Интерфейсы». В настройках вашего интерфейса выберите «Статический адрес», затем введите желаемый IP-адрес и сохраните изменения.
3. Настройте перенаправление портов в вашем роутере. Для удаленного доступа к роутеру с использованием удаленного компьютера или смартфона, вам необходимо настроить перенаправление портов на вашем роутере. Это можно сделать в разделе «Файрвол» в веб-интерфейсе Openwrt. Введите порт, который вы хотите открыть, и привяжите его к локальному IP-адресу вашего роутера.
4. Установите пароль для удаленного доступа к роутеру. Чтобы обеспечить безопасность своей сети, важно установить надежный пароль для доступа к роутеру. Вы можете сделать это, перейдя в раздел «Система» в веб-интерфейсе Openwrt, затем выбрав «Администрирование». Введите новый пароль и сохраните изменения.
После выполнения этих шагов вы будете готовы настраивать удаленный доступ к вашему роутеру Openwrt.
Настройка Openwrt для удаленного доступа
Удаленный доступ к роутеру с помощью Openwrt позволяет управлять устройством и настраивать сетевые параметры из любой точки мира. Чтобы настроить удаленный доступ, выполните следующие шаги:
- Подключите компьютер к роутеру через Ethernet-кабель.
- Откройте веб-браузер и введите IP-адрес роутера в адресную строку.
- Войдите в веб-интерфейс Openwrt, используя свои учетные данные.
- Перейдите во вкладку «Настройки» или «System» и выберите «SSH Access» или «Удаленный доступ по SSH».
- Активируйте SSH-доступ и сохраните изменения.
- Настройте порт SSH для доступа из внешней сети. Рекомендуется изменить порт с 22 на другой.
- Создайте правило проброса портов на роутере для перенаправления соединений на порт SSH.
- Настройте персональный пароль для доступа по SSH.
- Сохраните настройки и перезагрузите роутер.
После выполнения этих шагов вы сможете получить удаленный доступ к вашему роутеру Openwrt через SSH, используя внешний IP-адрес роутера и настроенный порт SSH.
Установка и настройка OpenVPN для удаленного доступа
- Установите пакеты OpenVPN и OpenSSL на ваш роутер с помощью команды
opkg install openvpn openssl
. - Создайте директорию, где будет храниться ключевая информация командой
mkdir /etc/openvpn
. - Скопируйте файлы серверного ключа и сертификата OpenVPN в директорию /etc/openvpn.
- Создайте и настройте файл конфигурации сервера OpenVPN в директории /etc/openvpn/server.conf. Пример файла конфигурации:
- Включите OpenVPN на роутере, добавив соответствующую строку в /etc/rc.local:
/etc/init.d/openvpn start
- Перезагрузите роутер, чтобы применить все настройки.
dev tun
proto udp
port 1194
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
cipher AES-256-CBC
auth SHA512
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
keepalive 10 120
key-direction 0
После завершения этих шагов ваш роутер OpenWrt будет готов к удаленному доступу через OpenVPN. Вы можете подключиться к роутеру с помощью клиента OpenVPN, указав IP-адрес роутера и используя настройки сервера OpenVPN.
Проверка удаленного доступа к роутеру
После настройки удаленного доступа к роутеру OpenWrt, важно проверить, работает ли он корректно. Для этого можно использовать следующие методы:
Метод | Описание |
---|---|
Проверка через веб-интерфейс | Откройте любой веб-браузер на компьютере или мобильном устройстве, подключенном к интернету. В адресной строке введите IP-адрес вашего роутера OpenWrt или доменное имя, если оно настроено. Если вы видите страницу входа в веб-интерфейс роутера, удаленный доступ работает корректно. |
Проверка через SSH | Откройте программу для работы с SSH на компьютере, например, PuTTY. Введите IP-адрес роутера OpenWrt и подключитесь к нему по SSH. Если у вас открывается командная строка роутера, удаленный доступ работает корректно. |
Проверка удаленного доступа к сервисам роутера | Если на роутере OpenWrt настроены различные сервисы, такие как FTP, Samba, VPN и т.д., проверьте их работоспособность извне. Попробуйте подключиться к этим сервисам с удаленного устройства. Если подключение установлено успешно, удаленный доступ работает корректно. |
Если вы обнаружили проблемы с удаленным доступом к роутеру, проверьте правильность настроек удаленного доступа, включая правила файрвола и портов. Также убедитесь, что ваше устройство имеет подключение к интернету и может достичь роутера через сеть.
In the factory default image , routers flashed with OPENWRT firmware cannot be accessed from the web.
To remotely manage your router with OpenWRT firmware, you must manualy configure the firewall from the router.
You have to log on to the router with WINSCP :
- On WinSCP Login Screen , at the FILE PROTOTCOL, select SCP
- At Host Name box, enter router IP (default : 192.168.1.1)
- Port number , leave it default (22)
- Enter router login username and password and click LOGIN
After successfull login, browse to “/etc/config/” and open the firewall file
Edit the file, paste the following text at the end of the file:
config 'redirect' option 'name' 'luci-remote' option 'src' 'wan' option 'proto' 'tcp' option 'src_dport' '9999' option 'dest_port' '80' option 'target' 'DNAT' option 'dest' 'lan'
The src_dport is the port on witch you are accessing the router, so in this case , you are accessing the router form the following url: http://your_router_public_ip:9999
Tip: I recommend setting up luci to use https, then the dest_port would be 443
#access, #luci, #openwrt, #remote
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
- Last modified: 2021/08/02 15:47
- by vgaetera