Mosquitto tool의 설치 및 기본 세팅은 아래의 링크가 설명이 잘되어있으니, 참고하세요.
https://midnightcow.tistory.com/36
지금부터 제가 쓰는 내용은 모든 기본 세팅이 되어있다는 전제하에 동작한다는 점 유념하세요.
아마도 기본적인 MQTT동작은 위 링크의 포스팅 내용에서 확인할수 있을겁니다.
제가 설명하고 하는 내용은 MQTT Broker(이하 내용에는 MQTT Server라 칭한다)에서 User id/Clinet id/password 를 등록한 상태에서 어떻게 통신이 되는지를 설명하려고 해요
구성은 다음과 같이 하려고 합니다.
제가 포스팅 하고 있는 이글은 구성도는 다음과 같다.
도스창에서 Mosquitto를 이용하여 MQTT테스트를 하려면 아래의 사항을 따라야 해요.
- 도스창에서 MQTT Server, MQTT Client는 별도의 도스창을 열어야 하며, 해당 도스창은 관리자 권한으로 열어야 한다.
- Mosquitto.conf파일을 변경하여Client id는 User id와 동일한 id로 동작한다.
- MQTT Server에 접속한 Client에서 온 모든 Publish data는 연결된 모든 Client에 전송된다. 단, 해당 Topic을 Subscribe 상태여야 한다.
- MQTT Server에 접속하는Client의 Client id는 모두 달라야하며, 같은 Client id로 접속할 경우 나중에 접속하는 MQTT Client는 disconnect 된다.
- Password는 암호화 되어 있는 상태를 사용해야 하며, 별도의 TXT 파일을 생성해야한다.
주제를 크게 나누자면
1. User id와 Password등록
2. MQTT Server setting 정보
3. MQTT Server와 2개의 MQTT Clinet 접속 예 및 영상
1. User id와 Password등록
1. xxx.txt 파일만들기
2. mosquitto_passwd command를 이용하여 User id, Password 등록하기
User id와 Password를 등록을 하려면
파일을 하나 만드는데, 확장자는 txt 여야해요.
저장되는 형식은 User id : Password 입니다.
xxx.txt 파일만들기
저는 password.txt 파일을 생성했고, 해당 파일은 Mosquitto가 설치 되어 있는 곳에 넣어놨어요.
mosquitto_passwd command를 이용하여 User id, Password 등록하기
아래의 Command를 이용하여 User id와 Password를 등록하면 된다.
#password파일에 User id : irina , Password : asd123^^ 로 추가
#해당 User id가 있다면, Overwrite
mosquitto_passwd -b password.txt irina asd123^^
#User id와 암호화된 Password를 확인할 수 있다.
type password.txt
위의 command를 완료한 후 password.txt를 확인하면 아래와 같이 나타납니다.
Password.txt의 Password값은 mosquitto_passwd 명령을 이용하여 암호화된 값이 저장된다.
2. MQTT Server setting 정보
아래는 mosquitto_conf 파일에서 아래의 내용만 Enable했어요.
해당 내용은 주석으로 설명되어있으니, 확인하시면 되요.
저같은 경우에는 Client id를 별도로 주지 않고, User id를 Client id로도 쓸수 있게 옵션을 바꿔놨어요.
# true 일 경우 cliendid가 없어도 접속 가능, false cliendid가 없으면 접속 불가능
allow_zero_length_cliendid false
# true로 설정 시 cliendid를 사용자 명으로 변경을 하고 동시접속자가 생기면 다른 연결을 끊어버립니다.
# 단 cliendid_prefixes와 함께 사용 하면 안됩니다.
# use_identity_as_username 값도 참고 하세요.
use_username_as_cliendid true
# 기본값은 true, true로 설정하면 아무나 브로커 서버에 접근이 가능합니다.
# 하지만 false 로 설정하면 아무나 브로커 서버에 접근이 가능하지 않으며
# password_file옵션으로 인증된 사용자를 제어해야 합니다.
allow_anonymous false
# 암호 파일을 사용하여 브로커에 대한 액세스를 제어합니다. 이 파일은
# mosquitto_passwd 유틸리티를 사용하여 생성됩니다. TLS 지원이 컴파일되지 않은 경우
# mosquitto (TLS 지원을 포함하는 것이 좋습니다)로
# 일반 텍스트 암호가 사용되는 경우 파일은 텍스트 파일이어야합니다.
# 다음과 같은 형식의 줄이 있습니다.
# 사용자 이름 : 암호
# 암호 (및 콜론)는 원한다면 생략 될 수 있지만,
# 보안을 거의 제공하지 않습니다.
# TLS 클라이언트 require_certificate 및 use_identity_as_username로 대체 인증이 가능한 옵션이 있습니다.
password_file password.txt
3. MQTT Server와 2개의 MQTT Client 접속 예 및 영상
mosquitto_conf 파일에서 수정한 부분이 있다면, MQTT Server를 열때 옵션 -c 를 사용하여 mosquitto_conf 파일 을 reload 해야해요.
MQTT Client 의 Client id를 User id와 같게끔 변경했기 때문에, 각각의 MQTT Client는 다른 User id를 사용하여 접속 해야해요
Dos에서 사용되는 Command Format
여기서 옵션 -h는 호스트 ip이므로 PC의 IP입니다.
#MQTT Server
mosquitto -c mosquitto.conf -v
#MQTT Client-1
#Subscribe
mosquitto_sub -v -t /wiznet/module/testing -p 1883 -h 192.168.0.98 -u irina -P asd123^^
#Publish
mosquitto_pub -t /wiznet/module/tested -m {"msg":"tested","deviceId":"WIZnet_xxx","pubToDmTopic":"/wiznet/chip/tested"} -p 1883 -h 192.168.0.98 -u irina -P asd123^^
#MQTT Client-2
#Subscribe
mosquitto_sub -v -t /wiznet/module/tested -p 1883 -h 192.168.0.98 -u qwerty -P 12345678
#Publish
mosquitto_pub -t /wiznet/module/testing -m {"msg":"testing”,"mac":"00:00:00:aa:bb:cc","manufacture":"wiznet"} -p 1883 -h 192.168.0.98 -u qwerty -P 12345678
다음은 Dos 에서 MQTT 동작을 영상으로 만들어놨어요. 영상이 아무래도 더 쉬우니깐^^
Dos 순서대로, MQTT Server, MQTT Client -1, MQTT Client -2로 되어있으며, MQTT동작을 확인할 수 있다.
첨부파일은 포스팅한 내용은 문서화 한 버전입니다.
'Network 요거만 알자!' 카테고리의 다른 글
Windows환경에서 IPv6기반 IPSec 구현하기 (0) | 2015.12.02 |
---|---|
IPSec setting - Windows Server 2003 (0) | 2015.12.01 |
[IPv4]기본 패킷 (0) | 2013.01.24 |
[wireshark]wireshark의 pcap정리 (0) | 2013.01.24 |
[네트워크]Watchdog...뭘까?^^ (0) | 2013.01.21 |