Mataʻituina mamao ma le pulea o Lunix / OpenWrt / Lede faʻavae masini e ala i le taulaga 80…

Talofa tagata uma, o loʻu aafiaga muamua lea i Habré. Ou te manaʻo e tusi e uiga i le faʻaogaina o masini fesoʻotaʻiga i luga o se fesoʻotaiga i fafo i se auala e le masani ai. O le a le uiga o le le masani: i le tele o tulaga, e pulea meafaigaluega i luga o se fesoʻotaiga i fafo e te manaʻomia:

  • tuatusi IP lautele. Ia, pe afai o meafaigaluega o loʻo i tua o le NAT a se tasi, ona avea lea o se IP lautele ma se taulaga "faʻasaga i luma".
  • Tunnel (PPTP/OpenVPN/L2TP+IPSec, ma isi) i le pona tutotonu e mafai ona maua ai.

O le mea lea, e te manaʻomia "laʻu uila" pe a le fetaui ma oe metotia masani, mo se faʻataʻitaʻiga:

  1. O meafaigaluega o loʻo i tua o le NAT ma, sei vagana ai le masani http (taulaga 80), ua tapunia mea uma. Ole tulaga masani lea mo feso'ota'iga feterale tetele. E mafai ona latou resitalaina ports, ae le o le taimi nei, e le vave, ma e le mo oe.
  2. Le mautu ma/po'o le "vati" ala feso'ota'iga. Saosaoa maualalo, gau faifai pea. Tiga ma le le fiafia pe a taumafai e faʻatulaga se alavai.
  3. O se auala tau feso'ota'iga taugata, lea e taulia moni uma megabyte. Mo se faʻataʻitaʻiga, fesoʻotaʻiga satelite. Fa'atasi ai ma fa'atuai umi ma se fa'aupu "vati".
  4. O se tulaga e te manaʻomia e "taufetuli" se numera tele o taʻavale laiti, lea, i le tasi itu, ua faʻapipiʻiina OpenWrt / Lede e faʻalautele ai gafatia, ma i le isi itu, o punaoa (manatua) o le router e le lava. mo mea uma.

Manatua numera taimi O le a le mea e taofia ai oe mai le faʻapipiʻiina o se uila afi i totonu o le uafu USB a le router ma faʻalauteleina le manatua o le router?

O le tele o taimi, o mana'oga e mo le tau o le fofo atoa, ae o nisi taimi o le fomu fa'ailoga e iai fo'i se sao taua. Mo se faʻataʻitaʻiga, o loʻo i ai se TP-Link ML3020 i luga o le saite, naʻo le USB port e faʻaaogaina mo le 2G/3G modem, o nei mea uma e afifi i totonu o se tamai pusa palasitika ma tuʻu i se mea maualuga, maualuga (i luga o le mast), mamao, mamao (i le fanua, 30 km mai le nofoaga autu o le telefoni feaveaʻi lata ane). Ioe, e mafai ona e faʻapipiʻi i totonu o le USB hub ma faʻalautele le numera o ports, ae o le poto masani e faʻaalia ai o lenei mea e faigata ma le faʻalagolago.

O lea, na ou taumafai e faʻamatala atu ia te oe loʻu tulaga masani: "i se mea mamao, mamao, o loʻo i ai se mea taua tele, tuulafoaiina ma laʻititi laʻititi e faʻaogaina Linux. E taua le iloa ia le itiiti ifo ma le tasi i le aso o ia "ola" ma, afai e tatau ai, e auina atu ia te ia poloaiga, mo se faataitaiga, "meli, toe amata!"

Sei o tatou agai atu i le faatinoga:

1) I le itu o le router, e ala i le cron, i 5/10/1440 minute uma, poʻo soʻo se taimi e te manaʻo ai, e te manaʻomia le tuʻuina atu o se talosaga http i le server e faʻaaoga ai le wget, faʻasaoina le taunuuga o le talosaga i se faila, fai le faila e mafai ona faʻatinoina. , ma faia.

O la'u laina cron e pei o lenei:

faila /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

, pe afai:
xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai o le vaega o laʻu server. Sei ou matauina i le taimi lava lena: ioe, e mafai ona e faʻamaonia se tuatusi IP patino o le 'auʻaunaga, sa masani ona matou faia lenei mea seʻia oʻo i lo matou setete, i se lagona amiotonu o tauiviga, o le a ou fai atu, ou te le iloa, poloka le avanoa i le leona. sea ​​o le DigitalOcean ma Amazon "clouds". Afai e te faʻaogaina se faʻailoga faʻatusa, afai e tupu se mea faapena, e faigofie ona e siiina se ao faʻasao, toe faʻafeiloaʻi le vaega i ai ma toe faʻaleleia le mataʻituina o masini.

a.php o le igoa o le itu-server script. Ioe, ou te iloa e sese le taʻuina o fesuiaiga ma faila igoa i le mataitusi lava e tasi ... Ou te fautua atu o le auala lenei tatou te faʻasaoina ai ni nai paita pe a tuʻuina atu se talosaga :)
u - username, login hardware
p - upu faataga
"-O /tmp/wa.sh" o se faila i luga o le router mamao lea o le a faʻasaoina ai le tali a le server, mo se faʻataʻitaʻiga o le toe faʻafouina.

