CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·주식한당 ·아이포니앙 ·MaClien ·방탄소년당 ·일본산당 ·개발한당 ·자전거당 ·이륜차당 ·소시당 ·AI당 ·패스오브엑자일당 ·안드로메당 ·나스당 ·클다방 ·바다건너당 ·걸그룹당 ·사과시계당 ·물고기당 ·전기자전거당 ·노젓는당 ·노키앙 ·가상화폐당 ·곰돌이당 ·윈폰이당 ·축구당 ·키보드당 ·리눅서당 ·IoT당 ·창업한당 ·소셜게임한당 ·여행을떠난당 ·골프당 ·콘솔한당 ·디아블로당 ·찰칵찍당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·육아당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·적는당 ·방송한당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·심는당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

사용기

전자기기 링크시스 공유기에 NGINX 올려서 Reverse Proxy로 쓰기 13

6
2022-12-04 04:28:51 수정일 : 2022-12-07 23:09:45 72.♡.95.155
innomatic

서론

지난번 블랙프라이데이에 링크시스 E8450 을 할인하길래 냉큼 집어왔습니다.  발매된 지 좀 되었지만 OpenWrt가 지원하는 몇 안되는 AX 급 라우터인데다가 메모리가 쓸데없이(?) 많이 들어가 있어서 OpenWrt 사용자들에게 핫한 기기인 것 같더군요. 


칩셋:  미디어 텍 MT7622(A53 dual core 1.3GHz) 

플래쉬: 128MB (80MB 사용가능)

램: 512MB


(추가: 찾아보니 아이피타임 AX8004M 과 사양이 동일하네요. 아마도 동일 하드웨어 일 듯.)


주의사항

제 지식이 일천하고 기억이 오락가락 해서 내용에 오류가 있을 가능성이 매우 높습니다. 내용을 그대로 따라하시는 것은 추천하지 않습니다. 곳곳에 있는 링크를 참조해 주세요.


홈 네트워크 구성

구성은 단순합니다. 나스나 라즈베리파이로 홈오토메이션 하시는 분들은 다들 해보셨을 구성인데요.  굳이 사용기를 쓰는 이유는 리버스 프록시를 일반 유무선 공유기에 직접 설치했다는 정도? 


비용과 공간의 여유가 있다면 X86 머신 + pfsense 같은 것으로 구성할 수도 있겠지만 누구나 가지고 있을 법한 기기로 구성했다는데 의의를 두고 싶네요.


현재 서버로 운용하는 기기는


1. 라스베리파이 3B: mkdocs 서버로 개인 위키로 씁니다. markdown 문서를 웹페이지로 만들어 줍니다. 즐겨찾기를 여기에 넣어두면 브라우저, 디바이스 상관없이 공유할 수 있지요. 업데이트는 약간 불편하지만서도.


2. 인텔 미니피씨 (Nuc10 i3): 소스코드 백업, 기타 자료 백업 (이건 서버라기 보다 백업 머신입니다. 제 주력 랩탑에 무슨 일이 일어나면 바로 교체가능한)


home_network.png


소스코드 백업

소스코드 백업은 GitHub 로 푸시할 때 별도의 카피를 저장합니다. 추가의 리모트 리포지토리 역할이지요.  별도의 서버 없이 SSHD 서비스만 돌고 있으면 됩니다. 대부분 기본으로 설치되지요.  백업 방법은 config 파일에 pushurl 한 줄만 넣어 주면 양쪽으로 push 가 됩니다. 저는 3방향으로 push 합니다만.


자료 백업

자료 백업은  Rsync 로 합니다. 마찬가지로  SSHD만 있으면 되니 별도 설치과정 없이 포트만 열어주면 됩니다.


