4 minute read

프로젝트 프리뷰

프로젝트의 일환으로 NAS를 서버실에 설치하고 웹서버를 구동시킬 일이 생겼다. 문제는 내가 네트워크쪽으로 배워본적이 없어 완전히 문외한이라는 것이었다. 이 글에 NAS 서버를 설치한 과정과 겪었던 문제들을 기록하려고 한다.

프로젝트의 전체적인 구상도는 다음과 같다.

프리뷰.png

센서 단에서 수집된 데이터들을 중계장치로 서버로 보내오면 해당 데이터들을 가공하여 웹으로 유저들에게 보여주는 간단한 프로젝트이다. 센서들과 중계장치는 설치가 완료된 상태였고, 해야할 일은 서버를 설치하고 데이터베이스를 구축, 웹페이지를 만들어 데이터를 보여줄 수 있도록 하는 일이다.

NAS는 시놀로지 사의 DS223모델을 이용했다.

Nas.HEIC

NAS를 들어보기만했지 실제로 본 것은 처음이었는데, 생각보다 작고 디자인이 이뻐서 놀랐다. (가격은 작지않다.. 약 40만원..)

업체와 함께하는 프로젝트여서 업체가 NAS 초기세팅을 모두 해주고 기본 패키지들까지 모두 설치한 상태로 전달해주었는데, NAS 로그인 비밀번호가 유실되어 초기화한뒤 우리가 처음부터 진행할수밖에없었다.

스크린샷 2023-05-18 오후 5.23.59.png

(초기화 후 OS 설치하는 모습..)

NAS의 OS는 DiskStation Manager(DSM)이라고 불리며 리눅스 기반의 OS라고 한다. 초기화와 초기세팅은 집에서 진행했는데, NAS에 접속하는 방법은 NAS를 공유기와 랜선으로 연결하고 공유기의 와이파이에 노트북으로 접속하면 NAS와 노트북이 같은 네트워크에 존재할 수 있게된다. 그 후 웹 브라우저를 통해 접속할 수 있다. 초기화는 NAS뒤의 reset 버튼을 통해 진행했다.

NAS 웹 서버 구동

초기화 후에는 웹 서버를 구동시켜 해당 서버로 접속시 html 파일을 잘리턴하는지와 ssh를 통해 접속해보는 정도만 테스트했다.

스크린샷 2023-05-25 오후 5.34.22.png

NAS의 Web Station 패키지에서 포털을 설정할 수 있다.

스크린샷 2023-05-25 오후 5.37.25.png

생성 버튼을 누르고

스크린샷 2023-05-25 오후 5.40.44.png

가상 호스트를 선택한 뒤

스크린샷 2023-05-25 오후 5.41.34.png

포트 기반을 선택하고 원하는 포트로 설정해주면 된다.

스크린샷 2023-05-25 오후 5.42.28.png

그 후 문서 루트를 설정해주고 (서버에 접속하면 여기서 설정한 경로에 존재하는 index.html을 리턴한다) 백엔드 서버를 선택한다. 우리는 Nginx를 이용했다.

스크린샷 2023-05-25 오후 5.44.05.png

Timeout 시간도 설정해주고 나면 설정이 완료되고 서버가 작동한다.

아까 설정했던 문서 루트 경로에 index.html을 테스트용으로 만들어 넣고 접속해보자.

그전에 이쯤에서 ip주소에 대해 짚고 넘어가겠다. ip주소는 공인ip와 사설ip로 나뉜다.

공인 IP (Public IP)

공인 IP는 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다. 공용 IP로도 불리며 외부로 공개되어있다. 공인 IP는 세계에서 유일한 주소를 갖는다.

사설 IP (Private IP)

가정이나 사내에서 할당된 네트워크의 IP주소이다. 로컬 IP, 가상 IP라고도한다. 라우터(공유기)를 통해 디바이스에 할당된다.

간단히 말해 공인 IP를 통해 가정이나 사내 네트워크를 식별할 수 있고, 그 안에 있는 여러 장치들 각각의 사설 IP를 통해 해당 장치를 식별할 수 있는것이다.

IMG_0553.PNG

