이 프로젝트에는 MikroTik RouterOS MAC-Telnet 프로토콜을 사용하여 장치에 연결하고 서비스를 제공하기 위한 콘솔 도구 세트가 포함되어 있습니다. 이는 장치가 IP 주소로 구성되지 않은 경우에도 장치에 대한 쉘 액세스를 제공하기 위해 MikroTik RouterOS 장치에서 사용하는 독점 네트워크 프로토콜입니다.
이 프로토콜은 UDP 브로드캐스트 패킷 전송 및 수신을 기반으로 하므로 어떤 방식으로도 안전하지 않습니다 . IP 주소가 없는 장치를 구성하거나 안전한 네트워크 환경에서 최후의 수단으로만 사용해야 합니다.
클라이언트와 서버 외에도 이 프로젝트에는 MAC 주소를 사용하여 RouterOS 장치를 핑하는 데 사용할 수 있는 핑 도구와 로컬 네트워크에서 RouterOS 및 MAC-Telnet 장치를 검색하는 데 사용할 수 있는 MNDP 도구도 포함되어 있습니다. .
MAC-Telnet 클라이언트 및 서버는 이제 Mikrotik이 RouterOS v6.43 이상에서 MD5 인증에 대한 지원을 제거한 후 필수인 새로운 EC-SRP 인증을 지원합니다. 이전 MD5 인증 사용에 대한 지원은 이전 버전과의 호환성을 위해 명령줄 플래그를 통해 계속 가능합니다.
새로운 EC-SRP 인증을 통해 MAC-Telnet 서버는 이제 사용자 파일에 대한 비밀번호 해싱을 지원합니다. 이는 서버가 일반 텍스트 비밀번호 대신 해시된 비밀번호를 파일에 저장할 수 있음을 의미합니다. 새로운 해시 비밀번호 지원으로 사용자를 추가/업데이트하려면 mactelnetd
명령에 -a
플래그를 사용하십시오. -l
플래그를 사용하여 사용자를 나열하거나 -d
사용하여 사용자 파일에서 사용자를 삭제할 수도 있습니다.
참고: 서버가 실행되는 동안 서버를 다시 시작하지 않고도 사용자 데이터베이스를 업데이트하기 위해 이러한 명령을 사용할 수 있습니다.
팁
소스에서 컴파일할 때 mactelnetd
서버가 아닌 mactelnet
클라이언트 도구만 원하는 경우 컴파일하기 전에 --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
사용하여 설치할 수 있습니다.
source 에서 최신 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.
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] )