වරාය 80 හරහා Linux/OpenWrt/Lede උපාංග දුරස්ථ අධීක්ෂණය සහ පාලනය, දිගටම

මේ ලිපියේ අවසාන කොටස, මෙන්න ආරම්භය habr.com/en/post/445568
මම උපාංග අධීක්ෂණය ක්‍රියාත්මක කළ ආකාරය ගැන අවසන් වරට ලිව්වා, දැන් අපි කළමනාකරණය ගැන කතා කරමු. පාරිභෝගිකයාගේ පාර්ශ්වයේ “තාක්ෂණ ශිල්පීන්” සමඟ සාකච්ඡා කිරීමේදී, එවැනි කුඩා උපාංගවල (අඩු මතක සම්පත් සහ ක්‍රියාකාරීත්වය සහිත) හැකියාවන් පිළිබඳ සීමිත අවබෝධයක් මට බොහෝ විට හමු වේ, බොහෝ දෙනා විශ්වාස කරන්නේ “අපට වැඩිපුරම අවශ්‍ය වන්නේ තවත් දෙයක් සඳහා නැවත පණගැන්වීමක් යැවීමයි. බරපතල අපි කණ්ඩායමක් එවන්නම්" .
නමුත් ප්රායෝගිකව පෙන්නුම් කරන්නේ මෙය සම්පූර්ණයෙන්ම සත්ය නොවන බවයි. මෙන්න පොදු සාමාන්ය කාර්යයන් පිළිබඳ කුඩා ලැයිස්තුවක්:

  1. ජාල රෝග විනිශ්චය සහ දෝශ නිරාකරණය. ඔබේ රවුටරයේ ඊතර්නෙට් පෝට් එක පිටුපස සාමාන්‍යයෙන් එහි අභ්‍යන්තර IP ලිපිනයක් ඇති තවත් දෘඪාංගයක් ඇත. සමහර විට, ඔබට එය "පිං" කළ හැකිය. නැතහොත් උමං කළමනාකරණය - 3G මොඩමයක් හරහා ක්‍රියාත්මක වන රවුටරයක් ​​මත උමඟ හදිසියේම නැඟී නොයන්නේ නම්, නමුත් අපට රවුටරයම දැකිය හැකිය.
  2. පද්ධති නඩත්තුව. ස්ථිරාංග යාවත්කාලීන කිරීම, සේවා ස්ක්‍රිප්ට් උත්ශ්‍රේණි කිරීම.
  3. සමතුලිත පනත. මෙය "විකෘති" ලෙස හැඳින්විය හැක, නමුත් "සමතුලිත" සංකල්පය, මම උපුටා දක්වන්නේ, "සර්කස් වාදකයෙකුට අස්ථිර ශරීර ස්ථානයක සමබරතාවය පවත්වා ගැනීමට ඇති හැකියාව" - වඩා හොඳින් ගැලපේ. පාරිභෝගිකයාගේ සීමිත අයවැය හේතුවෙන් එවැනි තත්වයන් පැන නගී. පහත මම උදාහරණ කිහිපයක් ලබා දුන්නා, නමුත් ... ඒවා කතාවේ තේමාවට කෙලින්ම සම්බන්ධ නැහැ, මම ඒවා සටහන් වලට දැම්මා

