Этот проект содержит набор консольных инструментов для подключения и обслуживания устройств с использованием протокола 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
Загрузите исходный архив, распакуйте, скомпилируйте и установите:
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
Загрузите исходный архив, распакуйте, скомпилируйте и установите:
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 (gcc или аналогичный), automake, autoconf.
Чтобы установить зависимости от FreeBSD:
pkg install automake autoconf gettext-tools
Загрузите исходный архив, распакуйте, скомпилируйте и установите:
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
Загрузите исходный архив и извлеките:
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
Пример использования 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] >
Вы можете использовать хорошо известный инструмент «ожидание» для автоматизации/сценариев диалогов через 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] )