IoT

다원 WiFi 플러그 로컬 서버 설치 (CSS5831님 서버 사용) : 1편

ㅋㅋ잠자 2022. 5. 20. 22:19
반응형

안녕하세요? 

 

일단 저는 다원 WIFI 플러그를 일정량 가지고 있는데, 이미 몇번 서버 먹통에 당한지라.. 아래의 방법을 이용하여 로컬화 하여 잘 사용중이였습니다.

https://blog.djjproject.com/668

(stkang90 님의 로컬화 방법)

 

이번에 새로 구매한 제품들이 펌업이 되어 오는 제품들이 있어 연동이 되지 않는 문제가 있어 카페에 공개된 채성식님 자료를 통해 리눅스 서버에 컨테이너로 설치해보겠습니다.

 

기본적으로 가이드는 자세하게 작성되어 있으나, 제가 나중에 참고할 용도로 하나 글을 작성해봅니다.

 

1. 공식 배포 주소

공식 배포 주소는 아래와 같습니다.

문서 : https://github.com/SeongSikChae/PowerManagerDocument

서버 : https://github.com/SeongSikChae/PowerManagerServer

API서버 : https://github.com/SeongSikChae/PowerManagerApiServer

인증서 생성 관련 파일 : https://github.com/SeongSikChae/Certificate

플러그 등록 프로그램 : https://github.com/SeongSikChae/PowerManagerConfig

 

프로그램을 작성해주신 채성식님께 무한의 감사의 말씀 드립니다.

 

2. 우분투 컨테이너 생성하기

일단은 내부망에서만 사용할 예정이고 컨테이너화 할 생각입니다.

그리고 기존에 돌아가는 서비스도 있어서 포트 겹침 문제로 macvlan 을 사용하여 컨테이너를 생성할 예정입니다.

 

일단 docker 에서 macvlan 네트워크를 하나 생성합니다.

저는 macvlan 대상 네트워크가 vmbr0 입니다. proxmox 를 사용중이라면 네트워크가 이렇게 이름이 바뀝니다.

물론 proxmox 의 lxc 기능을 통해 구현할 수 있지만, 조금 범용적으로 docker 를 통해 구성해보겠습니다.