Wi-Fi අධීක්ෂණයප්‍රධාන වශයෙන් ෆෙඩරල් සිල්ලර වෙළඳ ජාලයන් අතර පසුගිය වසර පහ සඳහා විලාසිතාමය මාතෘකාවක්. ඔබ විවේකයෙන් වෙළඳ පොළවල් හරහා ඇවිදිමින් සිටින අතර, Wi-Fi සක්‍රිය කර ඇති ඔබගේ ජංගම දුරකථනය, ජාලයේ යම් නූල් වලට “ඇලෙන්න” උත්සාහ කරමින්, ගණනය කිරීම සඳහා විශ්ලේෂණය කළ හැකි Probe Request පැකට් නිතිපතා යවයි. ඔබ: ඔබ කොපමණ වාරයක් මෙම වෙළඳසැලට පැමිණෙන්නේ, කුමන හේතු නිසාද? ඔබ ගමන් පථ ඔස්සේ ගමන් කරයි සහ යනාදිය. එවිට දත්ත එකතු කිරීම, විශ්ලේෂණය කිරීම, තාප සිතියම් අඳිනු ලබන අතර, කළමනාකරුවන් එවැනි පින්තූර සඳහා කළමනාකරණය හෝ ආයෝජකයින්ගෙන් මුදල් "කප්පම්" කරති. හොඳයි, දැනට .... "මුදල් නැත, නමුත් ඔබ රැඳී සිටින්න ...", සහ ප්රතිඵලය (සැබෑ) දැනටමත් පෙන්විය යුතුය, හොඳ පැරණි ගීතය ආරම්භ වේ: "ඔව්, ඔව්, ඇත්තෙන්ම අපි cis සහ ඔබට අවශ්‍ය සියල්ල ස්ථාපනය කරනු ඇත, නමුත් දැන් අපට ප්‍රතිඵලය පාරිභෝගිකයාට පෙන්විය යුතුය! මාර්ගය වන විට, අපගේ උපකරණ Wi-Fi හරහා ඔහුගේ හොට්ස්පොට් වෙත සම්බන්ධ කිරීමට පාරිභෝගිකයා අපට ඉඩ දී ඇති බව පැවසීමට අපට අමතක විය, නමුත් සාමාන්‍ය පදනමක් මත, අපි ආගන්තුක සේවාදායකයින් මෙන් ය. එබැවින් අපට සමතුලිත රවුටර සෑදිය යුතුය - WiFi උප අතුරුමුහුණත් කිහිපයක් ඉහළ නංවා ඇත, ඉන් එකක් හොට්ස්පොට් වෙත ඇලී සිටින අතර, දෙවැන්න පරිසරය නිරීක්ෂණය කරයි, tcpdump ප්‍රති result ලය වියරුවෙන් උඩුගත කරයි, පසුව ගොනුවේ අන්තර්ගතය ලේඛනාගාරයකට ඇසුරුම් කර අවදානම් කරයි. "අධික කෑමෙන්" මියයාම FTP සේවාදායකයේ අන්තර්ගතය පිට කිරීමට උත්සාහ කරයි. සමතුලිත රවුටරය බොහෝ විට "බිඳවැටීම" සහ කෙසේ හෝ දුරස්ථව "නැවත පණ ගැන්වීම" සිදු කිරීම පුදුමයක් නොවේ.

අරයපාරිභෝගිකයාගේ මෙම ප්‍රකාශය වැනි දෙයක් සමඟ මෙහි තත්ත්වය විස්තර කිරීම පහසුය: “අපට අවශ්‍ය වන්නේ නාලිකා හරහා කල්තියා නොදන්නා, නමුත් අප තවමත් නොදන්නා උපකරණවල ක්‍රියා කරන විමධ්‍යගත හොට්ස්පොට් ජාලයකි. ඔහ්, අපට කියන්නට අමතක විය, අපට ගනුදෙනුකරුවන්ට වෙළඳ දැන්වීම් පෙන්වීමට පමණක් නොව, හොට්ස්පොට් ස්ථාපනය කර ඇති ස්ථානය වටා ඇති සියල්ල විශ්ලේෂණය කිරීමටද අවශ්ය වේ. නැත, ඇයි දැයි අපි තවමත් නොදනිමු, නමුත් අපි එය හඳුනා ගනිමු, එය සැක නොකරන්න, අපට මෙම අදහස ඉදිරිපත් කිරීමට හැකි විය.

කලින් නොදන්නා බොහෝ තත්වයන් නිසා, අපට IP: port හරහා කෙලින්ම රවුටරයට සම්බන්ධ වීමට නොහැකි වූ විට සහ එයින් ක්‍රියාකාරකම් සඳහා බලා සිටීමට බල කෙරෙන විට, සම්මත නොවන තත්වයන් යටතේ පාලනය සිදු කළ යුතු බව අප අමතක නොකළ යුතුය. අපි අපවම වියුක්ත කරන්නේ නම්, සේවාදායකය සහ රවුටරය අතර සංවාදය මෙලෙස නිරූපණය කළ හැකිය:

  • රවුටරය: ආයුබෝවන්. මම එවැනි සහ එවැනි රවුටරයක්, මට යම් කාර්යයන් තිබේද?
  • සර්වර්: රවුටරය එවැනි සහ එවැනි, මම ඔබව ලියාපදිංචි කළෙමි, ඔබ ජීවතුන් අතර සිටින බව. මෙන්න අභියෝගය: ifconfig විධානයේ ප්‍රතිඵලය මට පෙන්වන්න?
  • රවුටරය: ආයුබෝවන්. මම එහෙම රවුටරයක් ​​තමයි, ගිය සැරේ ඔයා ifconfig එකේ ප්‍රතිඵලය පෙන්නන්න කිව්වා, මෙන්න මේකයි. මා සඳහා කිසියම් කාර්යයක් තිබේද?
  • සර්වර්: රවුටරය එවැනි සහ එවැනි, මම ඔබව ලියාපදිංචි කළෙමි, ඔබ ජීවතුන් අතර සිටින බව. ඔබ සඳහා කාර්යයන් නොමැත.