제 랩탑이 10th gen i7 인데 동일 세대 i3와 하드 디스크 1 대 1 호환이 가능하더라고요. 인텔 미니 피씨에서  SSD를 뽑아 랩탑에 끼우면 그냥 동작합니다. 반대도 마찬가지고요.  위 방법으로 항상 동기를 해두면 다음과 같은 유사시


* 랩탑 하드웨어 고장 => 랩탑 SSD를 적출해 미니 피씨에 장착

* 랩탑  SSD 고장 => 미니 피씨 SSD를 랩탑에 장착

* 랩탑 하드웨어, SSD 동시 고장 또는 분실 => 미니 피씨로 작업 


이 가능하게 되는 거지요.


OpenWrt

먼저 OpenWrt 설치는 홈페이지에서 지원 하드웨어를 찾는 것으로 부터 시작합니다. 찾으면 디바이스 컬럼에 어떻게 설치하나가 자세히 설명되어 있습니다. 아이피타임 기기들도 지원되는데 부트로더에 특별한 작업을 하지 않아서 설치는 그냥 되는 것 같더군요. 설치 과정은 기기마다 다르니 생략.


NGINX

OpenWrt를 설치하면 기본 웹 인터페이스로 luci 가 뜨는데 간이 웹서버 uhttpd 상에서 돌아갑니다. 저는  nginx가 필요해서 기본구성(luci-ssl)을 삭제하고 nginx  버젼 luci 를 설치합니다.


opkg remove luci-ssl
opkg  update && opkg install luci-ssl-nginx


설치는 순식간입니다. 웹서버가 교체되어도 인터페이스 화면상에서는 못알아차릴 정도.


DDNS

다음 과정은 DDNS  설정입니다. 이게 되야 Let's Encrypt  에서 서버 인증을 받을 수 있습니다. 인증서 발급이 3억개를 돌파했다든데 이 자리를 빌어 인터넷을 안전하게 만든 일등 공신 중 하나에 감사를.


DDNS 패기지를 설치하고


opkg install ddns-script
opkg install luci-app-ddns
opkg install curl ca-bundle


luci 화면을 업데이트 하면 Service  메뉴가 추가된 것이 보입니다. 그 아래 Dynamic DNS를 선택하고 설정하시면 됩니다. 사용하시는 서비스에 따라 설정이 다를 수 있으니 역시 자세한 내용은 패스. 저는 Google Domains 사용하는데 항상 잘 됩니다.


ACME (서버 인증서 받기)

해당 패키지 설치하면


opkg install acme

opkg install luci-app-acme


역시 서비스 메뉴아래 Acme Certs 가 나타납니다. 개발자가 자세한 위키 페이지를 운용합니다만 뭔가 좀 복잡하고 저는 잘 모르겠어서 OpenWrt 에 설명 되어 있는 대로 따라 했습니다.  뭐 그냥 됩니다. 인증서 발급까지 한 2-3초?


Reverse Proxy

인증서 발급이 성공적이면 nginx 설정을 건드려 리버스 프록시를 설정할 차례지요. 


여기서 좀 삽질을 했는데 이유는 OpenWrt nginx가 일반 nginx와 한두가지 점에서 차이가 있더라고요. 자세한 설명은 해당 페이지를 참조하시면 되는데 기본적으로


1. 설정이  OpenWrt 자체  UCI 시스템과의 호환성을 고려해 약간 다르다는 점,

2. OpenWrt 버젼 nginx는 모듈을 별도 설치하게 되어 있지 않다는 점.


입니다. 모든 모듈을 다 포함해 컴파일 한 nginx 패키지도 있는데 그건 또 luci와 호환성이 보장된 게 아닌 듯 해서 패스.


하여간 삽질 후 내린 결론은


1. 가상 서버 설정은 /etc/nginx/conf.d/ 디렉토리에서 직접하는 것이 간단하면서도 관리가 편함

2.  TLS/SSL은 passthrough 하지 말고 전부 라우터에서 termination 할 것


입니다. 참고로 제가 사용하는 설정은


 /etc/nginx/conf.d/server.example.com.conf