Fa'aaliga numera lua: Ahhh, aisea tatou te faʻaogaina ai le wget ae le o le curl, aua e ala i le curl e mafai ona e lafoina talosaga https e le o GET, ae faʻatasi ma POST? Ahhh aua, e pei o le tala malie tuai "NE aʻe i totonu o le fagu!" curl e aofia ai faletusi faʻailoga e tusa ma le 2MB le lapopoa ma ona o lenei mea e le mafai ona e faʻapipiʻiina se ata mo se tamaʻi TP-LINK ML3020, mo se faʻataʻitaʻiga. Ma faatasi ai ma wget - faamolemole.

2) I luga o le 'auʻaunaga (o loʻo ia te aʻu le Ubuntu) matou te faʻaaogaina Zabbix. Aisea: Ou te manaʻo ia matagofie (faʻatasi ai ma kalafi) ma faʻaogagofie (auina atu poloaiga e ala i le lisi autu). Zabbix ei ai se mea matagofie e pei o le zabbix sui. E ala i le sooupu, matou te valaʻau se PHP script i luga o le 'auʻaunaga, lea o le a toe faʻafoʻi mai faʻamatalaga e uiga i le resitalaina o le matou router i le taimi manaʻomia. Ina ia teuina faʻamatalaga e uiga i le taimi o le resitalaina, faʻatonuga mo masini, ou te faʻaaogaina MySQL, o se isi laulau e faʻaoga ai pe a ma vaega nei:

		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;

O punaoa uma e mafai ona sii mai i le Git repository i: https://github.com/BazDen/iotnet.online.git
O le taimi nei o faʻamaumauga PHP ua tuʻuina i luga o le 'auʻaunaga (mo le faʻaogagofie, e mafai ona tuʻuina i totonu o le /usr/share/zabbix/folder):

a.php faila:

<?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 faila (o le tusitusiga lea a le sui zabbix ua taʻua):

<?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();
?>		

Ia, o le laasaga mulimuli: resitalaina o se sooupu ma faʻaopoopo faʻasologa.

Afai e te leʻi faʻapipiʻiina le sui o le zabbix, ona:

apt-get install zabbix-agent

Fa'asa'o le faila /etc/zabbix/zabbix_agentd.conf.

Fa'aopoopo le laina:

UserParameter=test,php /usr/share/zabbix/agent.php user password

, pe afai:
suega ole igoa ole matou sui sooupu
“php /usr/share/zabbix/agent.php user password” - o se tusitusiga e taʻua o loʻo faʻaalia ai faʻamaumauga o le resitalaina o masini.

Faaopoopo siata: tatala le zabbix web interface, filifili mai le lisi:
Fa'atonu -> Nodes Network -> Fausia se node feso'otaiga. Ua lava lea e fa'amaoti ai le igoa o le 'au'aunaga feso'ota'iga, lona vaega, ma le fa'aogaina o le sui sooupu:

Mataʻituina mamao ma le pulea o Lunix / OpenWrt / Lede faʻavae masini e ala i le taulaga 80…

Ole taimi nei e mana'omia le fa'aopoopoina o se elemene fa'amaumauga mo lenei node feso'otaiga. Faʻalogo lelei i fanua e lua: "ki" - o le mea tonu lea na matou tusia i le /etc/zabbix/zabbix_agentd.conf faila (i la matou tulaga o le suʻega), ma le "faʻafouina vaeluaga" - Ou te seti i le 5 minute , aua ma ua resitalaina foi meafaigaluega i luga o le 'auʻaunaga e tasi i le lima minute.

Mataʻituina mamao ma le pulea o Lunix / OpenWrt / Lede faʻavae masini e ala i le taulaga 80…

Ia, tatou fa'aopoopo i ai se kalafi. Ou te fautuaina le filifilia o le "Faatumu" e fai ma faiga fa'aliliuga.

Mataʻituina mamao ma le pulea o Lunix / OpenWrt / Lede faʻavae masini e ala i le taulaga 80…

O le gaosiga o se mea laconic, mo se faʻataʻitaʻiga pei o lenei:

Mataʻituina mamao ma le pulea o Lunix / OpenWrt / Lede faʻavae masini e ala i le taulaga 80…

I le fesili talafeagai: "pe aoga?", O le a ou taliina: lelei, ioe, vaai "mafuaaga mo le fatuina o se uila" i le amataga o le tusiga.

Afai o loʻu aafiaga muamua i le graphomaniac e faaosofia ai le fiafia o le au faitau, ona i ai lea i tala o loʻo mulimuli mai ou te fia faʻamatalaina pe faʻapefea ona auina atu poloaiga i masini mamao. Na mafai foi ona matou faʻatinoina le polokalame atoa mo masini faʻavae i luga ole RouterOS (Mikrotik).

puna: www.habr.com

Faaopoopo i ai se faamatalaga