샤오미 공유기 3세대(Mi Router R3G)에 OpenWrt 올리기

이미지
기존에 샤오미 공유기 3세대에 Padavan 펌웨어를 올려서 Shadowsocks 및 V2ray 연결 전용 공유기로 잘 사용하고 있었습니다. 공유기에 padavan 펌웨어 올리는 법은 기존 포스팅을 참고하시기 바랍니다. 샤오미 공유기 3세대(Mi Router R3G)에 커스텀 펌웨어(PADAVAN) 올리기 최근들어 중국 양회(两会) 개최시기가 되니 또 VPN 차단이 심해진 듯하여, Shadowsocks 포트가 자주 막히고, V2ray는 연결이 잘 안되는 증상이 잦아져서 고민하다가, 최근 잘 사용 중인 Wireguard를 공유기에 사용하기 위해서 큰맘 먹고 공유기에 OpenWrt를 올리기로 했습니다. 혹시라도 모를 펌웨어 교체로 공유기가 벽돌이 되어 버리면 새로 살 때까지 불편할 것 같아서 최대한 자료를 이것저것 조사한 후 아래와 같이 진행했습니다. 사전 준비 자료 기존에 이미 공유기 펌웨어를 변경했었기 때문에 개발자 펌웨어로 변경하고, SSH를 활성화하고, Breed를 올리는 단계 까지는 되어 있으니, 다음 단계로 최신 OpenWrt 버전을 올리는 것으로만 생각하고 자료를 검색해 보았습니다. 자료를 찾다 보니, SSH 활성화 까지는 OpenWrt 사이트 에서도 동일한 과정으로 설명을 하고 있는데, 계획 했던 것 처럼 Breed에서는 OpenWrt 펌웨어를 직접 올릴 수 없다고 합니다. Breed에서는 Padavan, Pandorabox처럼 하나의 파일로 구성된 펌웨어는 올릴 수 있지만 OpenWrt처럼 2개의 파일로 이루어진 펌웨어는 올릴 수 없다고 하네요. OpenWrt 사이트에 올라온 방식은 kernel1, rootfs0 영역에 지정된 OpenWrt 파일을 기록하는데, Breed 시스템 저작자인 hackpascal이 관련 포럼에 적은 내용으로는 Breed가 부팅하는 과정에서, kernel0가 존재하면 kernel0를 부팅 ke

스크립트를 이용한 Wireguard VPN 간단한 설치법

이미지
최근 Wireguard VPN이 리눅스 5.6 커널 릴리즈에 정식으로 포함되어 있다는 소식을 접하고 중국에서 여러가지 VPN을 써보는 입장에서 관심이 생겨 좀 알아봤습니다. Wireguard 공식 홈페이지 https://www.wireguard.com 구글에서 검색하면 나오는 여러 내용들을 추려보면 대략 아래와 같습니다. 소스 코드가 4000줄로 간결하다. 그에 따라 코드 자체가 단순하기 때문에 버그 발생가능성이 낮고 그에 따른 보안 위협이 줄어든다. (OpenVPN은 600,000줄, L2TP는 400,000줄로 구현) 연결 속도가 빠르다. 설정이 간단하다. 다양한 플랫폼에서 사용 가능하다. 일단 테스트해본 바로는 아직까지 중국에서 만리방화벽이 Wireguard 관련해서 강력한 감시를 하지는 않는 것 같습니다. 직접 사용중인 VPS에 설치해서 연결했을 때에도 연결 자체는 문제가 없었습니다. (서버가 해외에 있다보니 회선 자체 문제로 연결이 느린 경우는 있어도 연결이 차단 되지는 않았습니다.) 유료로 사용 중인 NordVPN의 경우도 최근에 NordLynx라고 Wireguard 프로토콜을 사용하여 연결하는 방식을 지원하기 시작했습니다. 기존에 NordVPN에서 난독화 서버(Obfuscated servers) 방식으로 연결하면 한참을 기다려도 연결이 안되는 경우가 많았는데, NordLinx 연결방식을 선택하고 나서는 연결도 빨리 되고, 연결 후 네트워크 속도도 꽤 빠르게 유지되는 것을 확인했습니다. NordVPN 유료 결제로 사용하면서도 연결이 안되서 Shadowsocks나 v2ray등 다양한 VPN 대체 기술들을 사용 중이었는데, 어쨌든 선택지가 늘어나서 저로서는 좋은 상황이 되었습니다. Wireguard 설치

Cloudflare DNS 서비스를 통해 Let's Encrypt 인증서 발급 및 갱신 자동화하고 v2-ui에 http+tls 위장 적용하기