root@debian:~# ifconfig
vmbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.17  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::1e69:7aff:fe09:6d01  prefixlen 64  scopeid 0x20<link>
        ether 1c:69:7a:09:6d:01  txqueuelen 1000  (Ethernet)
        RX packets 2422201345  bytes 2365933084257 (2.1 TiB)
        RX errors 0  dropped 8  overruns 0  frame 0
        TX packets 1385288012  bytes 2236546782661 (2.0 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker 네트워크는 아래와 같이 생성합니다.

현재 서브넷이 192.168.0.0/24 이고 게이트웨이는 192.168.0.1 그리고 부모는 vmbr0 를 명시하면서 macvlan 이라는 이름을 가진 네트워크를 생성하는 것입니다.

root@debian:~# docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=vmbr0 macvlan bind9

다음으로 아래의 명령을 통해 우분투 컨테이너를 하나 생성합니다.

백그라운드로 구동하고 제가 스탑시키지 않으면 자동실행되며

높은 권한으로 구동되고

네트워크는 macvlan 을 사용하며

ip는 DHCP 가 할당하는 범위에서 할당이 되지 않을것 같은? IP를 하나 할당합니다.

이름은 dawon-server 라고 생성하고 ubuntu 18.04 이미지에 entrypoint 는 /bin/bash 입니다.

root@debian:~# docker run -dit --restart unless-stopped --privileged --net macvlan --ip=192.168.0.102 --name dawon-server ubuntu:18.04 /bin/bash

해당 컨테이너로 들어가서 먼저 필요한 패키지들을 조금 설치해줍니다.

root@debian:~# docker exec -it dawon-server /bin/bash
root@7c00a5d21677:/#

패키지 리스트를 먼저 갱신합니다.

root@7c00a5d21677:/# apt update

의존하는 패키지들을 설치합니다.

root@7c00a5d21677:/# apt install sudo curl git wget vim dialog ca-certificates libicu60 locales tzdata openssl unzip dos2unix net-tools dnsutils bind9

기본적으로 로케일이나 타임존이 설정되어야 함으로 아래와 같이 설정을 진행합니다.

 

3. 서버 프로그램 받아 파일 배치

기본적으로 아래의 폴더 구성이 됩니다.

/PowerManager

/PowerManager/Certificate

/PowerManagerApi

1번 섹션에서 릴리즈를 받아 아래와 같이 배치합니다.

일단 운영체제 별로 아키텍쳐별로 파일이 있음으로 맞는 아키텍쳐를 골라 다운을 받습니다.

root@7c00a5d21677:/# cd ~

root@7c00a5d21677:~# wget https://github.com/SeongSikChae/PowerManagerServer/releases/download/v1.0.5/Linux64-v1.0.5.zip -O PowerManagerServer.zip

root@7c00a5d21677:~# wget https://github.com/SeongSikChae/PowerManagerApiServer/releases/download/v1.0.2/Linux64-v1.0.2.zip -O PowerManagerApiServer.zip


root@7c00a5d21677:~# wget https://github.com/SeongSikChae/Certificate/releases/download/v1.0.0/Certificate.zip -O PowerManagerCertificate.zip

그리고 파일을 적절하게 배치합니다.

root@7c00a5d21677:~# mkdir -p /PowerManager/Certificate
root@7c00a5d21677:~# mkdir -p /PowerManagerApi
root@7c00a5d21677:~# unzip PowerManagerServer.zip -d /PowerManager/
root@7c00a5d21677:~# unzip PowerManagerCertificate.zip -d /PowerManager/Certificate/
root@7c00a5d21677:~# unzip PowerManagerApiServer.zip -d /PowerManagerApi/

 

4. 인증서 생성하기

인증서에 대한 개념이 잘 없어서 이 부분은 아래와 같이 정확하게 따라하라고 밖에 말씀을 못드리겠네요.

일단은 스크립트를 생성하기위해 아래 파일을 조금 수정합니다.

root@7c00a5d21677:~# cd /PowerManager/Certificate/
root@7c00a5d21677:/PowerManager/Certificate# ls
 Client.cfg   certs   crlnumber   newcerts   serial
 Server.cfg   crl     index.txt   private   ''$'\300\316\301\365\274\255\271\337\261\336''.txt'
root@7c00a5d21677:/PowerManager/Certificate# mv ''$'\300\316\301\365\274\255\271\337\261\336''.txt' genkey.sh

이런 내용들이 들어 있습니다.

root@7c00a5d21677:/PowerManager/Certificate# cat genkey.sh
[루트인증서]

openssl genrsa -out D:\PowerManager\Certificate\private\ca.key
openssl req -new -key D:\PowerManager\Certificate\private\ca.key -out D:\PowerManager\Certificate\certs\ca.csr -config D:\PowerManager\Certificate\Server.cfg
openssl x509 -req -days 3650 -extensions v3_ca -in D:\PowerManager\Certificate\certs\ca.csr -signkey D:\PowerManager\Certificate\private\ca.key -out D:\PowerManager\Certificate\newcerts\ca.crt -extfile D:\PowerManager\Certificate\Server.cfg
openssl pkcs12 -inkey D:\PowerManager\Certificate\private\ca.key -in D:\PowerManager\Certificate\newcerts\ca.crt -export -out D:\PowerManager\Certificate\newcerts\ca.p12

[서버인증서]

openssl genrsa -out D:\PowerManager\Certificate\private\S.key
openssl req -new -key D:\PowerManager\Certificate\private\S.key -out D:\PowerManager\Certificate\certs\S.csr -config D:\PowerManager\Certificate\Server.cfg
openssl x509 -req -days 3650 -extensions v3_req -in D:\PowerManager\Certificate\certs\S.csr -CA D:\PowerManager\Certificate\newcerts\ca.crt -CAcreateserial -CAkey D:\PowerManager\Certificate\private\ca.key -out D:\PowerManager\Certificate\newcerts\S.crt -extfile D:\PowerManager\Certificate\Server.cfg
openssl pkcs12 -inkey D:\PowerManager\Certificate\private\S.key -in D:\PowerManager\Certificate\newcerts\S.crt -export -out D:\PowerManager\Certificate\newcerts\S.p12

[클라이언트인증서]

openssl genrsa -out D:\PowerManager\Certificate\private\C.key
openssl req -new -key D:\PowerManager\Certificate\private\C.key -out D:\PowerManager\Certificate\certs\C.csr -config D:\PowerManager\Certificate\Client.cfg
openssl x509 -req -days 365 -extensions v3_user_req -in D:\PowerManager\Certificate\certs\C.csr -CA D:\PowerManager\Certificate\newcerts\ca.crt -CAcreateserial -CAkey D:\PowerManager\Certificate\private\ca.key -out D:\PowerManager\Certificate\newcerts\C.crt -extfile D:\PowerManager\Certificate\Client.cfg
openssl pkcs12 -inkey D:\PowerManager\Certificate\private\C.key -in D:\PowerManager\Certificate\newcerts\C.crt -export -out D:\PowerManager\Certificate\newcerts\C.p12

조금 내용을 수정합니다.
먼저 윈도우 형태의 줄바꿈을 유닉스 형태로 바꿉니다.

root@7c00a5d21677:/PowerManager/Certificate# dos2unix genkey.sh
dos2unix: converting file genkey.sh to Unix format...

이는 D:\~~ 경로를 수정하고 \를 /로 바꾸는 작업입니다.

root@7c00a5d21677:/PowerManager/Certificate# sed -i -e 's,D:\\PowerManager\\Certificate\\,,g' genkey.sh
root@7c00a5d21677:/PowerManager/Certificate# sed -i -e 's,\\,/,g' genkey.sh

내용을 읽어보면 아래와 같이 바뀝니다.

여기서 루트 인증서와 서버인증서 등 메모를 echo 로 바꿔줍니다.

root@7c00a5d21677:/PowerManager/Certificate# cat genkey.sh
[루트인증서]

openssl genrsa -out private/ca.key
openssl req -new -key private/ca.key -out certs/ca.csr -config Server.cfg
openssl x509 -req -days 3650 -extensions v3_ca -in certs/ca.csr -signkey private/ca.key -out newcerts/ca.crt -extfile Server.cfg
openssl pkcs12 -inkey private/ca.key -in newcerts/ca.crt -export -out newcerts/ca.p12

[서버인증서]

openssl genrsa -out private/S.key
openssl req -new -key private/S.key -out certs/S.csr -config Server.cfg
openssl x509 -req -days 3650 -extensions v3_req -in certs/S.csr -CA newcerts/ca.crt -CAcreateserial -CAkey private/ca.key -out newcerts/S.crt -extfile Server.cfg
openssl pkcs12 -inkey private/S.key -in newcerts/S.crt -export -out newcerts/S.p12

[클라이언트인증서]

openssl genrsa -out private/C.key
openssl req -new -key private/C.key -out certs/C.csr -config Client.cfg
openssl x509 -req -days 365 -extensions v3_user_req -in certs/C.csr -CA newcerts/ca.crt -CAcreateserial -CAkey private/ca.key -out newcerts/C.crt -extfile Client.cfg
openssl pkcs12 -inkey private/C.key -in newcerts/C.crt -export -out newcerts/C.p12

여기서 루트 인증서와 서버인증서 등 메모를 echo 로 바꿔줍니다.

root@7c00a5d21677:/PowerManager/Certificate# vi genkey.sh

echo "[rootca]"
openssl genrsa -out private/ca.key
openssl req -new -key private/ca.key -out certs/ca.csr -config Server.cfg
openssl x509 -req -days 3650 -extensions v3_ca -in certs/ca.csr -signkey private/ca.key -out newcerts/ca.crt -extfile Server.cfg
openssl pkcs12 -inkey private/ca.key -in newcerts/ca.crt -export -out newcerts/ca.p12

echo "[server]"
openssl genrsa -out private/S.key
openssl req -new -key private/S.key -out certs/S.csr -config Server.cfg
openssl x509 -req -days 3650 -extensions v3_req -in certs/S.csr -CA newcerts/ca.crt -CAcreateserial -CAkey private/ca.key -out newcerts/S.crt -extfile Server.cfg
openssl pkcs12 -inkey private/S.key -in newcerts/S.crt -export -out newcerts/S.p12

echo "[client]"
openssl genrsa -out private/C.key
openssl req -new -key private/C.key -out certs/C.csr -config Client.cfg
openssl x509 -req -days 365 -extensions v3_user_req -in certs/C.csr -CA newcerts/ca.crt -CAcreateserial -CAkey private/ca.key -out newcerts/C.crt -extfile Client.cfg
openssl pkcs12 -inkey private/C.key -in newcerts/C.crt -export -out newcerts/C.p12

그리고 Server.cfg 파일과 Client.cfg 파일을 수정합니다.

12번째줄의 HOME 경로를 실제 경로로 맞춰줍니다.

13번째줄은 에러가 발생하여 코멘트 처리합니다.

root@7c00a5d21677:/PowerManager/Certificate# vi Server.cfg

 10 # This definition stops the following lines choking if HOME isn't
 11 # defined.
 12 HOME                    = PowerManager/Certificate
 13 #RANDFILE               = $ENV::HOME/.rnd
 14
 15 # Extra OBJECT IDENTIFIER info:
 16 #oid_file               = $ENV::HOME/.oid
 17 oid_section             = new_oids
# Server.cfg 의 경우 아래의 줄 번호에 서버 IP를 적습니다. 저는 192.168.0.102 로 할당했으니 그걸 적었습니다.
263 [ alt_names ]
264 #DNS.1   =
265 #DNS.2   =
266 #DNS.3   =
267 IP.1    = 192.168.0.102
268 #IP.2    =
269 #IP.3    =


root@7c00a5d21677:/PowerManager/Certificate# vi Client.cfg

 10 # This definition stops the following lines choking if HOME isn't
 11 # defined.
 12 HOME                    = /PowerManager/Certificate
 13 #RANDFILE               = $ENV::HOME/.rnd
 14
 15 # Extra OBJECT IDENTIFIER info:
 16 #oid_file               = $ENV::HOME/.oid
 17 oid_section             = new_oids

인증서를 생성해 봅니다.

아래에 비어있는 것은 엔터로 넘긴것입니다.

비밀번호를 입력해야하는 칸은 찐하게 처리해 두었습니다.

 

각개 인증서에 비밀번호를 입력해야하는데 되도록이면 3개다 같으면 헷깔리지 않습니다.

root@7c00a5d21677:/PowerManager/Certificate# bash genkey.sh

# 루트인증서를 생성합니다.

[rootca]
Generating RSA private key, 2048 bit long modulus (2 primes)
............................................................................................................................................................+++++
...................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [KR]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:

# 여기에 아무거나 입력합니다. 저는 powermanager 라고 입력했습니다.
Common Name (e.g. server FQDN or YOUR name) []:powermanager
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request

# 여기는 엔터로 넘어가면 됩니다.
A challenge password []:
An optional company name []:
Signature ok
subject=C = KR, CN = powermanager
Getting Private key

# 여기는 인증서에 사용할 비밀번호를 입력합니다.
Enter Export Password:
Verifying - Enter Export Password:

# 서버인증서 생성
[server]
Generating RSA private key, 2048 bit long modulus (2 primes)
..+++++
................................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [KR]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:

# Common Name 에 서버 IP 주소를 넣습니다.
Common Name (e.g. server FQDN or YOUR name) []:192.168.0.102
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Signature ok
subject=C = KR, CN = 192.168.0.102
Getting CA Private Key

# 인증서에 사용할 비밀번호를 입력합니다.
Enter Export Password:
Verifying - Enter Export Password:

# 클라이언트 인증서 생성
[client]
Generating RSA private key, 2048 bit long modulus (2 primes)
.............................................+++++
................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [KR]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:

# Common Name 에 아무거나 입력합니다. 저는 powermanager 라고 입력했습니다.
Common Name (e.g. server FQDN or YOUR name) []:powermanager
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Signature ok
subject=C = KR, CN = powermanager
Getting CA Private Key

# 인증서에 사용할 비밀번호를 기입합니다.
Enter Export Password:
Verifying - Enter Export Password:

다음으로 루트 인증서를 서버에 등록합니다.

root@7c00a5d21677:/PowerManager/Certificate/newcerts# cp ca.crt /usr/local/share/ca-certificates/
root@7c00a5d21677:/PowerManager/Certificate/newcerts# update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

 

5. 인증서 파일 배치 및 서버 설정

생성된 인증서 파일을 보면 아래와 같습니다.

root@7c00a5d21677:/PowerManager/Certificate# cd newcerts/
root@7c00a5d21677:/PowerManager/Certificate/newcerts# ls
C.crt  C.p12  S.crt  S.p12  ca.crt  ca.p12  ca.srl

아래와 같이 파일을 배치합니다.

root@7c00a5d21677:/PowerManager/Certificate/newcerts# cp S.p12 ../../config/S.p12
root@7c00a5d21677:/PowerManager/Certificate/newcerts# cp S.p12 ../../../PowerManagerApi/config/S.p12

그리고 클라이언트 인증서 파일에서 fingerprint 값을 찾습니다.

fingerprint 값을 : 없이 소문자로 뽑아야 하기 때문에 아래 명령어를 돌려서 찾습니다.

root@7c00a5d21677:/PowerManager/Certificate/newcerts# openssl x509 -in "C.crt" -noout -fingerprint -sha1 | sed -e 's,:,,g' | sed -e 's,[A-Z],\L&,g'

sha1 fingerprint=adfafafds12312312424354351312

PowerManager Server 의 config.yaml 파일을 아래와 같이 수정합니다.

root@7c00a5d21677:/PowerManager/Certificate/newcerts# vi ../../config/config.yml

HttpPort: 80
HttpsPort: 443
ServerCertificate: /PowerManager/config/S.p12
ServerCertificatePassword: 12345
MqttServerPort: 1803
DbPath: /PowerManager/data/PowerManager.sqlite
AdminThumbprint: adfafafds12312312424354351312

다음으로 PowerManagerApi Server 의 config.yaml 파일을 아래와 같이 수정합니다.

root@7c00a5d21677:/PowerManager/Certificate/newcerts# vi /PowerManagerApi/config/config.yml

HttpPort: 18080
HttpsPort: 18443
ServerCertificate: /PowerManagerApi/config/S.p12
ServerCertificatePassword: 12345
DbPath: /PowerManagerApi/data/PowerManagerApi.sqlite

 

6. 테스트 구동하기

서버를 아래와 같이 구동합니다.

첫번째로 PowerManager 서버를 구동합니다.

# 먼저 실행 권한을 줍니다.
root@7c00a5d21677:/PowerManager/Certificate/newcerts# cd /PowerManager
root@7c00a5d21677:/PowerManager# chmod a+x PowerManagerServer *.sh

root@7c00a5d21677:/PowerManager# ./run.sh &
[1] 4146
root@7c00a5d21677:/PowerManager# starting PowerManagerServer

다음으로 PowerManagerApi 서버를 구동합니다.

root@7c00a5d21677:/PowerManager# cd /PowerManagerApi/
root@7c00a5d21677:/PowerManagerApi# chmod a+x PowerManagerApiServer *.sh

root@7c00a5d21677:/PowerManagerApi# ./run.sh &
[2] 4182
root@7c00a5d21677:/PowerManagerApi# starting PowerManagerApiServer

포트가 열려있는지 확인합니다.

root@7c00a5d21677:/PowerManagerApi# netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:18080           0.0.0.0:*               LISTEN      4188/PowerManagerAp
tcp        0      0 127.0.0.11:41221        0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:18443           0.0.0.0:*               LISTEN      4188/PowerManagerAp
tcp        0      0 0.0.0.0:1803            0.0.0.0:*               LISTEN      4152/PowerManagerSe
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4152/PowerManagerSe
tcp        0      0 0.0.0.0:8883            0.0.0.0:*               LISTEN      4152/PowerManagerSe
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      4152/PowerManagerSe
tcp6       0      0 :::1803                 :::*                    LISTEN      4152/PowerManagerSe
tcp6       0      0 :::8883                 :::*                    LISTEN      4152/PowerManagerSe
udp        0      0 127.0.0.11:44253        0.0.0.0:*                           -
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     125726258 4152/PowerManagerSe  /tmp/dotnet-diagnostic-4152-239067238-socket
unix  2      [ ACC ]     STREAM     LISTENING     125730302 4188/PowerManagerAp  /tmp/dotnet-diagnostic-4188-239073782-socket

 

7. 윈도우에 인증서 등록

호스트 쉘에서 인증서 파일을 윈도우로 복사합니다.

root@debian:/media/data/temp# docker cp dawon-server:/PowerManager/Certificate/newcerts/C.p12 .
root@debian:/media/data/temp# docker cp dawon-server:/PowerManager/Certificate/newcerts/ca.crt .

인증서를 윈도우에서 아래와 같이 등록합니다.

먼저 루트 인증서를 더블클릭해서 등록합니다.

로컬 컴퓨터를 선택하고 다음을 누릅니다.

모든 인증서를 다음 저장소에 저장을 체크하고 찾아보기를 누릅니다.

신뢰할 수 있는 루트 인증기관을 선택합니다.

다음을 누릅니다.

다음으로 클라이언트 인증서를 더블클릭하여 열어서 등록합니다.

현재 사용자를 선택하고 다음을 누릅니다.

다음을 누릅니다.

4번 섹션에서 클라이언트 인증서를 생성할 때 입력했던 비밀번호를 넣고 다음을 누릅니다.

모든 인증서를 다음 저장소에 저장을 체크하고 찾아보기를 누릅니다.

개인용을 선택합니다.

다음을 누릅니다.

 

8. 웹페이지가 열리는지 체크

서버IP:80 으로 접근하여 웹 페이지가 열리는지 체크합니다.

주소를 입력하는 순간 443으로 이동되며, 인증서 선택창이 뜹니다.

이렇게 페이지가 열리면 일단 정상 동작하는 것입니다.

 

9. 네임서버 운영하기

*.dawonai.com 이 사설 서버에 연결을 하도록 fake 해야하는 부분이 있어서 dns 서버를 구동하여 *.dawonai.com 을 설치한 192.168.0.102 를 가리키게 해야합니다.

아래과 같이 설정을 진행합니다.

 

의존 패키지 설치에서 설치를 이미 했지만 혹시 안하셨으면 설치해야합니다.

root@7c00a5d21677:/PowerManager/Certificate/newcerts# apt install bind9

설정 폴더로 이동하여 일단 기초 설정을 진행합니다.

따로 기본 설정은 건들일 필요 없고, zone 설정만 하면 됩니다.

zone 설정은 named.conf.local 파일을 수정합니다.

root@7c00a5d21677:/etc/bind# vi named.conf.local

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "dawonai.com" IN {
        type master;
        file "/etc/bind/db.dawonai.com";
        allow-update { none; };
        allow-transfer { none; };
};

zone "59.194.20.in-addr.arpa" IN {
        type master;
        file "/etc/bind/db.59.194.20";
        allow-update { none; };
        allow-transfer { none; };
};

각 존에 대해 설정파일을 아래와 같이 생성합니다.

root@7c00a5d21677:/etc/bind# vi db.dawonai.com

$TTL    86400
@       IN      SOA     dawonai.com. root (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      dawonai.com.
@       IN      A       192.168.0.102
dwmqtt  IN      A       192.168.0.102
dwapi   IN      A       192.168.0.102

root@7c00a5d21677:/etc/bind# vi db.59.194.20

$TTL    86400
@       IN      SOA     dawonai.com. root (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      dawonai.com
@       IN      A       192.168.0.102
102     IN      PTR     dawonai.com.
102     IN      PTR     dwmqtt.dawonai.com
102     IN      PTR     dwapi.dawonai.com

위의 102 필드는 IP 주소 끝자리입니다.

 

설정이 끝났으면 bind9 서비스를 시작합니다.

root@7c00a5d21677:/etc/bind# /etc/init.d/bind9 start
 * Starting domain name service... bind9                                                                                      [ OK ]

nslookup 을 통해 다원 서버가 제 서버 주소를 가리키는지 확인합니다.

root@7c00a5d21677:/etc/bind# nslookup dawonai.com 192.168.0.102
Server:         192.168.0.102
Address:        192.168.0.102#53

Name:   dawonai.com
Address: 192.168.0.102

root@7c00a5d21677:/etc/bind# nslookup dwmqtt.dawonai.com 192.168.0.102
Server:         192.168.0.102
Address:        192.168.0.102#53

Name:   dwmqtt.dawonai.com
Address: 192.168.0.102

root@7c00a5d21677:/etc/bind# nslookup dwapi.dawonai.com 192.168.0.102
Server:         192.168.0.102
Address:        192.168.0.102#53

Name:   dwapi.dawonai.com
Address: 192.168.0.102

 

10. 공유기 DNS 서버 설정 변경하기

실제로 하위 공유기를 하나 더 두어 플러그만 연결할 수 있도록 구성하는게 맞으나, 지금 상황이 여의치 않아 메인 공유기에 DNS를 설정했습니다.

DNS 설정이 recursive 를 disable 하지 않아 다른 도메인은 네임 리졸브가 가능한 상태입니다.

윈도우 컴퓨터에서 DNS 주소를 받아온것을 확인해보면 정상적으로 설정이 되었음을 알 수 있습니다.

 

이 설정이 컴퓨터에서는 필요하지는 않습니다. 확인차 설정해본 것입니다.

 

11. 플러그 연동하기

플러그를 연동해 보겠습니다. 펌업을 하려고 AIPM 앱에 한번 연결을 했어서 아래의 방법으로 연동해야합니다.

PowerManagerConfig 파일을 받고 압축을 푼 다음 주소창에 powershell 이라고 입력하여 powershell 을 실행합니다.

그리고 클라이언트 인증서 파일을 동일 위치에 배치합니다.

플러그를 초기화 하고 윈도우에서 와이파이 연결합니다.

 
반응형