Nleba anya na njikwa ngwaọrụ Lunix/OpenWrt/Lede site na ọdụ ụgbọ mmiri 80…

Ndewo onye ọ bụla, nke a bụ ahụmịhe izizi m na Habré. Achọrọ m ide banyere otu esi ejikwa akụrụngwa netwọkụ na netwọk mpụga n'ụzọ na-abụghị ọkọlọtọ. Kedu ihe na-abụghị ọkọlọtọ pụtara: n'ọtụtụ ọnọdụ, iji jikwaa akụrụngwa na netwọk mpụga ị chọrọ:

  • Adreesị IP ọha. Ọfọn, ma ọ bụ ọ bụrụ na akụrụngwa dị n'azụ NAT mmadụ, mgbe ahụ, IP ọha na eze na ọdụ ụgbọ mmiri "ebugharị".
  • Ọwara (PPTP/OpenVPN/L2TP+IPSec, wdg) ruo etiti ọnụ ebe ọ ga-esi na ya nweta.

Yabụ, ị ga-achọ “igwe igwe m” mgbe usoro ọkọlọtọ adabaghị gị, dịka ọmụmaatụ:

  1. Akụrụngwa dị n'azụ NAT na, ma e wezụga maka http (ọdụ ụgbọ mmiri 80), ihe niile na-emechi. Nke a bụ ọnọdụ zuru oke maka nnukwu netwọk ụlọ ọrụ gọọmenti etiti. Ha nwere ike ịdebanye aha ọdụ ụgbọ mmiri, mana ọ bụghị ozugbo, ọ bụghị ngwa ngwa, ọ bụghịkwa maka gị.
  2. Ọwa nkwurịta okwu adịghị akwụsi ike na/ma ọ bụ “dị warara”. Ọsọ dị ala, mfu mgbe niile. Mgbu na nkụda mmụọ mgbe ị na-agbalị ịhazi ọwara.
  3. Ọwa nkwurịta okwu dị oke ọnụ, ebe megabyte ọ bụla bara uru. Dịka ọmụmaatụ, nkwukọrịta satịlaịtị. gbakwunyere ogologo igbu oge na otu " warara" band.
  4. Ọnọdụ mgbe ịchọrọ "ịgbagharị" ọnụ ọgụgụ dị ukwuu nke ndị na-anya ụgbọ ala, nke, n'otu aka ahụ, a na-etinye OpenWrt / Lede iji gbasaa ike, na n'aka nke ọzọ, ihe onwunwe (nchekwa) nke rawụta ezughị. maka ihe niile.

Oge ọnụọgụ ndetu Kedu ihe na-egbochi gị ịwụnye draịva flash n'ime ọdụ ụgbọ USB nke rawụta ma gbasaa ebe nchekwa rawụta?

Ọtụtụ mgbe, ihe ndị a chọrọ bụ maka ọnụahịa nke ngwọta n'ozuzu ya, ma mgbe ụfọdụ ụdị ihe na-arụkwa ọrụ dị mkpa. Dịka ọmụmaatụ, enwere TP-Link ML3020 na saịtị ahụ, a na-eji naanị ọdụ ụgbọ USB ya maka modem 2G/3G, a na-ekechi ihe niile n'ụdị obere akpa rọba ma tinye ebe dị elu, dị elu (na mast), N'ebe dị anya (n'ọhịa, 30 km site na ọdụ ọdụ ndị ọrụ mkpanaka kacha nso). Ee, ị nwere ike ikwunye na eriri USB wee gbasaa ọnụ ọgụgụ ọdụ ụgbọ mmiri, mana ahụmịhe na-egosi na nke a siri ike na enweghị ntụkwasị obi.

Ya mere, agbalịrị m ịkọwara gị ọnọdụ m na-ahụkarị: "ebe dị anya, dị anya, e nwere ihe dị ezigbo mkpa, owu na-ama na obere rawụta na-agba ọsọ Linux. Ọ dị mkpa ịmara ma ọ dịkarịa ala otu ugboro n'ụbọchị na ọ "dị ndụ" na, ọ bụrụ na ọ dị mkpa, a na-ezigara ya iwu, dịka ọmụmaatụ, "mmanụ aṅụ, reboot!"

Ka anyị gaa n'ihu na mmejuputa iwu:

1) N'akụkụ rawụta, site na cron, nkeji 5/10/1440 ọ bụla, ma ọ bụ mgbe ọ bụla ịchọrọ, ịkwesịrị iziga arịrịọ http na sava ahụ site na iji wget, chekwaa nsonaazụ nke arịrịọ ahụ na faịlụ, mee ka faịlụ ahụ rụọ ọrụ. , ma mee ya.

Ahịrị cron m dị ka nke a:

Faịlụ /etc/crontabs/mgbọrọgwụ:

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

ebe:
xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai bụ ngalaba nke sava m. Ka m mara ozugbo: ee, ị nwere ike ịkọwapụta adreesị IP kpọmkwem nke ihe nkesa ahụ, anyị na-eme nke a ruo mgbe ala anyị, na mkpali ezi omume nke mgba, m ga-asị, Amaghị m, gbochiri ohere ọdụm. òkè nke DigitalOcean na Amazon "igwe ojii". Ọ bụrụ na ị na-eji ngalaba ihe atụ, ọ bụrụ na ihe omume dị otú ahụ emee, ị nwere ike bulie igwe ojii nkwado ngwa ngwa, redirect ngalaba na ya wee weghachi nlekota ngwaọrụ.