우리는 현재 한 공유기 내에 NAS와 노트북이 함께 있으므로 사설 IP를 통해 접근할 수 있다. 만약 서로 다른 네트워크에 있다면, 예를들어 집이 아닌 외부에서 집에있는 NAS에 접근하고 싶다면 공인IP를 통해 먼저 집의 네트워크에 접속해 사설IP를 통해 접근하면 된다. 이 과정을 가능케하는것이 포트포워딩이다.

포트포워딩 (Port Forwarding)

포트포워딩은 외부 ip(공인 ip)의 포트와 내부 ip(사설 ip)의 포트를 연결해 주는 작업이다. 예를들어 공유기의 180번 포트에 접속하면 핸드폰의 5001번 포트에 접속되도록 설정하는 것이다. 이를 통해 외부에서도 내부의 장치에 접근할 수 있게 된다. 포트포워딩을 설정하는 방법은 각 공유기마다 다르므로 검색을 통해 알아보자.

NAS 제어판의 정보센터 > 네트워크 로 가보면 ip 주소가 보인다. 해당 ip주소와 아까 설정했던 포트번호를 http또는 index.html을 받아올 수 있다.

프로토콜://ip주소:PORT번호

ex ) https://114.89.70.206:5004

SSH 서버 활성화

ssh 서버를 여는 법은 훨씬 간단하다. NAS의 제어판 > 터미널 및 SNMP로 가면 ssh 서버를 활성화 할 수 있다.

스크린샷 2023-05-25 오후 7.23.15.png

SSH 서비스 활성화를 체크하고 접속할 포트번호를 입력한 뒤 적용을 누르면 SSH 서버가 활성화 된다.

이후 터미널에서도 ssh를 통해 NAS에 접근할 수 있다. 터미널에서 다음과 같이 입력하면 접속할 수 있다.

ssh 원격지id@원격지ip주소 -p 포트번호

ex ) ssh admin@114.89.70.206 -p 22

스크린샷 2023-05-25 오후 7.32.36.png

그러면 위와같이 비밀번호를 입력하라는 메세지가 나오고 비밀번호를 입력하면 다음과 같이 접속된다.

스크린샷 2023-05-25 오후 7.34.42.png

로컬에서 ssh 서버로 데이터 보내는법

scp를 이용하면 데이터를 로컬에서 ssh 서버로 전송할 수 있다. 명령어는 다음과 같다.

scp -P 포트번호 로컬에서전송할데이터의경로 원격지id@원격지ip주소:원격지에서저장할공간의경로

ex ) scp -P 22 ~/Desktop/index.html admin@114.89.70.206:~/www/

만약 디렉토리를 전송하고 싶다면 -r 옵션을 추가하자.

ex ) scp -P 22 -r ~/Desktop/index.html admin@114.89.70.206:~/www/

위 명령어 사용시

subsystem request failed on channel 0
scp: Connection closed

와 같은 오류가 발생했다. 구글링해본 결과 서버에 STFP 프로토콜을 구현해 놓지 않아서 생기는 문제라고 한다. -O 옵션을 주면 STFP 프로토콜이 아닌 원래의 SCP 프로토콜을 이용할 수 있다고 한다.

ex ) scp -O -P 22 -r ~/Desktop/index.html admin@114.89.70.206:~/www/

와 같이 -O 옵션을 주니 정상적으로 파일을 전송했다.

ssh 서버에서 데이터를 가져오고 싶으면

scp -P 포트번호 로컬에서저장할공간의경로 원격지id@원격지ip주소:원격지에서가져올데이터의경로

와 같이 입력하면 된다.

디렉토리는 마찬가지로 -r 옵션을 주면된다.

이렇게 대충 테스트를 마치고 본격적으로 서버실에 NAS를 설치하기로 했다.

Server.HEIC

서버실도 이번기회에 처음가보게 되었다. 서버들의 발열을 잡기위해 에어컨을 풀로 틀어놔서 굉장히 추웠다. 그리고 팬돌아가는 소리가 어마어마해서 말소리도 잘 안들린다..

우리는 서버실에 NAS를 설치하고 외부에서도 접근할 수 있도록 해야하므로 NAS에 공인 ip를 할당해 주어야한다.

