Te aro turuki me te whakahaere i nga taputapu Lunix/OpenWrt/Lede ma te tauranga 80…

Tena koutou katoa, koinei taku wheako tuatahi mo Habré. Kei te hiahia ahau ki te tuhi me pehea te whakahaere i nga taputapu whatunga i runga i te whatunga o waho i te huarahi kore-paerewa. He aha te tikanga kore-paerewa: i te nuinga o te waa, ki te whakahaere taputapu i runga whatunga o waho ka hiahia koe:

  • Wāhitau IP tūmatanui. Ana, ki te mea kei muri te taputapu i te NAT o tetahi, katahi he IP whanui me te tauranga "whakamua".
  • Tunnel (PPTP/OpenVPN/L2TP+IPSec, etc.) ki te pona pokapū e uru atu ai.

No reira, ka hiahia koe ki "taku paihikara" ka kore e pai nga tikanga paerewa ki a koe, hei tauira:

  1. Ko nga taputapu kei muri i te NAT, engari mo te http o mua (tauranga 80), kua kati nga mea katoa. He ahuatanga noa tenei mo nga whatunga umanga a-taringa nui. Ka taea e ratou te rehita tauranga, engari kaore i te wa tonu, kaore i te tere, kaore hoki mo koe.
  2. Te hongere whakawhitiwhiti korero kore iu, "kuiti" ranei. Te tere iti, te ngaro tonu. Te mamae me te pouri i te wa e ngana ana ki te whakarite i te kauhanga.
  3. He hongere korero utu nui, kei reira nga megabyte katoa e tatau. Hei tauira, ko nga whakawhitiwhiti korero amiorangi. Me te roa o nga wa roa me te roopu "kuiti".
  4. He ahuatanga ka hiahia koe ki te "whakatika" i te maha o nga pouara iti, i tetahi taha, ka whakauruhia a OpenWrt / Lede ki te whakawhānui ake i nga kaha, a, i tetahi atu ringa, kaore i te nui nga rauemi (mahara) o te pouara. mo nga mea katoa.

Tuhia nga wa tau He aha te aukati i a koe ki te whakauru i te puku kohiko ki roto i te tauranga USB o te pouara me te whakawhänui i te mahara o te pouara?

Ko te nuinga o nga wa, ko nga whakaritenga mo te utu mo te otinga katoa, engari i etahi wa ka whai waahi nui te ahua o te ahua. Hei tauira, he TP-Link ML3020 kei te waahi, ko tana tauranga USB anake e whakamahia ana mo te pouwhanga 2G/3G, ka takai enei katoa ki etahi momo putea kirihou iti ka tuu ki tetahi waahi teitei, teitei (i runga i te mast), tawhiti, tawhiti (i te mara, 30 kiromita mai i te teihana turanga o te kaiwhakahaere pūkoro tata). Ae, ka taea e koe te whakauru i te USB USB me te whakawhānui ake i te maha o nga tauranga, engari e whakaatu ana te wheako he uaua tenei, he kore pono.

Na, ka ngana ahau ki te whakaahua ki a koe i taku ahuatanga: "i tetahi waahi tawhiti, tawhiti, he tino nui, mokemoke me te iti te pouara e whakahaere ana i te Linux. He mea nui kia mohio koe i te iti rawa i te ra e "ora ana" a, ki te tika, ka tukuna atu nga whakahau ki a ia, hei tauira, "honi, whakaaraara!"

Me haere tatou ki te whakatinanatanga:

1) I te taha o te pouara, ma te cron, ia 5/10/1440 meneti, i nga wa katoa e hiahia ana koe, me tuku he tono http ki te kaimau ma te whakamahi i te wget, tiakina te hua o te tono ki tetahi konae, mahia te konae hei whakahaere. , a mahia.

He penei te ahua o taku raina cron:

Kōnae /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

, kei hea:
xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai te rohe o taku tūmau. Kia mahara tonu ahau: ae, ka taea e koe te tautuhi i tetahi wahitau IP motuhake o te tūmau, i mahi matou i tenei tae noa ki to taatau whenua, i runga i te hiahia o te pakanga, ka kii ahau, kaore au e mohio, kua aukatihia te uru ki te raiona. wahi o te DigitalOcean me Amazon "kapua". Mena kei te whakamahi koe i te rohe tohu, mena ka pa mai he raru, ka taea e koe te whakaara ake i te kapua taapiri, te huri i te rohe ki reira ka whakahoki mai i te aro turuki taputapu.