이미지
한동안 한국 정부가 DNS Spoofing 및 SNI 필드 감청으로 불법 사이트 접속을 막으면서 여러가지 논란이 되었는데, 중국 정부는 더하면 더했지 덜하지는 않습니다. 중국 만리방화벽이 어떤 식으로 작동하는지는 관계자가 아니면 아무도 모르겠지만, 기본적으로 중국내에서는 모든 네트워크 트래픽을 감시한다고 보는게 맞을 겁니다. 중국 정부가 만리방화벽을 통해 접근을 막고 있는 사이트에 접속하기 위해서 사용하는 여러가지 방법들 중 네트워크 트래픽을 보안이 적용된 웹사이트 (HTTPS = HTTP + TLS)에 접속하는 트래픽으로 위장하여 차단을 막는 방법이 최근에 많이 사용됩니다. 10여년 전에 정보처리기사 자격증 딸 때 이후로 네트워크쪽으로 전혀 공부해 본 적이 없어서 자세히 설명할 수는 없지만, 간단히 개념만 설명해 보겠습니다. http는 HyperText Transfer Protocol의 약자로 웹상의 데이터를 주고 받기 위한 전송 규약으로 이해하면 됩니다. tls는 Transport Layer Security의 약자로 네트워크 전송 데이터를 암호화 하여 데이터를 중간에 가로채더라도 내용을 열어볼 수 없게 하는 목적의 기술입니다. 위 두가지를 합해서 웹 상에서 중요한 데이터를 주고 받을 때 사용하는 프로토콜을 https (HTTP over TLS)라고 하며 전자상거래 등의 보안이 중요한 사이트에 연결 시 사용합니다. 즉, 일반적인 http를 사용하는 웹사이트 접속은 중간에 네트워크 데이터를 가로채서 내용을 확인할 수 있지만, https를 통한 웹사이트 접속은 중간에 네트워크 데이터를 가로채더라도 인증서를 통한 개인키가 없으면 내용을 확인할 수 없습니다. v2ray에서 https를 통한 위장은 다음과 같습니다. VPS에 설정한 v2ray 프록시 서버의 연결 포트를 https가 기본적으로 사용하는 443 포트로 설정하고, v2ray 클라이언트가

VPS에 v2-ui 사용하여 V2Ray 및 Shadowsocks 프록시 설치 및 관리하기