server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name server.example.com;
        ssl_certificate '/etc/acme/server.example.com/server.example.com.cer';
        ssl_certificate_key '/etc/acme/server.example.com/server.example.com.key';
        ssl_session_cache 'shared:SSL:32k';
        ssl_session_timeout '64m';

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass http://192.168.1.xxx:8080;
        }
}


입니다. acme 디렉토리에 저장된 인증서를 사용해 SSL을 termination해 버리고 내부로는 decrypt 된 트랜잭션을 사용합니다.


기타


1. 위 내용에는 없지만 WireGuard 설정도  OpenWrt 에서  쉽게 됩니다.  설정 파라미터를 QR코드로 출력해주니 폰에서 스캔만 하면 끝. 밖에 나가 인터넷 뱅킹 쓸일 있으면 WireGuard  키고 합니다. VPN 연결되는 데 0.5 초 이내로 되는 듯.


2. 공유기에  USB  단자가 있으면 SAMBA 같은 걸 설치해 간이 NAS로 쓸 수도 있어요.  OpenWrt 에서 지원하는  NAS 프로토콜은 여기를 참조. 쓰고 보니 OpenWrt 광고 같기도 하고.



innomatic 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [13]
sltx
IP 115.♡.177.138
12-04 2022-12-04 08:08:13
·
홈 네트워크에서 리버스 프록시를 두었을 때 얻을 수 있는 이점은 무엇인지요?
innomatic
IP 72.♡.95.155
12-04 2022-12-04 08:49:06 / 수정일: 2022-12-04 08:52:19
·
@sltx님 저도 잘 모릅니다. 남들이 하니까 따라서? ...는 아니고 예를 들자면요.

1. 도메인을 구입했습니다 (example.com)
2. 집 컴퓨터의 사진 자료를 저장, 보기 등을 하고 싶어서 서버를 만들었습니다. (photo.example.com)

이걸 가능하게 하려고 공유기에 DDNS를 걸고 포트 포워딩을 했다고 한다면

1. 하나의 서버만 가능합니다. 예를 들어 music.example.com을 같은 방식으로 만들면 겹치 잖아요.
2. 컴퓨터의 서버 포트가 포워딩을 통해 인터넷의 수많은 봇들의 해킹 시도에 노출됩니다.

리버스 프록시를 설치하면 컴퓨터 앞 쪽에서 이를 해결해 줍니다.

1. photo.example.com 경로와 music.example.com 경로를 나누어 두개의 컴퓨터(서버)로 교통정리를 합니다
2. photo.example.com 이나 music.example.com 을 달고 들어오지 않는 모든 패킷을 차단해 줍니다. 인터넷 봇들이 이걸 알고 있을 리가 없으니까 특별히 해킹을 작정하고 사전 뒷조사를 하지 않는 이상은 침입이 거의 불가능하지요.

이상은 제가 막연히 이해하는 내용이고 더 자세한 것은 아래분이
sltx
IP 115.♡.177.138
12-04 2022-12-04 08:56:17
·
@innomatic님 집 밖에서 접속하는 상황이면 이해되네요. 설명 감사드립니다.
빨간망또라이
IP 114.♡.72.18
12-04 2022-12-04 15:20:05
·
공유기에 nginx 를 두는것과 대표 서버에 nginx를 두는것과 차이가 있을까요? 업그레이드가 좀더 쉬운 내부에 두고 portfowarding 하는것과 차이가 있을까요?
짐농
IP 211.♡.201.223
12-04 2022-12-04 18:05:23
·
@빨간망또라이님 대신 생각해 봤는데... 다수 서버 연결시 nginx서버를 거치지 않아도 되는 점 정도가 생각납니다. 그러면 연결하는 장비가 서버가 아닌 제3의 물건이어도 되니까 이래저래 활용도가 올라갈 곳 같습니다. 문제는 공유기 cpu가 버텨줘야...
innomatic
IP 72.♡.95.155
12-04 2022-12-04 20:22:43 / 수정일: 2022-12-04 20:27:03
·
@빨간망또라이님 통상적으로 프록시 서버를 별도로 두는 클라우드 구성과 유사한 장점이 있지 않을 까요?. 역할 분담이 되서 서버 설정이 간단해지고, 플래시 기반의 Read Only 파일시스템에 프록시를 두니 안정성에서도 유리하고.

