Dieses Projekt enthält eine Reihe von Konsolentools zum Herstellen einer Verbindung zu und zum Bedienen von Geräten mithilfe des MikroTik RouterOS MAC-Telnet-Protokolls. Dies ist ein proprietäres Netzwerkprotokoll, das von MikroTik RouterOS-Geräten verwendet wird, um Shell-Zugriff auf ihre Geräte zu ermöglichen, auch wenn das Gerät nicht mit einer IP-Adresse konfiguriert ist.
Das Protokoll basiert auf dem Senden und Empfangen von UDP-Broadcast-Paketen und ist daher in keiner Weise sicher . Es sollte nur als letzter Ausweg für die Konfiguration eines Geräts ohne IP-Adresse oder in einer sicheren Netzwerkumgebung verwendet werden.
Zusätzlich zu einem Client und einem Server umfasst dieses Projekt auch ein Ping-Tool, mit dem RouterOS-Geräte anhand ihrer MAC-Adresse gepingt werden können, sowie ein MNDP-Tool, mit dem RouterOS- und MAC-Telnet-Geräte im lokalen Netzwerk erkannt werden können .
Der MAC-Telnet-Client und -Server unterstützt jetzt die neue EC-SRP-Authentifizierung, die obligatorisch ist, nachdem Mikrotik die Unterstützung für MD5-Authentifizierung in RouterOS v6.43 und höher entfernt hat. Die Unterstützung der Verwendung der alten MD5-Authentifizierung ist weiterhin über Befehlszeilen-Flags für Abwärtskompatibilität möglich.
Mit der neuen EC-SRP-Authentifizierung unterstützt der MAC-Telnet-Server jetzt Passwort-Hashing für die Benutzerdatei. Dies bedeutet, dass der Server gehashte Passwörter anstelle von Klartext-Passwörtern in einer Datei speichern kann. Um Benutzer mit der neuen Hash-Passwort-Unterstützung hinzuzufügen/zu aktualisieren, verwenden Sie das Flag -a
mit dem Befehl mactelnetd
. Sie können Benutzer auch mit dem Flag -l
auflisten oder Benutzer mit -d
aus der Benutzerdatei löschen.
Hinweis: Diese Befehle können bei laufendem Server verwendet werden, um die Benutzerdatenbank zu aktualisieren, ohne den Server neu zu starten.
Tipp
Wenn Sie beim Kompilieren aus der Quelle nur die mactelnet
Client-Tools und nicht den mactelnetd
-Server benötigen, können Sie vor dem Kompilieren das Flag --without-mactelnetd
zum Befehl ./configure
hinzufügen.
ghcr.io/haakonnessjoen/mac-telnet
enthält die neueste Version aller vier Programme:
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 …
Beachten Sie, dass Docker Container standardmäßig in isolierten internen Netzwerken ausführt. --net=host
weist Docker an, mactelnet
direkten Zugriff auf die Netzwerkschnittstellen des Host-Computers bereitzustellen.
Weitere Informationen finden Sie unter Verwendung.
So installieren Sie Abhängigkeiten:
yum -y install wget automake gettext gettext-devel libbsd-devel gcc make
Quell-Tarball herunterladen, extrahieren, kompilieren und installieren:
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
Die neuesten Versionen sind normalerweise in den neuesten Versionen von Debian und Ubuntu verfügbar. Sie können sie mit apt install mactelnet-client
oder apt install mactelnet-server
installieren.
Um den neuesten master
-Zweig aus der Quelle zu installieren, befolgen Sie die folgenden Anweisungen:
apt-get install build-essential autopoint automake autoconf libbsd-dev libssl-dev gettext
Quell-Tarball herunterladen, extrahieren, kompilieren und installieren:
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
Abhängigkeiten: clang (gcc oder ähnlich), automake, autoconf
So installieren Sie Abhängigkeiten von FreeBSD:
pkg install automake autoconf gettext-tools
Quell-Tarball herunterladen, extrahieren, kompilieren und installieren:
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
Laden Sie den Quell-Tarball herunter und extrahieren Sie:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
Abhängigkeiten installieren
brew install gettext autoconf automake libtool openssl pkg-config
Build-Umgebung einrichten, kompilieren und installieren:
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.
Beispiel mit Identität:
$ mactelnet main-router
Searching for 'main-router'...found
Login: admin
Password:
Connecting to d4:ca:6d:12:47:13...done
Beispiel mit Mac-Adresse:
$ 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] >
Sie können das bekannte „Expect“-Tool verwenden, um Dialoge über Mactelnet zu automatisieren/skripten!
# 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.
Beispiel:
# 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
Oder zur Verwendung im Bash-Scripting:
# 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] )