이미지
중국에 거주하면 막혀 있는 사이트에 접속하기 위해서 다양한 VPN이나 Proxy등을 사용하게 됩니다. 전부터 V2Ray 및 Shadowsocks 등을 설치하기 위해서 다양한 오픈소스 스크립트 등을 사용했었는데, 그 중에 가장 사용이 간단하고 웹 UI를 통해서 관리가 용이한 v2-ui를 설치 및 설정하는 방법을 설명하겠습니다. v2-ui Github 페이지 사실 위 글에도 설치 및 사용하는 방법 등이 중문 및 영문으로 소개가 되어 있는데, 여기서 다시 한번 풀어서 단계별로 설명해 드립니다. 우선 본인이 사용하는 VPS의 SSH에 로그인 하시고, sudo su 명령어로 root 권한을 획득한 후 아래 명령어를 입력합니다. bash <(curl -Ls https://blog.sprov.xyz/v2-ui.sh) 별다른 추가 입력이 없어도 스크립트가 알아서 V2Ray 설치 및 기타 필요한 설정을 마치고 아래와 같은 결과를 표시합니다. 초기 설치를 마치면 위 표시 내용과 같이 사용 중인 VPS 주소의 65432번 포트로 관리 웹페이지 접속이 가능하도록 설정되고, 기본 사용자 아이디 및 비번은 'admin'으로 설정됩니다. SSH 명령을 통해서 관리하는 경우 아래와 같이 사용합니다. v2-ui : 관리 메뉴 실행 v2-ui start : v2-ui 서비스 실행 v2-ui stop : v2-ui 서비스 중지 v2-ui restart : v2-ui 서비스가 실행중인 경우 중지했다가 다시 실행 v2-ui status :  v2-ui 서비스 실행상태 표시 v2-ui enable : VPS 재부팅 후 v2-ui가 자동으로 실행되도록 설정 v2-ui disable : VPS 재부팅 후 v2-ui가 자동 실행되지 않도록 설정 v2-ui log : v2-ui 로그 보기. 서비스에 문제가 있는 경우 WARNING 레벨 로그를 확인할 수 있습니다. v2-ui update : v2-ui 버전 확인 및 업데이트 v2-ui install : v2-ui 설치 v2-ui unin

샤오미 공유기 3세대(Mi Router R3G)에 커스텀 펌웨어(PADAVAN) 올리기

이미지
기존에 집에서 메인 공유기는 한국에서 사온 ipTIME A2004NS를 사용하고, 집 안에서 Youtube등 중국에서 막힌 해외 사이트를 사용하기 위해서 샤오미 공유기 3G(스펙이 좋아서 가성비가 갑입니다.)를 구매해서 MT工具箱 2.0을 설치 후 Shadowsocks를 설정해 사용하고 있었습니다. 그런데 2019년 국경절을 앞두고 만리방화벽이 제가 사용 중인 Shadowsocks 서버들의 IP를 차단하더니, 어느 날인가는 아예 샤오미 공유기 상의 MT工具箱이 아예 제거된 상황이 발생했습니다. '설마..'라고 생각하고, 다시 설치해서 사용 중 며칠만에 다시 MT工具箱이 제거되어서 Shadowsocks 설정이 불가능한 상황이 발생했습니다. 관리 편리성을 위해서 외부에서 공유기 설정 페이지에 연결할 수 있도록 포트번호 변경 후 web 관리자 페이지를 열어 놓기는 했었는데, 관리자 암호도 걸려있는데 공유기 설정이 변경된 게 뭔가 찜찜해서 아예 외부 접근은 막아 버리고 다시 설치하려고 했더니, 설치 스크립트를 공유하던 사이트가 문을 아예 닫아버렸습니다. 설치 스크립트를 따로 저장 안해놓고 있었는데.. 다시 공유기 단에서 Shadowsocks를 연결할 수 있는 방법을 알아보다가 아예 펌웨어를 교체하는 방법을 사용하기로 했습니다. 샤오미 제품은 한번도 A/S를 받아본 적도 없고, 혹시나 펌웨어를 올리는 과정에서 문제가 생기더라도 그냥 다시 하나 살 생각으로 작업했습니다. 설치할 펌웨어는 padavan 펌웨어로 Asus의 RT-N56U 펌웨어를 개조한 펌웨어라고 합니다. 검색해보면 펌웨어를 각 공유기 모델별로 소스에서 빌드해서 올리는 방법도 있던데, 그렇게 까지 하기는 번거로워서 이미 제 공유기 모델에 맞춰서 빌드되어 배포되는 펌웨어를 받아서 설치했습니다. padavan 펌웨어를 올리는 순서는 아래와 같습니다. SSH 사용이 가능하도록 공유기에 샤오미 개발자 펌웨어 올리기 SSH 기능 활성화하기 SSH를 이용해 BREED 부트

Oracle Cloud에 IPSec IKEV2 VPN (strongSwan) 설치 및 설정하기

이미지
지난 Oracle Cloud 가입 및 인스턴스 생성 글에 따라 VM 인스턴스로 전달되는 포트는 모드 열려 있다고 가정하고 설치하겠습니다. 기본적인 목표는 중국에서 사용하기 위한 VPN을 클라우드 서버에 설치하는 것이므로 가능하면 따라하기 쉽도록 내용을 적어보겠습니다. (네트워크 관련해서 제가 지식이 별로 없어서 틀린 부분이 있을 수도 있으니, 그런 부분은 피드백 부탁드립니다.) strongSwan 설치 우선 이전 포스팅에서 인스턴스에 설정한 SSH 키 및 IP 주소를 이용하여 SSH 클라이언트로 서버에 로그인 합니다. (Ubuntu를 OS로 설정하신 경우는 사용자 명에 "ubuntu"를 적으셔야 하고, CentOS를 설정하신 경우는 "opc"를 적으시면 됩니다.) 저는 ubuntu로 설치하였으므로 아래와 같은 프롬프트가 표시됩니다. sudo su 명령어로 관리자 권한을 획득합니다. (프롬프트 표시가 $에서 #으로 바뀝니다.) TUN(네트워크 터널) 과 PPP(Point to Point Protocol)가 켜져있는지 확인하기 위해 아래 명령어로 확인합니다. cat /dev/net/tun cat /dev/ppp 아래와 같은 메시지가 떠야하며, 만약 위 메시지가 실행 중이면 VPS업체에 조정을 해달라고 요청해야 합니다. Github에 올라와 있는 한번에 설치 및 인증서 생성까지 마칠 수 있는 스크립트로 설치를 할 예정이며, 해당 스크립트는 ubuntu14.04 이상, Debian 7이상, CentOS 7 이상 버전에서 사용 가능하다고 합니다. 스크립트 실행 과정에서 VPS의 가상화 종류를 묻는 부분이 있어 아래 명령어로 시스템의 가상화 종류를 확인해 둡니다. hostnamectl status 현재 사용중인 오라클 인스턴스의 경우 아래와 같이 표시됩니다. Virtualization 항목을 기억해 두시기 바랍니다. 아래 명령어로 스크립트를 실행합니다. (아래