본문 바로가기
IT & 코딩

[라즈베리파이] 블루투스/원격 설정 (포트포워딩 & DDNS)

by 에일라거 2016. 7. 31.

지난 번에 라즈베리파이 개봉기에서 OS 설치/한글 자판 인식 까지 썼었는데, 그때 블루투스가 안돼서 일단 때려치자..하고 묵혀 뒀었는데 오늘 추가로 세팅한 걸 쓰려고 한다. 블루투스 인식하는 법을 겨우 알았네.. 메모 겸 해서 끄적


업데이트/업그레이드


sudo apt-get update

sudo apt-get upgrade


위 두개는 가끔 생각날 때마다 치자. 설치된 모듈을 업데이트해 주는 명령어다. 안되던 게 업데이트해서 되기도 한다.


블루투스 연결


라즈베리파이 3은 블루투스를 지원한다. 이전 버전까진 안됐다고 함. 일단 사용하기 위해 아래 패키지들을 설치..해야 하는 것으로 알고 있는데, 일단 아래꺼 설치 안하고 그냥 시도해보고 안되면 설치하길 권장... 뭔가 꼬인 거 같아. # 추가: 아래 모듈들은 설치하지 말자. 이미 설치되어 있다. 위의 업데이트 및 업그레이드만 해 주면 됨.


sudo apt-get install bluetooth bluez blueman pulseaudio


설치한 후에, 나같은 경우는 그냥 pair/connect를 시도해서는 절대 연결이 안됐다. 그래서 구글 뒤지다가 발견한 게 아래 링크

 

Raspberry Pi 3 Connecting to Bluetooth audio device on Raspbian Jessie

I am trying to connect to a Bluetooth audio device on fully updated Raspberry Pi 3 running Jessie using the following: pi@raspberrypi:~ $ bluetoothctl [bluetooth]# power on Changing power on succe...

raspberrypi.stackexchange.com

위 링크에서 말한대로 해보자. 먼저 아래와 같이 pulseaudio를 명시적으로 시작해 준다.


pulseaudio --start


그리고 명령창에 bluetoothctl 쳐서 블루투스 모드로 진입


[bluetooth] scan on

[bluetooth] pair xx:xx:xx:xx:xx:xx

[bluetooth] trust xx:xx:xx:xx:xx:xx

[bluetooth] connect xx:xx:xx:xx:xx:xx


scan on 이라는 명령어로 블루투스 기기를 쭉 검색한다. 그다음  차례대로 pair/trust/connect 하니까 연결된다. 음악 재생도 잘 되고... 휴대폰도 똑같이 연결하면 된다. 그러면 휴대폰에서 블루투스로 재생한 음악을 3.5 stereo jack이나 hdmi로 출력할 수 있다.


블루투스로 음악을 내보내기 위해서는 omxplayer 외에 mplayer가 필요하다. 아래와 같이 입력해서 설치.


sudo apt-get install mplayer


의문점


사운드 출력 설정


블루투스 스피커를 연결했으면, 이제 블투 스피커로도 출력은 가능한 상태가 되었다. 하지만 이렇게만 한다고 블투 스피커로 음악이 나오지는 않는다. 출력 채널을 설정해 줘야 함. 콘솔 창에 아래와 같이 입력


pacmd list-sinks


pacmd는 pulseaudio command의 약자인 것 같다. pulseaudio가 실행되고 있을 때 음악/동영상 재생을 위해 어떤 장치들이 잡혀 있는지, 아이디는 뭔지, 지금 설정된 아웃풋은 뭔지 등등을 볼 수 있고 설정할 수 있다. 전체 명령어를 보고 싶으면 pacmd help 라고 치면 된다. 


블루투스 스피커가 제대로 잡혔다면 sink list에 다음과 같이 두개가 뜬다. (블루투스 스피커가 연결(connect)이 됐는데도 list에 안 뜰 경우도 있다. 일단 되는 경우를 보고 진행하고, 안되는 경우는 아래에 따로 적어뒀다.)



보면 index 0/1 로 두개가 뜬다. (빨간색으로 임의로 표시해 뒀다.) index 0은 로컬 출력 (3.5 jack), index 1 은 블루투스 스피커다. index 0 앞에 별표 ( * ) 가 쳐져 있는데, 이게 활성화되어 있다는 뜻이다. 즉, 현재 음악을 재생한다든지 하면 로컬 출력으로 내보낸다는 뜻이다. 이제 출력할 수 있는 장치가 뭐뭐 있는지 알았으니까, 블루투스로 전환하고 싶으면 아래와 같이 입력.


