Este projeto contém um conjunto de ferramentas de console para conectar e servir dispositivos usando o protocolo MikroTik RouterOS MAC-Telnet. Este é um protocolo de rede proprietário usado pelos dispositivos MikroTik RouterOS para fornecer acesso shell aos seus dispositivos, mesmo que o dispositivo não esteja configurado com um endereço IP.
O protocolo é baseado no envio e recebimento de pacotes de transmissão udp, portanto não é seguro de forma alguma. Deve ser usado apenas como último recurso para configurar um dispositivo sem endereço IP ou em um ambiente de rede seguro.
Além de um cliente e servidor, este projeto também inclui uma ferramenta de ping, que pode ser usada para executar ping em dispositivos RouterOS usando seu endereço MAC, e uma ferramenta MNDP, que pode ser usada para descobrir dispositivos RouterOS e MAC-Telnet na rede local. .
O cliente e servidor MAC-Telnet agora suporta a nova autenticação EC-SRP que é obrigatória depois que o Mikrotik removeu o suporte para autenticação MD5 no RouterOS v6.43 e posteriores. O suporte para usar a antiga autenticação MD5 ainda é possível por meio de sinalizadores de linha de comando para compatibilidade com versões anteriores.
Com a nova autenticação EC-SRP, o servidor MAC-Telnet agora suporta hashing de senha para o arquivo do usuário. Isso significa que o servidor pode armazenar senhas com hash em um arquivo, em vez de senhas em texto simples. Para adicionar/atualizar usuários com suporte à nova senha com hash, use o sinalizador -a
com o comando mactelnetd
. Você também pode listar usuários com o sinalizador -l
ou excluir usuários do arquivo do usuário com -d
.
Nota: Esses comandos podem ser usados enquanto o servidor está em execução para atualizar o banco de dados do usuário sem reiniciar o servidor.
Dica
Se você deseja apenas as ferramentas do cliente mactelnet
, e não o servidor mactelnetd
ao compilar a partir do código-fonte, você pode adicionar o sinalizador --without-mactelnetd
ao comando ./configure
antes de compilar.
ghcr.io/haakonnessjoen/mac-telnet
contém a versão mais recente de todos os quatro programas:
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 …
Observe que o Docker executa contêineres em redes internas isoladas por padrão. --net=host
instrui o Docker a fornecer acesso direto mactelnet
às interfaces de rede da máquina host.
Veja Uso para mais.
Para instalar dependências:
yum -y install wget automake gettext gettext-devel libbsd-devel gcc make
Baixe o tarball fonte, extraia, compile e instale:
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
Os lançamentos mais recentes geralmente estão disponíveis nas versões mais recentes do Debian e Ubuntu. Você pode instalá-los com apt install mactelnet-client
ou apt install mactelnet-server
.
Para instalar o branch master
mais recente do source , use as seguintes instruções:
apt-get install build-essential autopoint automake autoconf libbsd-dev libssl-dev gettext
Baixe o tarball fonte, extraia, compile e instale:
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
Dependências: clang (gcc ou similar), automake, autoconf
Para instalar dependências no FreeBSD:
pkg install automake autoconf gettext-tools
Baixe o tarball fonte, extraia, compile e instale:
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
Baixe o tarball fonte e extraia:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
Instalar dependências
brew install gettext autoconf automake libtool openssl pkg-config
Configure o ambiente de construção, compile e instale:
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.
Exemplo usando identidade:
$ mactelnet main-router
Searching for 'main-router'...found
Login: admin
Password:
Connecting to d4:ca:6d:12:47:13...done
Exemplo usando endereço MAC:
$ 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] >
Você pode usar a conhecida ferramenta "expect" para automatizar/scriptar diálogos via 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.
Exemplo:
# 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
Ou para uso em scripts 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] )