වඩාත්ම සිත්ගන්නා ප්රශ්නය: දුරස්ථ රවුටරයක් ​​යම් තොරතුරු ප්රමාණයක් යැවිය හැක්කේ කෙසේද? අවසාන කොටසේදී, මම විස්තර කළේ සීමිත සම්පත් නිසා, රවුටරයේ ඇත්තේ “ඉවත් කළ” wget එකක් පමණක් වන අතර එය ක්‍රියා කරන්නේ GET හරහා පමණක් වන අතර වෙන කිසිවක් නැත; FTP සේවාදායකයා හෝ curl නොමැත. වඩාත් නිවැරදිව, රූප එකලස් කිරීමේ ලක්ෂණ නොතකා අපට විශ්වීය ක්රමයක් අවශ්ය වේ. මම wget භාවිතා කිරීමට තීරණය කළෙමි. වඩාත් නිවැරදිව, මම "නැවැත්වූ" ආකාරය - මට වෙනත් විකල්පයක් නොතිබුණි :)

වියාචනයක් පමණිමගේ කළමනාකරණ විසඳුම ක්‍රියාත්මක වන අතර, ඉතා සීමිත නොවේ, සහ එය මගේ බොහෝ ගනුදෙනුකරුවන්ට ගැලපෙන නමුත්, එය වංක බව මට විශ්වාසයි. ඔබ එය ඥානවන්තව කරන්නේ කෙසේද - පෝට් 80 හරහා POST ද්විමය දත්ත යවන කුඩා උපයෝගීතාවයක් ලියන්න. රවුටරයේ ස්ථිරාංගයේ එය (උපයෝගිතා) ඇතුළත් කර එය bash භාවිතයෙන් ප්රවේශ කරන්න. නමුත් යථාර්ථය නම්: අ) අපට ඉක්මනින් අවශ්‍යයි ආ) දැනට පවතින “රවුටර සත්වෝද්‍යානයේ” සෑම දෙයක්ම කිරීමට අපට අවශ්‍ය වේ ඇ) “කිසිම හානියක් නොකරන්න!” - රවුටරය වැඩ කරන්නේ නම් සහ වෙනත් කාර්යයන් ඉටු කරන්නේ නම්, පවතින ක්රියාකාරිත්වයට බලපාන්නේ නැති වෙනස්කම් කිරීමට උත්සාහ කරන්න.

අපි ක්රියාත්මක කිරීමට ඉදිරියට යමු. ඔබේ පාරිභෝගිකයාට "මූසිකය ක්ලික් කිරීමකින්" පහසුවෙන් සහ ස්වභාවිකව zabbix වෙතින් රවුටරය නැවත ආරම්භ කිරීමට අවශ්‍ය යැයි සිතමු. අද අපි Zabbix සමඟ ක්රියාත්මක කිරීම විස්තර කිරීමට පටන් ගනිමු.
“පරිපාලනය” -> “ස්ක්‍රිප්ට්” මෙනුව තුළ, නව ස්ක්‍රිප්ට් එකක් එක් කරන්න. අපි එය "Reboot" ලෙස හඳුන්වමු, "php /usr/share/zabbix/reboot.php {HOST.HOST}" විධානයක් ලෙස ඇතුළත් කරන්න.

වරාය 80 හරහා Linux/OpenWrt/Lede උපාංග දුරස්ථ අධීක්ෂණය සහ පාලනය, දිගටම

ඊළඟ: මෙනුව "අධීක්ෂණය" -> "නවතම දත්ත" -> "අවශ්‍ය ජාල නෝඩය මත දකුණු-ක්ලික් කරන්න." ස්ක්‍රිප්ට් එක එකතු කළ පසු මෙනුව පෙනෙන්නේ මෙයයි.

වරාය 80 හරහා Linux/OpenWrt/Lede උපාංග දුරස්ථ අධීක්ෂණය සහ පාලනය, දිගටම
ඒ අනුව, අපි reboot.php ස්ක්‍රිප්ට් එක /usr/share/zabbix බහලුම තුළ තබමු (ඔබේ ඒවා වෙනස් විය හැක, මම භාවිතා කරන්නේ zabbixa root බහලුම).