Ko a.php te ingoa o te tuhinga taha-tumau. Ae, e mohio ana ahau he he te whakaingoa i nga taurangi me nga ingoa konae me te reta kotahi... Ko taku whakaaro me penei te penapena i etahi paita ka tukuna he tono :)
u - ingoa kaiwhakamahi, takiuru taputapu
p - kupuhipa
"-O /tmp/wa.sh" he konae kei runga i te pouara mamao ka tiakina te whakautu a te tūmau, hei tauira ko te whakahau whakaara ano.

Tuhipoka nama tuarua: Ahhh, he aha matou ka whakamahi ai i te wget me te kore e korikori, na te mea ma te curl ka taea e koe te tuku tono https ehara i te GET, engari me POST? Ahhh no te mea, pera i roto i te kata tawhito "Ka piki a NE ki roto i te ipu!" Kei roto i te curl nga whare pukapuka whakamunatanga tata ki te 2MB te rahi, na tenei karekau pea ka taea e koe te kohi whakaahua mo te TP-LINK ML3020 iti, hei tauira. A me te wget - koa.

2) I te taha tūmau (kei a au te Ubuntu) ka whakamahia e matou a Zabbix. He aha: Ko taku hiahia kia ataahua (me nga kauwhata) me te waatea (tuku tono ma te tahua horopaki). He mea whakamiharo a Zabbix penei i te kaihoko zabbix. Na roto i te kaihoko, ka waeahia e matou he tuhinga PHP i runga i te tūmau, ka whakahoki mai i nga korero mo te rehitatanga o to maatau pouara i roto i te waa e hiahiatia ana. Hei rokiroki korero mo te wa rehitatanga, whakahau mo nga taputapu, ka whakamahi ahau i a MySQL, he kaiwhakamahi ripanga motuhake me nga mara e whai ake 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;

Ka taea te tango i nga puna katoa mai i te putunga Git i: https://github.com/BazDen/iotnet.online.git
Inaianei kua tukuna nga tuhinga PHP ki te taha tūmau (mo te pai, ka taea te whakanoho ki roto i te kōpaki /usr/share/zabbix/):

a.php kōnae:

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

Kōnae Agent.php (koinei te tuhinga o te kaihoko zabbix e kiia ana):

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

Ana, te waahanga whakamutunga: te rehita i tetahi kaihoko me te taapiri i nga raarangi.

Mena kaore ano kia whakauruhia e koe te kaihoko zabbix, na:

apt-get install zabbix-agent

Whakatikaina te kōnae /etc/zabbix/zabbix_agentd.conf.

Tāpirihia te raina:

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

, kei hea:
Ko te whakamatautau te ingoa o to maatau kaihoko
“php /usr/share/zabbix/agent.php kupuhipa kaiwhakamahi” - he hōtuhi karanga e tohu ana i te raraunga rehitatanga taputapu.

Te taapiri i nga tūtohi: whakatuwhera te atanga tukutuku zabbix, tohua mai i te tahua:
Tautuhinga -> Node Whatunga -> Waihangahia he node whatunga. I konei ka nui ki te tohu i te ingoa o te kaihautu whatunga, tona roopu, me te atanga kaihoko taunoa:

Te aro turuki me te whakahaere i nga taputapu Lunix/OpenWrt/Lede ma te tauranga 80…

Inaianei me taapiri he huānga raraunga mo tenei node whatunga. Kia whai whakaaro ki nga mara e rua: "matua" - koinei tonu te tawhā i tuhia e matou i roto i te konae /etc/zabbix/zabbix_agentd.conf (i roto i ta maatau he whakamatautau), me te "whakahou i te waa" - I whakaturia e ahau ki te 5 meneti , no te mea kua rehitatia hoki nga taputapu ki runga i te tūmau kotahi i ia rima meneti.

Te aro turuki me te whakahaere i nga taputapu Lunix/OpenWrt/Lede ma te tauranga 80…

Ana, me taapiri he kauwhata. Ka tūtohu ahau ki te whiriwhiri "Whakakiia" hei ahua whakaputa.

Te aro turuki me te whakahaere i nga taputapu Lunix/OpenWrt/Lede ma te tauranga 80…

Ko te putanga he mea tino laconic, hei tauira penei:

Te aro turuki me te whakahaere i nga taputapu Lunix/OpenWrt/Lede ma te tauranga 80…

Ki te patai whaitake: "he mea utu?", Ka whakautu ahau: he pai, ko te tikanga, tirohia "nga take mo te hanga pahikara" i te timatanga o te tuhinga.

Mena ka whakaohohia e taku wheako graphomaniac tuatahi te hiahia o nga kaipanui, na i nga tuhinga e whai ake nei ka hiahia ahau ki te whakaahua me pehea te tuku whakahau ki nga taputapu mamao. I whakahaere ano matou ki te whakatinana i te kaupapa katoa mo nga taputapu i runga i te RouterOS (Mikrotik).

Source: will.com

Tāpiri i te kōrero