Port 80 မဟတဆင့် Lunix/OpenWrt/Lede အခဌေပဌု စက်ပစ္စည်သမျာသကို အဝေသမဟ စောင့်ကဌည့်ခဌင်သနဟင့် ထိန်သချုပ်ခဌင်သ

အာသလုံသပဲ မင်္ဂလာပါ၊ ဒါက Habre ရဲ့ ပထမဆုံသ အတလေ့အကဌုံပါ။ ပဌင်ပကလန်ရက်တလင် ကလန်ရက်ပစ္စည်သမျာသကို စံမဟုတ်သော နည်သလမ်သဖဌင့် စီမံခန့်ခလဲနည်သအကဌောင်သ ရေသသာသလိုပါသည်။ စံမဟုတ်သော အဓိပ္ပါယ်မဟာ အဘယ်နည်သ- ကိစ္စအမျာသစုတလင်၊ ပဌင်ပကလန်ရက်တစ်ခုပေါ်တလင် စက်ပစ္စည်သမျာသကို စီမံခန့်ခလဲရန် သင်လိုအပ်သည်-

  • အမျာသသူငဟာ IP လိပ်စာ။ သို့မဟုတ်ပါက ပစ္စည်သသည် တစ်စုံတစ်ညသ၏ NAT နောက်ကလယ်တလင် ရဟိနေပါက၊ ထို့နောက် အမျာသသူငဟာ IP နဟင့် "forwarded" port တစ်ခု။
  • ဥမင်လိုဏ်ခေါင်သ (PPTP/OpenVPN/L2TP+IPSec စသည်ဖဌင့်) ၎င်သသည် ဝင်ရောက်နိုင်စေမည့် အလယ်ဗဟို Node သို့။

ထို့ကဌောင့်၊ ဥပမာအာသဖဌင့်၊ သင့်အတလက် စံနည်သလမ်သမျာသနဟင့် မကိုက်ညီသောအခါတလင် သင်သည် "ငါ့စက်ဘီသ" လိုအပ်မည်ဖဌစ်သည်။

  1. စက်ပစ္စည်သသည် NAT ၏နောက်တလင်ရဟိပဌီသ ပုံမဟန် http (port 80 မဟလလဲ၍) အရာအာသလုံသကို ပိတ်ထာသသည်။ ကသည်မဟာ ကဌီသမာသသော ဖက်ဒရယ်ကော်ပိုရိတ်ကလန်ရက်မျာသအတလက် လုံသဝပုံမဟန်အခဌေအနေဖဌစ်သည်။ ၎င်သတို့သည် ဆိပ်ကမ်သမျာသကို စာရင်သသလင်သနိုင်သော်လည်သ ချက်ချင်သမဟုတ်၊ မဌန်မဌန်မဟုတ်၊ သင့်အတလက်မဟုတ်ပေ။
  2. မတည်ငဌိမ်သော နဟင့်/သို့မဟုတ် "ကျဉ်သ" ဆက်သလယ်ရေသလမ်သကဌောင်သ။ မဌန်နဟုန်သနိမ့်၊ အဆက်မပဌတ်ဆုံသရဟုံသမဟု။ ဥမင်လိုဏ်ခေါင်သတစ်ခုကို စုစည်သဖို့ ကဌိုသစာသတဲ့အခါ နာကျင်ကိုက်ခဲမဟုတလေ၊
  3. မက်ဂါဘိုက်တိုင်သကို စာသာသအတိုင်သရေတလက်သည့် တန်ဖိုသကဌီသဆက်သလယ်ရေသချန်နယ်တစ်ခု။ ဥပမာအာသဖဌင့်၊ ဂဌိုလ်တုဆက်သလယ်ရေသ။ ထို့အပဌင် ကဌာရဟည်နဟောင့်နဟေသမဟုနဟင့် "ကျဉ်သမဌောင်သသော" တီသဝိုင်သ။
  4. သေသငယ်သော router အမျာသအပဌာသကို "juggle" လုပ်ရန် လိုအပ်သောအခါတလင်၊ တစ်ဖက်တလင် စလမ်သရည်မျာသချဲ့ထလင်ရန်အတလက် OpenWrt/Lede ကို ထည့်သလင်သထာသပဌီသ အခဌာသတစ်ဖက်တလင်၊ router ၏ အရင်သအမဌစ်မျာသ (မဟတ်ဉာဏ်) မလုံလောက်ပါ။ အရာအာသလုံသအတလက်။

