OpenWRT 커스텀펌웨어 라우터 – Linksys WRT3200ACM

목적

홈네트워크 구축
이라고 하지만… 그냥 iptime에서 해도 된다.
openwrt설치된 장비가 갖고 싶어서

구매

OpenWRT에 추천디바이스로 나와있어서 직구
https://www.linksys.com/us/support-product?pid=01t340000046sOsAAI
세금은 따로 없다. 전파인증을 따로 받아야 하는거라 국내판매는 당분간 힘들지 않을까
IPTIME에서 쓸만한게 있으면 사려고 했는데 없는 것 같다

설치

펌웨어 다운받아서 설치하면 끝
여기서 https://openwrt.org/toh/linksys/linksys_wrt3200acm
이걸 받아서 http://downloads.openwrt.org/releases/19.07.7/targets/mvebu/cortexa9/openwrt-19.07.7-mvebu-cortexa9-linksys_wrt3200acm-squashfs-factory.img
192.168.1.1로 접속
펌웨어 선택하고 설치… 경고는 무시
이렇게 쉬워도 되나?

설치된 후 바로는 뭔가 돌아가고 있어서 그런지 bad request오류가 지속적으로 발생한다
브라우저 캐시 제거하고 10분쯤 있다가 접속하니 잘 된다
무엇 때문에 해결된걸까
– 브라우저 캐시제거
– 10분쯤 있다가 접속

설정

라우터 스펙이 좀 좋다보니 할 수 있는게 많아서 할 게 많다

  • 라우터 비밀번호 설정
  • LAN 설정
  • USB 연결
  • Http Proxy
  • 내부 DNS
  • DDNS 연결
  • DHCP
  • VPN
  • Radius
  • Kerberos
  • 무선랜

라우터 비밀번호 설정

root / password

웹 인터페이스에서 비밀번호를 적당히 설정 해 준다.
비밀번호 설정을 안 해 주면 위에 경고가 계속 뜬다.

LAN 설정

Network – Interfaces – LAN – Edit

IPv4 address : 192.168.1.1이 기본인데 필요한 경우 192.168.0.1이라던가 바꾸고 싶은대로 변경.
Use custom DNS servers : kt는 168.126.63.1~2, 구글은 8.8.8.8, 4.4.4.4
로컬DNS가 있다면 주소를 잡아준다
OpenWRT에서 설정가능

USB 연결

내부 저장용량이 적어서 http캐시나 다른 일들을 시키려면 마운트를 해 줘야한다
https://openwrt.org/docs/guide-user/storage/usb-drives

Http Proxy

Software squid
usb에서 잡아준 mount 디렉토리로

내부 DNS

d

DDNS 연결

상용제품은 자기네가 지원 해 주는게 있는데 오픈소스다 보니 별도로 설정 해 줘야한다
돈안내고 쓰는 서비스 중에서 해킹위협이 없는 쪽으로

DHCP

d

VPN

OpenVPN, L2TP
https://openwrt.org/docs/guide-user/services/vpn/libreswan/openswanxl2tpvpn
d

Radius

dd

Kerberos

dd

무선랜

따로 잡아줘야 함

Python Flask 관련기술

파이썬 전반적인 부분과는 별개로 Flask 사용할 때 필요한 부분들

파이썬으로 복잡한 API 는 만들지 말자. 금지기술

역겨운 부분

app.py에는 db(Flask-Sqlalchemy), flask_app(Flask), jwt(Flask-JWT)
server.py에서 app.py를 본다. server.py는 models.module을 본다. server.py에는 jwt custom이 들어간다.
routes.module에서 app.py를 본다
models.module에서 app.py를 본다

jwt custom decorator는 어디다 넣어야되나
파이썬은 규모있는 API를 만든건 처음이긴한데
파이썬은 그냥 한개파일에 쑤셔넣을 정도 사이즈로만 사용해야 하는거 아닐까

로그인

  • Flask-JWT
    업데이트 안됨. extended와 pyjwt 의존성 버전충돌
    개인적으로는 아래것들도 안쓰고 코드를 퍼다가 프로젝트에 넣고 사용함
  • Flask-JWT-Extended
  • Flask-JWT-Simple
  • flask-bcrypt
  • Flask-Login
  • Flask-User
  • Flask-Security

API

  • Flask-CORS
  • Flask-Restful
  • Flask-Restplus
  • Flask-RESTX
    위에 두는 폐기.. 해야하겠지만 의존성 문제가 있으려나

Validation

  • cerberus
  • Flask-Validator

Doc

Test

  • unittest
  • pytest

StarterKit

  • https://github.com/lingthio/Flask-User-starter-app.git

Independent Package manager – for all Linux distributions

기술적인 특성을 다 파악하지는 못했다
돌아가는걸 봤을 때 도커처럼 컨테이너 기술을 사용한 것으로 추정

Flatpak(star 2.5k)

개인적으로 가장 좋은데
자동설치는 잘 지원이 되지 않는다

https://www.flatpak.org

자동설치는 잘 안되는데 수동설치 후에 desktop 파일을 수동으로 만들어 주면 된다.

Snapd(star 1.4k)

https://github.com/snapcore/snapd

우분투에서 패키지 관리자를 사용하면 이걸로 설치 해 버린다
vscode의 경우엔 컨테이너 권한 문제 때문에 파일조회시 문제가 발생하거나
한글입력이 잘 안되는 문제가 발생한다

설명생략

Appimage(star 6.1k)

https://appimage.org

https://github.com/AppImage/AppImageKit

https://github.com/AppImageCrafters/appimage-manager

맥과 비슷한 형태로 만들어놓은 툴
사용률이 가장 낮은것으로 알고 있는데 star는 1위??

Ref

  • https://linuxhint.com/snap_vs_flatpak_vs_appimage/
  • https://fossbytes.com/what-is-flatpak-how-to-install-flatpak-apps-ubuntu-linux/
  • https://ostechnix.com/linux-package-managers-compared-appimage-vs-snap-vs-flatpak/

Deno 서버기술

Deno

node의 창시자가 node가 쓰레기(좋게말하면 장난감)이라는 것을 알리기 위해 native TypeScript로 돌아가는 언어를 만들었다.

  • https://github.com/denoland/deno

웹프레임웤

  • https://github.com/oakserver/oak
  • https://github.com/keroxp/servest
  • https://github.com/drashland/deno-drash
  • https://github.com/zhmushan/abc
  • https://github.com/sholladay/pogo

참고

  • https://dev.to/craigmorten/what-is-the-best-deno-web-framework-2k69