우선 공유기도 하나 준비해서 서버실과 연결한 뒤 집에서 했던 것과 같이 NAS를 공유기에 연결하고 와이파이를 통해 노트북으로 NAS에 접속했다.

NAS에 공인 ip를 할당하는 방법은 NAS의 제어판 > LAN 포트를 선택하고 편집 버튼을 눌러

스크린샷 2023-05-25 오후 8.29.15.png 스크린샷 2023-05-25 오후 8.29.15.png

수동 구성 이용을 체크한 뒤 각 필드를 채워넣고 확인을 누르면 된다.

이후엔 공유기는 이제 넣어두고 NAS를 서버실에 직접연결하여 전원만 켜주면 방금 할당했던 공인ip를 통해 외부에서도 NAS에 접속하여 관리할 수 있다. 기본으로는 http 프로토콜은 5000번 포트,

DDNS

매번 ip 주소를 웹브라우저에 입력하고 접속하는 일은 번거로운 일이다. DDNS를 설정하면 ip주소가아닌 naver.com과 같은 문자열(도메인)로 접속할 수 있다. 원래 도메인은 구매하여 사용해야하지만, 시놀로지에서는 기본적으로 각 NAS마다 하나의 DDNS를 무료로 제공해주고 있다. 이를 이용하는 법을 알아보자.

스크린샷 2023-05-25 오후 8.39.22.png

제어판 > 외부 액세스에서 추가 버튼을 누르면 DDNS를 추가할 수 있다.

스크린샷 2023-05-25 오후 8.40.44.png

서비스 공급자를 Synology로 선택하고 호스트 이름을 작성하자.

시놀로지에서 제공하는 DDNS는 호스트이름.synology.me 이다. 해당 DDNS를 이용하기 위해서는 시놀로지 계정이 있어야한다. 없다면 회원가입을 진행하고 사용자 이름/이메일 과 패스워드/키 부분에 각각 입력한 뒤 확인 버튼을 눌러주자.

설정을 완료하면 이제 ip주소가 아닌 http://호스트이름.synology.me 를 통해 NAS에 접근할수 있다.

데이터 베이스 설정

이후 데이터베이스도 외부에서 접근할 수 있도록 설정했다. 우리는 mariaDB를 이용하므로 해당 패키지와 phpMyAdmin 패키지를 설치했다.

스크린샷 2023-05-25 오후 8.46.40.png

이후 데이터베이스 설정은 phpMyAdmin을 통해 관리한다. 들어가보면 기본적으로 root 계정이 존재하는데, root계정은 외부에서 접속이 불가능하다. 따라서 다른 사용자 계정을 하나 만들어서 그를 통해 접속해야한다. 사용자 계정 추가를 진행해보자.

스크린샷 2023-05-25 오후 8.53.46.png

사용자 추가 버튼을 누른 뒤

스크린샷 2023-05-25 오후 8.55.25.png

필드를 모두 채우고 전체적 권한을 모두 체크로 허용해주자. 이때 호스트명은 %로 해놔야 어떤 외부 ip에서도 데이터베이스에 접근할 수 있다.

이후에 MariaDB 10 패키지를 열어

스크린샷 2023-05-25 오후 8.58.04.png

TCP/IP 연결 활성화를 꼭 체크해주자. 포트도 원하는 포트로 설정해주면 된다.

데이터베이스 접속을 시도해보자. 터미널 명령어는 다음과 같다.

mysql -u 유저네임 -p -h 호스트이름 --port 포트번호

ex ) mysql -u user -p -h myhost.synology.me —port 3306

스크린샷 2023-05-25 오후 9.08.57.png

잘 접속되는 것을 확인할 수 있다. 종료할때는 exit를 입력하면 종료할 수 있다.

Done.HEIC (서버실의 한 귀퉁이를 차지중인 우리의 쪼꼬미 NAS)

이로써 NAS를 설치하고 서버와 데이터베이스를 외부에서 접속할 수 있는 환경을 모두 완성하였다. 다음 글에서는 웹페이지를 만든 과정도 기록해보겠다.

Leave a comment