pacmd set-default-sink [index or name]


블루투스의 index number는 1이고, name은 bluez_sink.xx_xx_xx_xx_xx_xx 이다. (xx 부분은 MAC 주소) 둘 중 아무거나 쳐서 입력하면 된다. 즉, 다음과 같다.


pacmd set-default-sink 1

pacmd set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx


이렇게 하면 사운드 출력이 블루투스 스피커로 전환된다.


블루투스 스피커가 연결되었는데도 list-sinks 목록에 안 뜨는 경우


참나 진짜 별 경우가 다 있다. 왠지는 잘 모른다. 이럴 때는 일단 실행 중인 pulseaudio 를 모두 죽인다.


sudo killall pulseaudio


그러면 블루투스 스피커도 자동으로 연결이 끊어진다. 이 때 다시 pulseaudio 실행


pulseaudio --start


bluetoothctl 명령어로 블루투스 모드 진입한 다음 connect 명령어로 연결해 준다. 이미 pair/trust는 완료된 상태이므로 다시 할 필요 없다. connect가 안될 경우는 pulseaudio가 아직 제대로 실행되지 않은 것이므로 조금 기다렸다가 다시 connect 시도. 라즈베리파이가 생각보다 느리다.


그렇게 연결이 되면, pacmd list-sinks 명령어를 다시 쳐 보자. 십중팔구는 아마 잡혀 있을 꺼야, 아마... 


이제까지 삽질로 얻은 대략의 감은... pulseaudio가 먼저 완전히 실행이 되고 나서, 그 다음에 블루투스 스피커를 연결해야 제대로 잡히는 것 같다. 거참...



원격 접속 셋업


원격 접속은 라즈베리파이를 NAS로 쓰기 위한 전단계로 한 것이다. 외부에서도 접속할 수 있게 셋업해보자. 단계는 아래와 같다.


1. 고정 내부IP 할당

2. 공유기 포트포워딩

3. PuTTY로 접속

4. 원격 어플리케이션 설치 


일단 진행하기 전에 원격 접속 가능하게 해 주는 프로그램을 하나 깔자..


sudo apt-get install xrdp


아래로 궈궈


1. 고정 내부 IP 할당


유선 LAN으로 해서 할당하라고 하는데.. 일단 무선랜으로 시도해 봤다. 되는 거 같다. (ipTIME 공유기임)

1. 공유기에 따라 다르겠지만, 공유기 내부 ip로 공유기에 접속한다. 대체로 192.168.0.1 임. 그러면 아래와 같은 화면이 나타난다. 빨간색 네모는 내 외부 ip로 모자이크 처리함.



2. 관리도구를 클릭해서 로그인하고 나면 아래와 같은 화면이 나타난다.



3. 여기서 고급 설정 > 네트워크 관리 > 내부 네트워크 정보 로 들어가면 아래와 같이 현재 연결된 장비와 할당된 내부 ip가 나온다. raspberripi의 ip를 확인하고 내부 네트워크 설정 클릭.



4. 그러면 메뉴 맨 아래에 수동 IP 할당 설정 메뉴가 있다. 여기에서 원래 오른쪽 부분(검색된 IP/MAC 주소) 에 있었던 raspberrypi를 체크해서 추가 버튼을 눌러주면 왼쪽으로 이동함. 이렇게 내부 IP가 고정되었다고 일단 생각하는데... 아니면 나중에 글 수정. 일단 라즈베리파이 몇 번 재부팅 해 봤는데 괜찮았다.



공유기 포트포워딩


포트포워딩이란 건 외부에서 내부 네트워크로 접속하려고 할 때 특정 포트를 지정하면 미리 지정한 내부 ip로 포워딩해주는 걸 말한다. 아래 그림을 참조하자



포트포워딩 개념


설명을 살짝 덧붙이면,


1. 공유기는 110.21.1.245 라는 외부 ip를 가지고 있다.

2. 여기에 물린 (접속된) 기기는 3개이고, 각각 내부 ip로 192.168.0.12 / 192.168.0.162 / 192.168.0.201 이렇게 세 개를 쓴다.