짐농님 우려와 관련해서는 nginx는 라우터 자체 웹 UI를 위해 이미 들어가 있는 것을 빌려 쓰는 것이고

* 디스크 사용량 면에서 위 작업을 위해 가용 플래시 메모리의 약 6 MB (8퍼센트) 썼네요.
* CPU 사용량은 대용량 파일로 테스트 해 봤는데 최대 20% 정도 사용하고 80퍼센트는 놀고 있으니 별 무리는 없어보입니다.
짐농
IP 211.♡.201.223
12-04 2022-12-04 17:57:29
·
좋은 사례 공유해 주셔서 감사합니다.
wireguard 쉽게 된다니 관심이 생기는데, 능력이 부족하네요.ㅠㅠ
innomatic
IP 72.♡.95.155
12-04 2022-12-04 20:28:18
·
@짐농님 일단 OpenWrt만 올리면 WireGuard 설정은 아 ~ 주 쉽습니다. VPN 연결 속도도 이게 정말 연결된 거 맞아? 할 정도로 빠릅니다.
MakingAlpha
IP 112.♡.36.224
12-04 2022-12-04 21:11:52
·
보통은 집에 하나씩 있는(?) 시놀로지에 도커로 nginx 띄우는게 훨씬 편하게 가능할것 같습니다?
innomatic
IP 72.♡.95.155
12-04 2022-12-04 21:18:56 / 수정일: 2022-12-04 23:16:58
·
@MakingAlpha님 저는 집에 시놀로지가 없어요... 위에 언급한 대로 가능하면 x86 라우터 + pfsense 가 최상의 조합으로 보이지만 빵 못먹는 사람 고기도 못 먹으니 논점 자체가 핀트가 안맞는 것 같고.

라우터는 누구나 가지고 있으니 라스베리 파이 정도를 서버로 활용해 이것 저것 해 보고 싶다의 연장선상에 있다고 보시면 좋을 것 같아요.

덧 붙이자면 availability 측면이나 stability 측면에서 라우터가 가장 우수하고 또 그래야 하지 않나요? 라우터가 고장나면 모든 네트워크가 정지되니. 그런 라우터에 이미 nginx가 돌고 있다고 생각하면 리버스 프록시를 설치할 최적의 장소가 아닐까요?
MakingAlpha
IP 112.♡.36.224
12-04 2022-12-04 23:16:44
·
@innomatic님 집에서 하는 취미로 본다면 뭐든 상관없을 것 같습니다. 시놀로지가 있으신 분은 그걸 활용하는게 낫지 않을까 해서요~
요즘은 nginx도 도커로 올리는게 거의 대세인것 같습니다
innomatic
IP 72.♡.95.155
12-04 2022-12-04 21:52:39 / 수정일: 2022-12-04 21:53:45
·
아 그리고 갑자기 생각이 났는데, OpenWrt 광고하는 참에 ....

OpenWrt 라우터에 홈킷 브리지 올릴 수 있습니다. 약간(?)의 코딩이 필요하지만 서도. 자작 IoT 기기를 mqtt / coap 으로 연결해 아이폰에서 홈앱으로 제어할 수 있어요. 관심있는 분들 도전해 보셔도.
kmorkah
IP 175.♡.86.26
03-29 2023-03-29 13:52:10
·
많은 도움이 되었습니다. 감사합니다.
삭제 되었습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.