该项目包含一组控制台工具,用于使用 MikroTik RouterOS MAC-Telnet 协议连接和服务设备。这是 MikroTik RouterOS 设备使用的专有网络协议,即使设备未配置 IP 地址,也可以提供对其设备的 shell 访问。
该协议基于发送和接收 udp 广播数据包,因此无论如何它都不安全。它只能用作配置缺少 IP 地址的设备或在安全网络环境中的最后手段。
除了客户端和服务器之外,该项目还包括一个 ping 工具,可用于使用 MAC 地址 ping RouterOS 设备,以及一个 MNDP 工具,可用于发现本地网络上的 RouterOS 和 MAC-Telnet 设备。
MAC-Telnet 客户端和服务器现在支持新的 EC-SRP 身份验证,这是 Mikrotik 在 RouterOS v6.43 及转发版本中删除对 MD5 身份验证的支持后强制执行的。仍然可以通过命令行标志支持使用旧的 MD5 身份验证,以实现向后兼容性。
通过新的 EC-SRP 身份验证,MAC-Telnet 服务器现在支持用户文件的密码散列。这意味着服务器可以将散列密码存储在文件中,而不是纯文本密码。要使用新的哈希密码支持添加/更新用户,请在mactelnetd
命令中使用-a
标志。您还可以使用-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(gcc 或类似)、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
使用 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] >
您可以使用众所周知的“expect”工具通过 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] )