このプロジェクトには、MikroTik RouterOS MAC-Telnet プロトコルを使用してデバイスに接続し、サービスを提供するための一連のコンソール ツールが含まれています。これは、デバイスに IP アドレスが設定されていない場合でも、MikroTik RouterOS デバイスによってデバイスへのシェル アクセスを提供するために使用される独自のネットワーク プロトコルです。
このプロトコルは udp ブロードキャスト パケットの送受信に基づいているため、決して安全ではありません。これは、IP アドレスが不足しているデバイス、または安全なネットワーク環境を構成するための最後の手段としてのみ使用してください。
このプロジェクトには、クライアントとサーバーに加えて、MAC アドレスを使用して RouterOS デバイスに ping を実行できる ping ツールと、ローカル ネットワーク上の RouterOS および MAC-Telnet デバイスを検出するために使用できる MNDP ツールも含まれています。 。
MAC-Telnet クライアントとサーバーは、Mikrotik が RouterOS v6.43 以降で MD5 認証のサポートを削除した後、必須となる新しい EC-SRP 認証をサポートするようになりました。古い MD5 認証の使用のサポートは、下位互換性のためのコマンド ライン フラグを介して引き続き可能です。
新しい EC-SRP 認証により、MAC-Telnet サーバーはユーザー ファイルのパスワード ハッシュをサポートするようになりました。これは、サーバーがプレーンテキストのパスワードの代わりに、ハッシュされたパスワードをファイルに保存できることを意味します。新しいハッシュ化パスワードのサポートを使用してユーザーを追加/更新するには、 mactelnetd
コマンドで-a
フラグを使用します。 -l
フラグを使用してユーザーをリストしたり、 -d
を使用してユーザー ファイルからユーザーを削除したりすることもできます。
注:これらのコマンドは、サーバーの実行中に使用して、サーバーを再起動せずにユーザー データベースを更新できます。
ヒント
ソースからコンパイルするときにmactelnetd
サーバーではなく、 mactelnet
クライアント ツールのみが必要な場合は、コンパイル前に./configure
コマンドに--without-mactelnetd
フラグを追加できます。
ghcr.io/haakonnessjoen/mac-telnet
次の 4 つのプログラムすべての最新リリースが含まれています。
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
ホスト マシンのネットワーク インターフェイスへのmactelnet
直接アクセスを提供するように Docker に指示します。
詳細については、「使用法」を参照してください。
依存関係をインストールするには:
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
ブランチをsource からインストールするには、次の手順を実行します。
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.
ID を使用した例:
$ 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] )