VPN을 사용하여 집에 액세스하는 이유
홈 네트워크에 원격으로 액세스하려는 이유는 여러 가지가 있으며 가장 좋은 방법은 VPN 서버를 사용하는 것입니다. 일부 라우터는 실제로 라우터 내에서 직접 VPN 서버를 설정할 수 있지만 대부분의 경우 직접 설정해야합니다.
Raspberry Pi는이를 수행하는 좋은 방법입니다. 실행하는 데 많은 에너지가 필요하지 않으며 VPN 서버를 실행하기에 충분한 전력이 있습니다. 라우터 옆에 하나를 설정하고 기본적으로 잊어 버릴 수 있습니다.
홈 네트워크에 원격으로 액세스 할 수 있으면 어디에서나 파일에 액세스 할 수 있습니다. 가정용 컴퓨터를 원격으로 실행할 수 있습니다. 이동 중에도 집의 VPN 연결을 사용할 수 있습니다. 이와 같은 설정을 통해 휴대 전화, 태블릿 또는 노트북이 어디서나 집에있는 것처럼 작동 할 수 있습니다.
파이 설정
VPN 설정을 시작하기 전에 Raspberry Pi를 설정해야합니다. 케이스와 적당한 크기의 메모리 카드로 Pi를 설정하는 것이 가장 좋습니다. 16GB면 충분합니다. 가능하면 이더넷 케이블을 사용하여 Pi를 라우터에 연결하십시오. 네트워크 지연을 최소화합니다.
Raspbian 설치
Pi에서 사용하기에 가장 좋은 운영 체제는 Raspbian입니다. Raspberry Pi 재단이 내놓은 기본 선택이며 가장 안전하고 안정적인 Linux 버전 중 하나 인 Debian을 기반으로합니다.
로 이동 Rasbian 다운로드 페이지 , 최신 버전을 가져옵니다. 실제로 그래픽 데스크톱이 필요하지 않기 때문에 여기에서 Lite 버전을 사용할 수 있습니다.
다운로드하는 동안 최신 버전을 다운로드하세요. 동판 화공 운영 체제. 다운로드가 완료되면 Raspbian 이미지를 추출합니다. 그런 다음 Etcher를 엽니 다. 추출한 Raspbian 이미지를 선택합니다. SD 카드를 선택하십시오 (먼저 삽입하십시오). 마지막으로 이미지를 카드에 씁니다.
Google 사진에 얼마나 많은 사진이
완료되면 SD 카드를 컴퓨터에 그대로 둡니다. 파일 관리자를 열고 카드를 찾습니다. 두 개의 다른 파티션이 표시되어야합니다. 부팅 파티션을 찾으십시오. kernel.img 파일이있는 파일입니다. 부팅 파티션에 빈 텍스트 파일을 만들고 파일 확장명없이 ssh라고합니다.
마침내 Pi를 연결할 수 있습니다. 마지막으로 연결했는지 확인하십시오. 화면, 키보드 또는 마우스가 필요하지 않습니다. 네트워크를 통해 Raspberry Pi에 원격으로 액세스 할 것입니다.
Pi가 자체적으로 설정되도록 몇 분 정도 기다리십시오. 그런 다음 웹 브라우저를 열고 라우터의 관리 화면으로 이동합니다. Raspberry Pi를 찾아 해당 IP 주소를 기록해 둡니다.
Windows, Linux 또는 Mac에 관계없이 OpenSSH를 엽니 다. SSH를 사용하여 Raspberry Pi에 연결합니다.
$ ssh [email protected]
분명히 Pi의 실제 IP 주소를 사용하십시오. 사용자 이름은항상 파이, 암호는산딸기.
OpenVPN 설정
OpenVPN은 서버로 설정하기가 간단하지 않습니다. 좋은 소식은 한 번만하면된다는 것입니다. 따라서 조사하기 전에 Raspbian이 완전히 최신 상태인지 확인하십시오.
$ sudo apt update $ sudo apt upgrade
업데이트가 완료되면 OpenVPN과 필요한 인증서 유틸리티를 설치할 수 있습니다.
$ sudo apt install openvpn easy-rsa
인증 기관
서버에 연결을 시도 할 때 장치를 인증하려면 인증 기관을 설정하여 신호 키를 만들어야합니다. 이러한 키를 사용하면 장치 만 홈 네트워크에 연결할 수 있습니다.
먼저 인증서 용 디렉터리를 만듭니다. 해당 디렉토리로 이동하십시오.
$ sudo make-cadir /etc/openvpn/certs $ cd /etc/openvpn/certs
OpenSSL 구성 파일을 찾아보십시오. 그런 다음 최신 버전을openssl.cnf.
$ ls | grep -i openssl $ sudo ln -s openssl-1.0.0.cnf openssl.cnf
동일한 certs 폴더에는 vars라는 파일이 있습니다. 텍스트 편집기로 해당 파일을 엽니 다. Nano가 기본값이지만 더 편하다면 Vim을 설치해도됩니다.
찾기KEY_SIZE변수 먼저. 설정되어 있습니다.2048기본적으로. 다음으로 변경4096.
export KEY_SIZE=4096
처리해야하는 기본 블록은 인증 기관에 대한 정보를 설정합니다. 이 정보가 정확하면 도움이되지만 기억할 수있는 것은 괜찮습니다.
export KEY_COUNTRY='US' export KEY_PROVINCE='CA' export KEY_CITY='SanFrancisco' export KEY_ORG='Fort-Funston' export KEY_EMAIL=' [email protected] ' export KEY_OU='MyOrganizationalUnit' export KEY_NAME='HomeVPN'
모든 것이 있으면 저장하고 종료하십시오.
이전에 설치 한 Easy-RSA 패키지에는 필요한 모든 것을 설정하는 데 도움이되는 많은 스크립트가 포함되어 있습니다. 실행하기 만하면됩니다. vars 파일을 소스로 추가하여 시작하십시오. 방금 설정 한 모든 변수가로드됩니다.
$ sudo source ./vars
다음으로 키를 정리합니다. 계정이 없으므로 키가 삭제된다는 메시지에 대해 걱정하지 마세요.
$ sudo ./clean-install
마지막으로 인증 기관을 구축하십시오. 이미 기본값을 설정 했으므로 표시되는 기본값을 그대로 사용할 수 있습니다. 강력한 암호를 설정하고 암호 다음에 나오는 마지막 두 질문에 예라고 답하십시오.
$ sudo ./build-ca
키 만들기
키에 서명 할 수 있도록 인증 기관을 설정하는 데 모든 어려움을 겪었습니다. 이제 만들 시간입니다. 서버에 대한 키를 구축하여 시작하십시오.
$ sudo ./build-key-server server
다음으로 Diffie-Hellman PEM을 빌드합니다. OpenVPN이 서버에 대한 클라이언트 연결을 보호하기 위해 사용하는 것입니다.
$ sudo openssl dhparam 4096 > /etc/openvpn/dh4096.pem
지금부터 필요한 마지막 키를 HMAC 키라고합니다. OpenVPN은이 키를 사용하여 클라이언트와 서버간에 교환되는 각 개별 정보 패킷에 서명합니다. 연결에 대한 특정 유형의 공격을 방지하는 데 도움이됩니다.
$ sudo openvpn --genkey --secret /etc/openvpn/certs/keys/ta.key
서버 구성
당신은 열쇠를 가지고 있습니다. OpenVPN 설정의 다음 부분은 서버 구성 자체입니다. 고맙게도 여기서해야 할 일이 그다지 많지 않습니다. Debian은 시작하는 데 사용할 수있는 기본 구성을 제공합니다. 따라서 해당 구성 파일을 가져 오는 것으로 시작하십시오.
$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
다시 텍스트 편집기로 사용하여/etc/openvpn/server.conf. 가장 먼저 찾아야 할 것은그,인증서, 및키파일. 생성 한 파일의 실제 위치와 일치하도록 설정해야합니다./ etc / openvpn / certs / keys.
ca /etc/openvpn/certs/keys/ca.crt cert /etc/openvpn/certs/keys/server.crt key /etc/openvpn/certs/keys/server.key # This file should be kept secret
찾기즉설정하고 Diffie-Hellman과 일치하도록 변경하십시오..pem당신이 만든.
dh dh4096.pem
HMAC 키의 경로도 설정하십시오.
tls-auth /etc/openvpn/certs/keys/ta.key 0
찾기암호아래 예와 일치하는지 확인하세요.
cipher AES-256-CBC
다음 몇 가지 옵션이 있지만;. 활성화하려면 각 옵션 앞의 세미콜론을 제거하십시오.
push 'redirect-gateway def1 bypass-dhcp' push 'dhcp-option DNS 208.67.222.222' push 'dhcp-option DNS 208.67.220.220'
찾아보십시오사용자과그룹옵션. 주석 처리를 제거하고사용자openvpn에.
user openvpn group nogroup
마지막으로이 마지막 두 줄은 기본 구성이 아닙니다. 파일 끝에 추가해야합니다.
사용자 인증을 위해 더 강력한 암호화를 지정하려면 인증 다이제스트를 설정하십시오.
# Authentication Digest auth SHA512
그런 다음 OpenVPN이 사용할 수있는 cipers를 더 강력한 것으로 제한하십시오. 이는 취약한 암호에 대한 가능한 공격을 제한하는 데 도움이됩니다.
# Limit Ciphers tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
구성은 여기까지입니다. 파일을 저장하고 종료하십시오.
서버 시작
서버를 시작하기 전에openvpn지정한 사용자.
$ sudo adduser --system --shell /usr/sbin/nologin --no-create-home openvpn
OpenVPN을 실행하기위한 특별한 사용자이며 다른 작업은 수행하지 않습니다.
이제 서버를 시작하십시오.
$ sudo systemctl start openvpn $ sudo systemctl start [email protected]
둘 다 실행 중인지 확인
$ sudo systemctl status openvpn*.service
모든 것이 좋아 보이면 시작할 때 활성화하십시오.
$ sudo systemctl enable openvpn $ sudo systemctl enable [email protected]
클라이언트 설정
이제 서버가 설정되어 실행 중입니다. 다음으로 클라이언트 구성을 설정해야합니다. 이것은 장치를 서버에 연결하는 데 사용할 구성입니다. 돌아 가기어떤폴더를 열고 클라이언트 키 빌드를 준비합니다. 각 클라이언트에 대해 별도의 키를 만들거나 모든 클라이언트에 대해 하나의 키를 만들도록 선택할 수 있습니다. 가정에서 사용하려면 하나의 키가 좋습니다.
$ cd /etc/openvpn/certs $ sudo source ./vars $ sudo ./build-key client
프로세스는 서버 1과 거의 동일하므로 동일한 절차를 따르십시오.
클라이언트 구성
클라이언트 구성은 서버 구성과 매우 유사합니다. 다시 말하지만, 구성을 기반으로하는 미리 만들어진 템플릿이 있습니다. 서버와 일치하도록 수정하기 만하면됩니다.
로 변경고객예배 규칙서. 그런 다음 샘플 구성의 포장을 풉니 다.
$ cd /etc/openvpn/client $ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/client.ovpn
열기client.ovpn텍스트 편집기로 파일. 그런 다음먼선택권. 아직 VPN을 사용하지 않는다고 가정하면 Google에서 내 IP가 무엇인지 검색합니다. 표시되는 주소를 가져 와서먼그것에 대한 IP 주소. 포트 번호는 그대로 둡니다.
remote 107.150.28.83 1194 #That IP ironically is a VPN
서버에서했던 것처럼 생성 한 인증서를 반영하도록 인증서를 변경합니다.
ca ca.crt cert client.crt key client.key
사용자 옵션을 찾아 주석을 제거하십시오. 클라이언트를 다음과 같이 실행하는 것이 좋습니다.아무도.
user nobody group nogroup
주석 해제tls-authHMAC 옵션.
tls-auth ta.key 1
다음으로암호옵션을 선택하고 서버와 일치하는지 확인하십시오.
cipher AES-256-CBC
그런 다음 파일 하단에 인증 다이제스트 및 암호 제한을 추가하기 만하면됩니다.
# Authentication Digest auth SHA512 # Cipher Restrictions tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
모든 것이 올바르게 보이면 파일을 저장하고 종료하십시오. 사용하다타르구성 및 인증서를 압축하여 클라이언트로 보낼 수 있습니다.
$ sudo tar cJf /etc/openvpn/clients/client.tar.xz -C /etc/openvpn/certs/keys ca.crt client.crt client.key ta.key -C /etc/openvpn/clients/client.ovpn
원하는대로 패키지를 클라이언트로 전송합니다. SFTP, FTP 및 USB 드라이브는 모두 훌륭한 옵션입니다.
포트 포워딩
이 중 하나가 작동하려면 들어오는 VPN 트래픽을 Pi로 전달하도록 라우터를 구성해야합니다. 이미 VPN을 사용중인 경우 동일한 포트에서 연결하고 있지 않은지 확인해야합니다. 그렇다면 클라이언트 및 서버 구성에서 포트를 변경하십시오.
브라우저에 IP 주소를 입력하여 라우터의 웹 인터페이스에 연결합니다.
라우터마다 다릅니다. 그럼에도 불구하고 그들은 모두이 기능의 어떤 형태를 가지고 있어야합니다. 라우터에서 찾으십시오.
설정은 기본적으로 모든 라우터에서 동일합니다. 시작 및 끝 포트를 입력하십시오. 이들은 서로 동일해야하며 구성에서 설정 한 것과 동일해야합니다. 그런 다음 IP 주소를 Raspberry Pi의 IP로 설정합니다. 변경 사항을 저장하십시오.
클라이언트에 연결
모든 클라이언트가 다르므로 범용 솔루션이 없습니다. Windows를 사용하는 경우 Windows OpenVPN 클라이언트 .
Android에서는 tarball을 열고 키를 휴대 전화로 전송할 수 있습니다. 그런 다음 OpenVPN 앱을 설치하십시오. 앱을 열고 구성 파일의 정보를 연결하십시오. 그런 다음 키를 선택하십시오.
Linux에서는 서버에서했던 것처럼 OpenVPN을 설치해야합니다.
$ sudo apt install openvpn
그런 다음/ etc / openvpn, 보낸 tarball의 압축을 풉니 다.
$ cd /etc/openvpn $ sudo tar xJf /path/to/client.tar.xz
클라이언트 파일의 이름을 바꿉니다.
$ sudo mv client.ovpn client.conf
아직 클라이언트를 시작하지 마십시오. 실패합니다. 먼저 라우터에서 포트 전달을 활성화해야합니다.
마무리 생각
이제 작동하는 설정이 있어야합니다. 클라이언트는 라우터를 통해 Pi에 직접 연결됩니다. 여기에서 모든 장치가 VPN에 연결되어있는 한 가상 네트워크를 통해 공유하고 연결할 수 있습니다. 제한이 없으므로 언제든지 모든 컴퓨터를 Pi VPN에 연결할 수 있습니다.