ආරක්ෂිත වියාචනයස්ක්‍රිප්ටයේ පැහැදිලි කිරීම වඩාත් පැහැදිලි කිරීමට, මම රවුටර හැඳුනුම්පත පමණක් භාවිතා කරමි, නමුත් මුරපදය භාවිතා නොකරන්න. නිෂ්පාදන අනුවාදයේ මෙය කිරීම නිර්දේශ නොකරයි! මම මෙය කළේ ඇයි: විශාල ප්‍රශ්නය රවුටර සඳහා මුරපද ගබඩා කරන්නේ කොතැනද? "ඉන්වෙන්ටරි දත්ත" තුළම zabbixe හිද? මතභේදාත්මක භාවිතය. විකල්පයක් ලෙස: reboot.php ගොනුවටම බාහිර ප්‍රවේශය සීමා කරන්න

ගොනුව reboot.php

<?php
	// присваиваем параметры с консоли переменным
	$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");
			
	// "Отправляем" команду reboot за счет изменения поля task таблицы users. В поле task можно отправлять любую команду.
	$sql_users=$conn->prepare("UPDATE users SET task='reboot' WHERE id=? AND status='active';");
	$sql_users->bind_param('s', $user);
	$sql_users->execute();
	$sql_users->close();
?>

එච්චරයි. ප්රශ්නය විවෘතව පවතී: "උපාංගයෙන් විධානයක් ක්රියාත්මක කිරීමේ ප්රතිඵලය ලබා ගන්නේ කෙසේද." උදාහරණයක් ලෙස ifconfig විධානය භාවිතා කරමින් කාර්යය දෙස බලමු. මෙම විධානය උපාංගයට යැවිය හැක:

message=`ifconfig`; wget "http://xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php?u=user&p=password!&m=$message" -O /tmp/out.txt

, එහිදී:
පණිවිඩය=`ifconfig` — අපි ifconfig විධාන ප්‍රතිදානයේ ප්‍රතිඵලය $message විචල්‍යයට පවරමු
wget"xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php — අපගේ a.php ස්ක්‍රිප්ට් රවුටර ලියාපදිංචි කර ඒවායින් පණිවිඩ ලබා ගනී
u=user&p=password!&m=$message — අක්තපත්‍ර සහ ඉල්ලීම් විචල්‍යයේ අගය m — $message විචල්‍යයේ අන්තර්ගතය පවරයි
-O /tmp/out.txt — මෙම අවස්ථාවෙහිදී අපට /tmp/out.txt ගොනුවට ප්‍රතිදානය අවශ්‍ය නොවේ, නමුත් මෙම පරාමිතිය නියම කර නොමැති නම්, wget ක්‍රියා නොකරයි

මෙය ක්රියා නොකරන්නේ ඇයි?එය විභව ආරක්ෂක සිදුරක් නිසා. සිදුවිය හැකි වඩාත්ම හානිකර දෝෂය නම්, උදාහරණයක් ලෙස, ඔබේ විධානයේ ප්‍රතිදානයේ “&” අක්ෂරයක් තිබේ නම්. ඒ නිසා Routers වලින් යවන හැම දෙයක්ම සහ server එකට එන හැමදෙයක්ම filter කරන්න ඕන. ඔව්, ඇත්තටම මට ලැජ්ජයි. මගේ ආරක්‍ෂාව තුළ, මට ලිවිය හැක්කේ මුළු ලිපියම කලින් නිර්වචනය නොකළ ස්ථිරාංග සහ සන්නිවේදන නාලිකා සමඟ රවුටර කළමනාකරණය කරන්නේ කෙසේද යන්න පිළිබඳව පමණි.

හොඳයි, අනාගතය සඳහා ආරම්භයක්: සේවාදායකය වෙත පැමිණෙන ප්රතිඵල (උදාහරණයක් ලෙස, විධානයක් ක්රියාත්මක කිරීමේ ප්රතිඵලය) පිළිබිඹු කිරීම සඳහා සම්මත zabbix මෙවලම් භාවිතා කරන්නේ කෙසේදැයි මම තවමත් සොයාගෙන නැත.

සියලුම මූලාශ්‍ර Git ගබඩාවෙන් ලබාගත හැකි බව මම ඔබට මතක් කරමි: github.com/BazDen/iotnet.online.git

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න