OpenWrt 공유기에 Wireguard 설정하기

이미지
지난 포스팅에서 샤오미 공유기에 OpenWrt 펌웨어 올리는 법을 설명했으며, 스크립트를 이용해서 VPS에 Wireguard를 설치하는 방법도 알아보았습니다. 스크립트를 이용한 Wireguard 간단한 설치법 샤오미 공유기 3세대(Mi Router R3G)에 OpenWrt 올리기 이번 포스팅에서는 샤오미 공유기에 Wireguard 패키지를 설정하여 VPS에서 운영되고 있는 Wireguard에 연결하는 법을 설명하겠습니다. 제 경우는 앞서 포스팅에서 설명한 방법으로 Wireguard를 설치한 Oracle Cloud에서 wg_mult.sh 명령어로 새로운 디바이스를 mi-wifi라는 이름으로 추가하였으며, 추가한 설정 파일의 내용은 아래와 같습니다. OpenWrt에 Wireguard 패키지 설치 OpenWrt 관리페이지에 로그인한 후 System->Software 메뉴를 선택하고, Update list를 한번 눌러준 후, Filter란에 Wireguard를 입력합니다. 표시된 목록 중에서 Availables 탭에서 luci-proto-wireguard를 선택하여 설치합니다. 필요하면 luci-i18n-wireguard-ko도 설치합니다. 설치가 완료되면 설치된 패키지 목록에서 Wireguard로 검색했을 때 아래와 같이 5가지 패키지가 설치되어 있어야 합니다. (한글화 패키지를 설치하지 않은 경우 4가지) 패키지 설치 후 메뉴에서 System->Reboot 메뉴에서 공유기를 한번 재부팅해 주어야 인터페이스 추가 시 인터페이스 프로토콜 종류로 Wireguard VPN을 선택할 수 있습니다. Wireguard 인터페이스 추가 Network->Interface 메뉴를 선택한 후 하단의 Add Interface 버튼을 클릭하여 새로운 인터페이스를 추가합니다. 인터페이스 이름은 wg0로 입력합니다. (본인이 구분하기 편한 이름) 추가 버튼을 누르면 아래와 같이 상세 항목을 입력하기 위한 팝업이 표시됩니다. 공유기 부팅 시에도 인터페이스를 계속 사용하기 위해

샤오미 공유기 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