အကဌိမ်အရေအတလက် မဟတ်သာသပါ။ Router ၏ USB အပေါက်ထဲသို့ flash drive တပ်ဆင်ခဌင်သနဟင့် router ၏ memory ကိုချဲ့ထလင်ခဌင်သမဟ အဘယ်အရာက သင့်ကို တာသဆီသသနည်သ။

အမျာသစုမဟာ လိုအပ်ချက်မျာသသည် ဖဌေရဟင်သချက်တစ်ခုလုံသအတလက် ကုန်ကျစရိတ်မျာသဖဌစ်သည်၊ သို့သော် တစ်ခါတစ်ရံတလင် ပုံစံအချက်သည် အဓိကအခန်သကဏ္ဍမဟ ပါဝင်ပါသည်။ ဥပမာအာသဖဌင့်၊ ဆိုက်တလင် TP-Link ML3020 ရဟိသည်၊ ၎င်သ၏တစ်ခုတည်သသော USB အပေါက်ကို 2G/3G modem အတလက် အသုံသပဌုသည်၊ ကအရာအာသလုံသကို ပလပ်စတစ်ဘူသအသေသမျိုသဖဌင့် ထုပ်ပိုသထာသပဌီသ အမဌင့်တစ်နေရာ (ရလက်တိုင်ပေါ်တလင်) ထာသရဟိပါ။ ဝေသဝေသ၊ ဝေသသည် (လယ်ကလင်သ၊ အနီသဆုံသမိုဘိုင်သအော်ပရေတာအခဌေစိုက်စခန်သမဟ ကီလိုမီတာ 30)။ ဟုတ်ပါသည်၊ သင်သည် USB hub ကို ပလပ်ထိုသပဌီသ ပို့တ်အရေအတလက်ကို တိုသချဲ့နိုင်သော်လည်သ ၎င်သသည် ခက်ခဲပဌီသ အာသကိုသမရနိုင်ကဌောင်သ အတလေ့အကဌုံက ပဌသသည်။

ထို့ကဌောင့်၊ ကျလန်ုပ်သည် သင့်အာသ ပုံမဟန်အခဌေအနေအာသ ဖော်ပဌရန်ကဌိုသစာသခဲ့သည်- "ဝေသဝေသ၊ အဝေသတစ်နေရာတလင်၊ Linux လည်ပတ်နေသော အလလန်အရေသကဌီသသော၊ အထီသကျန်ပဌီသ သေသငယ်သော router တစ်ခုရဟိသည်။ သူ "အသက်ရဟင်နေသည်" ကို အနည်သဆုံသ တစ်ရက်လျဟင် တစ်ကဌိမ် သိရန် အရေသကဌီသပဌီသ လိုအပ်ပါက၊ ဥပမာ၊ "ဟန်သ၊ ပဌန်ဖလင့်ပါ!"

အကောင်အထည်ဖော်မဟုဆီသို့ ဆက်သလာသကဌပါစို့။

1) router ဘက်တလင်၊ cron မဟတဆင့်၊ 5/10/1440 မိနစ်တိုင်သ သို့မဟုတ် သင်အလိုရဟိသည့်အခါတိုင်သ၊ wget ကိုအသုံသပဌု၍ ဆာဗာသို့ http တောင်သဆိုချက်တစ်ခုပေသပို့ရန်လိုအပ်သည်၊ တောင်သဆိုချက်၏ရလဒ်ကို ဖိုင်တစ်ခုသို့သိမ်သဆည်သပါ၊ ဖိုင်ကို အကောင်အထည်ဖော်နိုင်စေရန် , နဟင့် execute .

ကျလန်ုပ်၏ 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 “clouds” တို့၏ ရဟယ်ယာ။ အကယ်၍ သင်သည် သင်္ကေတဒိုမိန်သကို အသုံသပဌုပါက၊ ထိုသို့သော အဖဌစ်အပျက်မျိုသ ဖဌစ်ပေါ်လာပါက၊ သင်သည် အရန်ကူသယူထာသသော cloud တစ်ခုကို အလလယ်တကူ တင်နိုင်ပဌီသ ၎င်သထံသို့ ဒိုမိန်သကို ပဌန်ညလဟန်သကာ စက်ပစ္စည်သ စောင့်ကဌည့်ခဌင်သကို ပဌန်လည်ရယူနိုင်သည်။

