此專案包含一組控制台工具,用於使用 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] )