3. 그러면 외부에서 110.21.1.245 로 접속을 했을 때 셋 중에 뭐에 접속을 해야 할 지 모르게 된다. 

4. 192.168.0.162 의 포트는 8089야! 라고 지정해 보자. 그러면 외부에서 포트를 지정해서 접속했을 때, 즉 110.21.1.245:8089 라고 접속하면 192.168.0.162 의 기기로 연결된다. 

5. 이걸 지정해 줘야 외부 네트워크에서 내부 네트워크로 접속하는 게 가능해진다. 이게 포트 포워딩이다. 이것도 마찬가지로 공유기 설정에서 진행한다. 


공유기 설정 방법

아래와 같이 고급 설정 > NAT/라우터 관리 > 포트포워드 설정 으로 들어가서, 포워딩할 내부 ip (방금 고정한 ip) 를 적고, 프로토콜은 TCP/UDP, 외부 포트 22, 내부 포트 22 로 지정해서 추가한다. 마찬가지로 포트 21에 대해서도 추가함. 22는 ssh 접속을 위해서, 21은 ftp 접속을 위해서. 원격데스크톱은 원격데탑 접속을 위해서인데, ssh로 접속하면 콘솔 창으로 봐야 하지만 원격데스크톱으로 접속하면 윈도우처럼 GUI 화면으로 볼 수 있다. 포트는 아무거나 맘대로 써도 된다. 하지만 80/25 같이 표준으로 사용되는 포트는 쓰면 안된다.



이렇게 하고 나서 저장.


PuTTY로 ssh 접속


PuTTY는 제일 유명한 ssh 접속 툴이다. 이제 외부에서도 접속 가능한 지 이걸로 해보자. 링크 클릭해서 다운.

아... 더 이상은 적기가 귀찮다... PuTTY 사용법은 온 사방에 널려 있으니까 아무거나 참조하고, 아까 포트포워딩이 잘 됐는지 보기 위해서 IP address 적는 곳에다가 외부ip:포트 형식으로 적자. 예를 들면 110.21.1.245:22 이런 식으로...


접속이 잘 되면 성공! 잘 되겠지 뭐 -  _-


원격 접속을 위한 DDNS 설정


DDNS라는 건 Dynamic Domain Name System의 약자인데, 이게 대체 원격 접속이랑 뭔 상관인지 알고 싶다면 아래 링크를 참조하자.

 

DNS - 나무위키

DNS 서버가 질의 받은 도메인 또는 IP 주소의 레코드를 Forward Zone, Reverse Zone 중 하나 이상 가지고 있지 않을 경우에 하는 응답이다. 도메인의 네임 서버에 해당 도메인을 구성하지 않은 호스트, 즉

namu.wiki

아 난 모르겠고 너무 길다 하면, 그냥 유동 IP를 사용할 때에도 고정된 도메인 주소를 하나 명시해서 그 주소를 통해서 접속을 용이하게 만들어주는 보조장치 정도로 생각하면 된다. 아래 그림을 참조하자.


계속 변하는 IP와 고정된 Domain 중 뭘로 접속하는 게 편할까?


공유기 설정은 아래와 같다. 계속해서 ipTIME 공유기 기준이다.


아래 그림처럼 고급 설정 > 특수기능 > DDNS 설정 으로 들어간다. 호스트 이름에 ***.iptime.org 라고 치고.. 기타 등등 화면에서 가이드해 주는 것처럼 적은 다음 추가해 주면 도메인이 등록된다. 



등록이 끝나면, 인터넷 창에서 ***.iptime.org 라고 치면 자신의 공유기 설정 화면으로 들어갈 수가 있고, ssh에서 ***.iptime.org:22 로 접속하면 콘솔 창으로 접속 가능하며, 원격데스크톱 어플 (mstsc) 에서 ***.iptime.org:포트 (포트에는 자신이 등록한 포트) 라고 치면 원격데스크탑 접속이 가능하다.


대충 네트워크 설정이랑 블루투스 설정 마쳤고... 이제 다음에는 GPIO 이용한 집안의 물건 제어라든지 파이썬 이용한 코딩이라든지 이런 걸 해 봐야겠다. 이제야 겨우 기초셋업 마친 거 같은 느낌이 드네...;; 갈 길 참 멀다 ㅠㅠ

댓글