- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- API
- 네트워크
- 쉘 스크립트 if문
- Android
- ACL
- 안드로이드
- GPIO
- 그라파나
- 프로젝트
- 자바
- 쉘 스크립트 기초
- LEVIATHAN
- Tkinter
- synology
- 라즈베리파이
- GUI
- docker
- Python
- 리눅스
- RaspberryPi
- 쉘 스크립트
- Shell script
- System
- Java
- 메소드
- JSP
- centos docker
- 클라우드
- Linux
- nginx
- Today
- Total
IT창고
CentOS 7 - Mosquitto (MQTT) 설치 및 사용법 본문
이번에는 WAS인 Mosquitto 서버를 설치해보도록 하겠습니다.
Mosquitto는 MQTT 프로토콜 버전 5.0, 3.1.1 및 3.1을 구현하는 공개 소스(EPL / EDL License) 메세지 브로커 입니다.
설치 전에 MQTT 프로토콜에 대해 간단히 알아보겠습니다.
MQTT(Message Queue Telemetry Transport)는 IBM에서 1999년에 최초의 버전이 만들어졌으며 2013년에 MQTT v3.1을 OASIS 표준화 단체에 제출하였습니다. 이 프로토콜은 publish–subscribe 모델로 메세지 프로토콜로 대표적으로 페이스북 메세지가 MQTT 프로토콜을 사용했다고 알려져있으며 경량 프로토콜로 저전력 장비에서도 운용이 가능하기에 라즈베리파이3나 IoT에서 사용하기 좋습니다.
장점으로 보면 MQTT를 중계시스템에 적용하면 API 서버의 부하 및 트래픽 감소 효과와 MQTT연결상태만 집중하기에 통신 오류 감소 등이 있습니다.
테스트환경은 VMware에 CentOS 7 입니다.
CentOS 7에 자체적으로 패키지가 없기 때문에 yum을 통해 설치가 가능합니다.
여기를 클릭하면 mosquitto 공식사이트로 이동합니다. 여기서 지금 테스트를 진행할 OS이외에 설치 가능한 운영체제를 확인해볼 수 있습니다.
Red-Hat인 CentOS 7의 경우 Enterprise Linux용 Extra Packages 또는 EPEL이라는 추가 소프트웨어 저장소를 설치해야 합니다.
yum search로 찾아본 결과 mosquitto를 확인할수없으므로 yum -y install epel-release 명령어로 외부저장소를 추가하도록 합니다.
외부저장소를 추가해주면 mosquitto 패키지를 설치할수있게 됩니다. yum -y install mosquitto 명령어로 패키지를 설치해주도록 합니다. 추가로 Ubuntu에서도 테스트를 해보았는데 yum 패키지에서 mosquitto를 설치하면 서버/클라이언트 모두 설치되므로 클라이언트를 따로 설치하지 않아도 됩니다.
mosquitto 패키지가 설치되었다면 /etc/mosquitto 디렉토리에 설정파일이 존재합니다 확인해보면 거의 주석처리되어있으며 기본값으로 설정되어있습니다.
service mosquitto start 명령어로 mosquitto 서비스(데몬)을 구동시키면 1883포트가 열린걸 확인할 수 있습니다.
실제로 동작하는지 테스트해보도록 하겠습니다.
리눅스 명령어에 새롭게 mosquitto_pub와 mosquitto_sub 명령어가 생긴걸 확인할수있습니다.
mosquitto_sub 명령어의 옵션 -h는 host이며 -t는 mqtt 주제(Topic)이름 입니다.
-h옵션에 localhost로 자신의 서버를 지정했기에 메세지가 올때까지 대기하게 됩니다.
즉 MQTT broker와 연결을 요청하는 client는 TCP/IP socket 연결을 한 후 명시적으로 종료하거나 Network 사정에 의해 연결이 끊어질 때까지 연결 상태를 유지하게 됩니다.
mosquitto_pub에서 메세지를 보낼 host와 주제을 설정하고 -m옵션으로 보낼 메세지를 입력하여 보내게 되면 대기중인mosquitto_sub 에서 메세지를 받게 됩니다.
즉 개설된 주제(Topic)에 message를 발행하면 해당 주제을 구독하는 client 들에게 message를 전송하게 됩니다.
여기까지 mosquitto 설치와 테스트 확인이였습니다.
Tip.
1. -p 옵션의 경우 따로 사용하지 않을 경우 기본값인 1883 포트를 사용합니다.
2. 스페이스로 띄어쓰기를 할 경우 ""로 묶어서 사용합니다.
3. listener (포트번호) 설정으로 1883 기본값 포트 이외에 포트를 사용할 수 있습니다.
추가 내용으로 익명사용자(anonymous) 제한 및 사용자 추가 등록에 대해 알아보겠습니다.
기본 구성으로 설치했을 시 익명사용자들도 접속하여 메세지를 주고 받을 수 있는데 계정과 패스워드를 발급받고 익명사용자를 제한하도록 하겠습니다.
우선 익명사용자를 제한하도록 하겠습니다.
/etc/mosquitto/mosquitto.conf 파일 가장 아래에 893번째 줄에 설정을 입력하면 익명사용자들의 메세지 전송을 차단할수있습니다. 894번째 줄에 설정은 등록된 사용자들이 있는 파일로 사용자계정과 패스워드 정보가 저장될 파일입니다.
지금은 /etc/mosquitto/passwd 파일이 없지만 mosquitto_passwd 명령어를 사용하여 사용자 계정정보가 있는 passwd파일을 만들도록 하겠습니다.
우선 익명사용자 제한 설정을 했으므로 실제로 사용할 수 없는지 테스트 해보도록 하겠습니다.
mosquitto서비스를 재시작하고 익명사용자로 메세지 전송 시도 해보았습니다. 연결거부로 익명사용자로 사용할 수 없는걸 확인하였습니다.
익명사용자를 사용할 수 없으므로 사용자계정을 만들도록 하겠습니다.
mosquitto_passwd -c /etc/mosquitto/passwd gsk 명령어로 passwd 파일을 만듬과 동시에 사용자계정 gsk를 추가하였습니다. cat명령어로 /etc/mosquitto/passwd 파일 안을 확인해보면 계정과 암호화된 패스워드를 확인해볼수있습니다.
passwd파일을 만든 후에 새로운 사용자 계정을 추가하려면 -b옵션을 사용하여 사용자계정을 추가할 수 있습니다. -b옵션 후에 passwd파일의 경로를 넣고 계정명과 패스워드를 같이 입력해주면 passwd 파일에 등록이 됩니다.
cat명령어로 /etc/mosquitto/passwd 파일을 확인해보면 새로 추가한 사용자계정과 패스워드 정보를 확인해볼 수 있습니다.
작업이 끝났다면 테스트를 위해 mosquitto서비스(데몬)을 재시작 해줍니다. ex) service mosquitto restart
MQTT broker에 연결할떄에도 계정정보가 필요하며 메세지를 보내는것도 계정정보를 필요로 하게 된걸 확인할수있습니다. 계정정보 없이 메세지를 보낼 경우 인증거부로 사용할 수 없는걸 확인하였습니다.
마지막으로 Mosquitto에 SSL을 적용할 수가 있는데 SSL적용의 경우 여기1 와 여기2 사이트를 참고합니다.
'서버운영 > WAS, DBMS' 카테고리의 다른 글
CentOS 7 - ShinyServer 설치 (0) | 2020.01.04 |
---|---|
CentOS 7 - WebLogic 설치, 도메인 구성 (0) | 2019.06.23 |
CentOS 7 - WebtoB 설치 (0) | 2019.06.22 |
CentOS 7 - Tomcat 설치 (다중톰캣 설정) (0) | 2019.06.19 |
CentOS 7 - JEUS7 설치 (2) | 2019.03.11 |