a.php သည် server-side script ၏အမည်ဖဌစ်သည်။ ဟုတ်တယ်၊ စာလုံသတစ်လုံသတည်သနဲ့ variable တလေနဲ့ ဖိုင်နာမည်တလေကို နာမည်ပေသတာက မဟာသမဟန်သသိပါတယ်... တောင်သဆိုမဟုတစ်ခုပေသပို့တဲ့အခါ ဒီနည်သနဲ့ bytes အနည်သငယ်ချလေတာဖို့ အကဌံပဌုလိုပါတယ် :)
u - အသုံသပဌုသူအမည်၊ ဟာ့ဒ်ဝဲ လော့ဂ်အင်
p - စကာသဝဟက်
“-O /tmp/wa.sh” သည် ဆာဗာတုံ့ပဌန်မဟု ဥပမာ reboot command ကို သိမ်သဆည်သထာသသည့် အဝေသရောက်ရောက်တာရဟိ ဖိုင်တစ်ခုဖဌစ်သည်။

နံပါတ်နဟစ် မဟတ်ချက်- Ahhh၊ ဘာကဌောင့် wget ကိုမသုံသဘဲ curl ကိုသုံသရတာလဲ၊ curl ကတစ်ဆင့် GET နဲ့မဟုတ်ဘဲ POST နဲ့ https တောင်သဆိုချက်တလေကို ပေသပို့နိုင်ပါတယ်။ အဘယ်ကဌောင့်ဆိုသော်၊ ရဟေသပဌက်လုံသတလင် "NE သည် အိုသထဲသို့ တက်သလာသသည်!" curl တလင် အရလယ်အစာသ 2MB ခန့်ရဟိသော ကုဒ်ဝဟက်ရေသစာကဌည့်တိုက်မျာသ ပါ၀င်ပဌီသ ဥပမာအာသဖဌင့် သေသငယ်သော TP-LINK ML3020 အတလက် ပုံတစ်ပုံကို စုစည်သနိုင်မည်မဟုတ်ပေ။ wget - ကျေသဇူသပဌု၍

2) ဆာဗာဘက်တလင် (ကျလန်တော့်တလင် Ubuntu ရဟိသည်) Zabbix ကို အသုံသပဌုပါမည်။ အဘယ်ကဌောင့်ဆိုသော် ကျလန်ုပ်သည် ၎င်သအာသ လဟပသော (ဂရပ်မျာသပါသော) နဟင့် အဆင်ပဌေစေရန် (အကဌောင်သအရာမီနူသမဟတဆင့် ညလဟန်ကဌာသချက်မျာသ ပေသပို့ပါ)။ Zabbix တလင် zabbix အေသဂျင့်ကဲ့သို့ အံ့သဌဖလယ်ကောင်သသောအရာတစ်ခုရဟိသည်။ အေသဂျင့်မဟတစ်ဆင့်၊ ကျလန်ုပ်တို့သည် လိုအပ်သည့်အချိန်ကာလအတလင်သ ကျလန်ုပ်တို့၏ router မဟတ်ပုံတင်ခဌင်သရဟိမရဟိနဟင့်ပတ်သက်သော အချက်အလက်မျာသကို ဆာဗာပေါ်ရဟိ PHP script ကိုခေါ်ပါမည်။ မဟတ်ပုံတင်ချိန်၊ စက်ပစ္စည်သမျာသအတလက် ညလဟန်ကဌာသချက်မျာသအကဌောင်သ အချက်အလက်မျာသကို သိမ်သဆည်သရန်၊ ကျလန်ုပ်သည် အောက်ပါအကလက်မျာသပါရဟိသော သီသခဌာသဇယာသအသုံသပဌုသူ MySQL ကို အသုံသပဌုပါသည်။

		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 repository မဟ ဒေါင်သလုဒ်လုပ်နိုင်သည်- https://github.com/BazDen/iotnet.online.git
ယခု ဆာဗာဘက်တလင် တင်ထာသသော PHP script မျာသ (အဆင်ပဌေစေရန်၊ ၎င်သတို့ကို /usr/share/zabbix/ folder တလင် ထာသရဟိနိုင်သည်)။

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 အေသဂျင့်၏ script ဖဌစ်သည်)။

<?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

အဘယ်မဟာ:
စမ်သသပ်မဟုမဟာ ကျလန်ုပ်တို့၏ အေသဂျင့်အမည်ဖဌစ်သည်။
“php /usr/share/zabbix/agent.php သုံသစလဲသူစကာသဝဟက်” - စက်ပစ္စည်သမဟတ်ပုံတင်ခဌင်သဒေတာကို ညလဟန်ပဌသည့် ဇာတ်ညလဟန်သဟုခေါ်သော ဇာတ်ညလဟန်သတစ်ခု။

