يحتوي هذا المشروع على مجموعة من أدوات وحدة التحكم للاتصال بالأجهزة وخدمتها باستخدام بروتوكول MikroTik RouterOS MAC-Telnet. هذا هو بروتوكول شبكة خاص تستخدمه أجهزة MikroTik RouterOS لتوفير الوصول إلى أجهزتها حتى إذا لم يتم تكوين الجهاز باستخدام عنوان IP.
يعتمد البروتوكول على إرسال واستقبال حزم بث UDP، لذا فهو غير آمن بأي حال من الأحوال. يجب استخدامه فقط كملاذ أخير لتكوين جهاز يفتقر إلى عنوان IP، أو في بيئة شبكة آمنة.
بالإضافة إلى العميل والخادم، يتضمن هذا المشروع أيضًا أداة ping، التي يمكن استخدامها لاختبار اتصال أجهزة RouterOS باستخدام عنوان MAC الخاص بها، وأداة MNDP، التي يمكن استخدامها لاكتشاف أجهزة RouterOS وMAC-Telnet على الشبكة المحلية. .
يدعم الآن عميل وخادم MAC-Telnet مصادقة EC-SRP الجديدة التي أصبحت إلزامية بعد قيام Mikrotik بإزالة دعم مصادقة MD5 في RouterOS v6.43 وما بعده. لا يزال دعم استخدام مصادقة MD5 القديمة ممكنًا عبر علامات سطر الأوامر للتوافق مع الإصدارات السابقة.
بفضل مصادقة EC-SRP الجديدة، يدعم خادم MAC-Telnet الآن تجزئة كلمة المرور لملف المستخدم. وهذا يعني أنه يمكن للخادم تخزين كلمات المرور المجزأة في ملف، بدلاً من كلمات مرور النص العادي. لإضافة/تحديث المستخدمين بدعم كلمة المرور المجزأة الجديدة، استخدم العلامة -a
مع الأمر mactelnetd
. يمكنك أيضًا إدراج المستخدمين باستخدام العلامة -l
، أو حذف المستخدمين من ملف المستخدم باستخدام -d
.
ملاحظة: يمكن استخدام هذه الأوامر أثناء تشغيل الخادم لتحديث قاعدة بيانات المستخدم دون إعادة تشغيل الخادم.
نصيحة
إذا كنت تريد فقط أدوات عميل mactelnet
، وليس خادم mactelnetd
عند الترجمة من المصدر، فيمكنك إضافة علامة --without-mactelnetd
إلى الأمر ./configure
قبل الترجمة.
يحتوي ghcr.io/haakonnessjoen/mac-telnet
على أحدث إصدار من البرامج الأربعة:
docker run -it --rm --net=host haakonn/mactelnet mactelnet …
docker run -it --rm --net=host haakonn/mactelnet macping …
docker run -it --rm --net=host haakonn/mactelnet mndp …
docker run -it --rm --net=host haakonn/mactelnet mactelnetd …
لاحظ أن Docker يقوم بتشغيل الحاويات على الشبكات الداخلية المعزولة بشكل افتراضي. --net=host
يوجه Docker لتوفير وصول مباشر mactelnet
إلى واجهات الشبكة الخاصة بالجهاز المضيف.
انظر الاستخدام للمزيد.
لتثبيت التبعيات:
yum -y install wget automake gettext gettext-devel libbsd-devel gcc make
قم بتنزيل مصدر tarball واستخراجه وتجميعه وتثبيته:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
./autogen.sh
make all install
تتوفر أحدث الإصدارات عادةً في أحدث إصدارات Debian وUbuntu. يمكنك تثبيتها باستخدام apt install mactelnet-client
أو apt install mactelnet-server
.
لتثبيت أحدث فرع master
من المصدر ، استخدم الإرشادات التالية:
apt-get install build-essential autopoint automake autoconf libbsd-dev libssl-dev gettext
قم بتنزيل مصدر tarball واستخراجه وتجميعه وتثبيته:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
./autogen.sh
make all install
التبعيات: clang (دول مجلس التعاون الخليجي أو ما شابه)، automake، autoconf
لتثبيت التبعيات على FreeBSD:
pkg install automake autoconf gettext-tools
قم بتنزيل مصدر tarball واستخراجه وتجميعه وتثبيته:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
./autogen.sh
./configure LDFLAGS=" -L/usr/local/lib"
gmake all install
قم بتنزيل مصدر tarball واستخرجه:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
تثبيت التبعيات
brew install gettext autoconf automake libtool openssl pkg-config
إعداد بيئة البناء والتجميع والتثبيت:
export GETTEXT_PATH=$(brew --prefix gettext)
export OPENSSL_PATH=$(brew --prefix openssl)
export PATH="${GETTEXT_PATH}/bin:${OPENSSL_PATH}/bin:$PATH"
export LDFLAGS="-L${GETTEXT_PATH}/lib"
export CPPFLAGS="-I${GETTEXT_PATH}/include -I${OPENSSL_PATH}/include"
export CRYPTO_CFLAGS="-I${OPENSSL_PATH}/include"
export CRYPTO_LIBS="-L${OPENSSL_PATH}/lib ${OPENSSL_PATH}/lib/libcrypto.3.dylib"
./autogen.sh
make all install
# mactelnet -h
Usage: mactelnet [-h] [-n] [-a ] [-A] [-t ] [-u ] [-p ] [-U ] | -l [-B] [-t ]
Parameters:
MAC MAC-Address of the RouterOS/mactelnetd device. Use mndp to
discover it.
identity The identity/name of your destination device. Uses
MNDP protocol to find it.
-l List/Search for routers nearby (MNDP). You may use -t to set timeout.
-B Batch mode. Use computer readable output (CSV), for use with -l.
-n Do not use broadcast packets. Less insecure but requires
root privileges.
-a Use specified path instead of the default: ~/.mactelnet for autologin config file.
-A Disable autologin feature.
-t Amount of seconds to wait for a response on each interface.
-u Specify username on command line.
-p Specify password on command line.
-U Drop privileges to this user. Used in conjunction with -n
for security.
-q Quiet mode.
-o Force old MD5 authentication method.
-h This help.
مثال باستخدام الهوية:
$ mactelnet main-router
Searching for 'main-router'...found
Login: admin
Password:
Connecting to d4:ca:6d:12:47:13...done
مثال باستخدام عنوان ماك:
$ mactelnet 0:c:42:43:58:a5
Login: admin
Password:
Connecting to 0:c:42:43:58:a5...done
MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
MikroTik RouterOS 6.49 (c) 1999-2021 http://www.mikrotik.com/
[admin@Mikrotik] >
يمكنك استخدام أداة "التوقع" المعروفة لأتمتة/الحوارات النصية عبر mactelnet!
# mactelnet -l
# macping -h
Usage: macping [-h] [-c ] [-s ]
Parameters:
MAC MAC-Address of the RouterOS/mactelnetd device.
-s Specify size of ping packet.
-c Number of packets to send. (0 = for ever)
-h This help.
مثال:
# macping 0:c:42:43:58:a5
0:c:42:43:58:a5 56 byte, ping time 1.17 ms
0:c:42:43:58:a5 56 byte, ping time 1.07 ms
0:c:42:43:58:a5 56 byte, ping time 1.20 ms
0:c:42:43:58:a5 56 byte, ping time 0.65 ms
0:c:42:43:58:a5 56 byte, ping time 1.19 ms
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.65/1.06/1.20 ms
أو للاستخدام في البرمجة النصية bash:
# macping 0:c:42:43:58:a5 -c 2 >/dev/null 2>&1 || ( echo "No answer for 2 pings" | mail -s "router down" [email protected] )