a.php bụ aha nke ihe nkesa-n'akụkụ. Ee, amaara m na ọ bụ ihe na-ezighị ezi ịkpọ aha mgbanwe na faịlụ aha n'otu akwụkwọ ozi ahụ ... M na-atụ aro na otu a ka anyị si chekwaa bytes ole na ole mgbe ị na-eziga arịrịọ :)
u - aha njirimara, nbanye ngwaike
p - paswọọdụ
"-O /tmp/wa.sh" bụ faịlụ dị na rawụta dịpụrụ adịpụ ebe a ga-echekwa nzaghachi nkesa, dịka ọmụmaatụ iwu nrụpụta.

Ndebanye aha nke abụọ: Ahhh, gịnị kpatara anyị ji eji wget ma ọ bụghị curl, n'ihi na site na curl ị nwere ike izipu arịrịọ https ọ bụghị na GET, kama na POST? Ahhh n'ihi na, dị ka ọ dị na njakịrị ochie "NE na-arịgo n'ime ite!" curl gụnyere ọba akwụkwọ ezoro ezo nke ihe dịka 2MB n'ogo na n'ihi nke a, o yighị ka ị ga-enwe ike ikpokọta onyonyo maka obere TP-LINK ML3020, dịka ọmụmaatụ. Na wget - biko.

2) N'akụkụ nkesa (M nwere Ubuntu) anyị ga-eji Zabbix. Ihe kpatara ya: Achọrọ m ka ọ mara mma (ya na eserese) yana adaba (zipụ iwu site na nchịkọta nhọrọ). Zabbix nwere ihe magburu onwe ya dị ka onye ọrụ zabbix. Site n'aka onye nnọchi anya, anyị ga-akpọ script PHP na ihe nkesa, nke ga-eweghachi ozi gbasara ma rawụta anyị debanyere aha n'oge achọrọ. Ka ịchekwaa ozi gbasara oge ndebanye aha, iwu maka ngwaọrụ, ana m eji MySQL, ndị ọrụ tebụl dị iche nwere ihe dịka mpaghara ndị a:

		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;

Enwere ike ibudata isi mmalite niile na ebe nchekwa Git na: https://github.com/BazDen/iotnet.online.git
Ugbu a ederede PHP etinyere n'akụkụ ihe nkesa (maka ịdị mma, enwere ike itinye ha na / usr / share / zabbix / nchekwa):

a.php faịlụ:

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

Faịlụ Agent.php (nke a bụ edemede nke onye nnọchi anya zabbix a na-akpọ):

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

Ọ dị mma, ọkwa ikpeazụ: ịdenye aha onye nnọchi anya na ịgbakwunye nhazi oge.

Ọ bụrụ na ị tinyebeghị onye nnọchi anya zabbix, mgbe ahụ:

apt-get install zabbix-agent

Dezie faịlụ /etc/zabbix/zabbix_agentd.conf.

Tinye ahịrị:

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

ebe:
ule bụ aha onye nnọchi anya anyị
"php /usr/share/zabbix/agent.php paswọọdụ njirimara" - edemede a na-akpọ na-egosi data ndebanye aha ngwaọrụ.

Na-agbakwụnye eserese: mepee interface webụ zabbix, họrọ na menu:
Ntọala -> Ọnụ netwọk -> Mepụta ọnụ netwọk. N'ebe a, o zuru ezu ịkọwapụta aha onye nnabata netwọkụ, otu ya, yana interface nnọchite nke ndabara:

Nleba anya na njikwa ngwaọrụ Lunix/OpenWrt/Lede site na ọdụ ụgbọ mmiri 80…

Ugbu a, anyị kwesịrị ịgbakwunye ihe data maka ọnụ netwọk a. Lezienụ anya na mpaghara abụọ: "igodo" - nke a bụ kpọmkwem paramita anyị dere na faịlụ /etc/zabbix/zabbix_agentd.conf (n'ọnọdụ anyị ọ bụ ule), na "mmelite oge" - m setịpụrụ ya na nkeji 5. , n'ihi na a na-edebanyekwa ngwá ọrụ na ihe nkesa otu ugboro kwa nkeji ise.

Nleba anya na njikwa ngwaọrụ Lunix/OpenWrt/Lede site na ọdụ ụgbọ mmiri 80…

Ọfọn, ka anyị tinye eserese. Ana m akwado ịhọrọ "Mejupụta" dị ka ụdị nsụgharị.

Nleba anya na njikwa ngwaọrụ Lunix/OpenWrt/Lede site na ọdụ ụgbọ mmiri 80…

Nsonaazụ bụ ihe dị oke laconic, dịka ọmụmaatụ dịka nke a:

Nleba anya na njikwa ngwaọrụ Lunix/OpenWrt/Lede site na ọdụ ụgbọ mmiri 80…

Maka ajụjụ ezi uche dị na ya: "Ọ bara uru?", M ga-aza: nke ọma, n'ezie, lee "ihe kpatara ịmepụta igwe igwe" na mmalite nke isiokwu ahụ.

Ọ bụrụ na ahụmịhe graphomaniac mbụ m na-akpali mmasị nke ndị na-agụ akwụkwọ, mgbe ahụ, n'isiokwu ndị na-esonụ, achọrọ m ịkọwa otu esi eziga iwu na akụrụngwa dịpụrụ adịpụ. Anyị jisiri ike mejuputa atụmatụ niile maka ngwaọrụ dabere na RouterOS (Mikrotik).

isi: www.habr.com

Tinye a comment