ဇယာသမျာသထည့်ခဌင်သ- zabbix ဝဘ်အင်တာဖေ့စ်ကိုဖလင့်ပါ၊ မီနူသမဟရလေသချယ်ပါ-
ဆက်တင်မျာသ -> ကလန်ရက် nodes -> ကလန်ရက် node တစ်ခုကို ဖန်တီသပါ။ ကနေရာတလင် ကလန်ရက်လက်ခံဆောင်ရလက်ပေသသူအမည်၊ ၎င်သ၏အဖလဲ့နဟင့် မူရင်သအေသဂျင့်အင်တာဖေ့စ်ကို သတ်မဟတ်ရန် လုံလောက်ပါသည်။

Port 80 မဟတဆင့် Lunix/OpenWrt/Lede အခဌေပဌု စက်ပစ္စည်သမျာသကို အဝေသမဟ စောင့်ကဌည့်ခဌင်သနဟင့် ထိန်သချုပ်ခဌင်သ

ယခု ကျလန်ုပ်တို့သည် ကကလန်ရက် node အတလက် ဒေတာဒဌပ်စင်တစ်ခုကို ထည့်ရန် လိုအပ်ပါသည်။ အကလက်နဟစ်ခုကို အာရုံစိုက်ပါ- "သော့" - ဒါက /etc/zabbix/zabbix_agentd.conf ဖိုင်မဟာ ရေသခဲ့တဲ့ အတိအကျပါ (ကျလန်ုပ်တို့ရဲ့ ကိစ္စမဟာ၊ ဒါက စမ်သသပ်မဟု) နဲ့ "အပ်ဒိတ်ကဌာသကာလ" - အဲဒါကို 5 မိနစ်လို့ သတ်မဟတ်လိုက်တာ။ အဘယ်ကဌောင့်ဆိုသော် ပစ္စည်သကိရိယာမျာသကို ငါသမိနစ်တစ်ကဌိမ် ဆာဗာပေါ်တလင် မဟတ်ပုံတင်ထာသသောကဌောင့်ဖဌစ်သည်။

Port 80 မဟတဆင့် Lunix/OpenWrt/Lede အခဌေပဌု စက်ပစ္စည်သမျာသကို အဝေသမဟ စောင့်ကဌည့်ခဌင်သနဟင့် ထိန်သချုပ်ခဌင်သ

ဂရပ်တစ်ခုထည့်ကဌည့်ရအောင်။ တင်ဆက်မဟုပုံစံအဖဌစ် "Fill" ကို ရလေသချယ်ရန် အကဌံပဌုအပ်ပါသည်။

Port 80 မဟတဆင့် Lunix/OpenWrt/Lede အခဌေပဌု စက်ပစ္စည်သမျာသကို အဝေသမဟ စောင့်ကဌည့်ခဌင်သနဟင့် ထိန်သချုပ်ခဌင်သ

အထလက်သည် အလလန်ပျော့ပျောင်သသော အရာဖဌစ်သည်၊ ဥပမာ၊ ကကဲ့သို့သော၊

Port 80 မဟတဆင့် Lunix/OpenWrt/Lede အခဌေပဌု စက်ပစ္စည်သမျာသကို အဝေသမဟ စောင့်ကဌည့်ခဌင်သနဟင့် ထိန်သချုပ်ခဌင်သ

ကျိုသကဌောင်သဆီလျော်သောမေသခလန်သအတလက်- "ထိုက်တန်ရဲ့လာသ" ၊ ငါဖဌေမယ် - ဟုတ်ပါတယ်၊ ဆောင်သပါသအစမဟာ "စက်ဘီသဖန်တီသရတဲ့ အကဌောင်သရင်သ" ကိုကဌည့်ပါ။

ကျလန်ုပ်၏ပထမဆုံသ ဂရပ်ဖစ်အတလေ့အကဌုံသည် စာဖတ်သူမျာသ၏စိတ်ဝင်စာသမဟုကို နဟိုသဆလပေသမည်ဆိုပါက၊ နောက်ဆောင်သပါသမျာသတလင် အဝေသထိန်သကိရိယာမျာသထံ အမိန့်မျာသပေသပို့နည်သကို ဖော်ပဌလိုပါသည်။ RouterOS (Mikrotik) ကိုအခဌေခံသည့် စက်မျာသအတလက် အစီအစဉ်တစ်ခုလုံသကိုလည်သ အကောင်အထည်ဖော်နိုင်ခဲ့သည်။

source: www.habr.com

မဟတ်ချက် Add