Anonim

VPN을 사용하여 집에 액세스해야하는 이유

빠른 링크

  • VPN을 사용하여 집에 액세스해야하는 이유
  • 파이 설정
    • Raspbian 설치
  • OpenVPN 설정
    • 인증 기관
    • 열쇠 만들기
    • 서버 구성
    • 서버 시작
  • 클라이언트 설정
    • 클라이언트 구성
  • 포트 포워딩
  • 클라이언트에 연결
  • 결산 생각

홈 네트워크에 원격으로 액세스하려는 데는 여러 가지 이유가 있으며 VPN 서버를 사용하는 것이 가장 좋습니다. 실제로 일부 라우터를 사용하면 라우터 내에서 VPN 서버를 직접 설정할 수 있지만 대부분의 경우 직접 설정해야합니다.

라즈베리 파이는 이것을 달성하는 좋은 방법입니다. 그들은 많은 에너지를 필요로하지 않으며 VPN 서버를 운영하기에 충분한 전력을 가지고 있습니다. 라우터 옆에 하나를 설정하고 기본적으로 잊어 버릴 수 있습니다.

홈 네트워크에 원격으로 액세스하면 어디서나 파일에 액세스 할 수 있습니다. 가정용 컴퓨터를 원격으로 실행할 수 있습니다. 이동 중에도 집의 VPN 연결을 사용할 수 있습니다. 이와 같은 설정을 사용하면 휴대 전화, 태블릿 또는 랩톱이 마치 집 어디에서나 작동하는 것처럼 작동 할 수 있습니다.

파이 설정

VPN 설정을 시작하기 전에 Raspberry Pi를 설정해야합니다. 케이스와 알맞은 크기의 메모리 카드로 Pi를 설정하는 것이 가장 좋습니다. 16GB 이상이면 충분합니다. 가능하면 이더넷 케이블을 사용하여 Pi를 라우터에 연결하십시오. 네트워크 지연을 최소화합니다.

Raspbian 설치

Pi에서 사용하기에 가장 적합한 운영 체제는 Raspbian입니다. Raspberry Pi 재단에서 기본적으로 선택하는 것으로, 가장 안전하고 안정적인 Linux 버전 중 하나 인 데비안을 기반으로합니다.

Rasbian 다운로드 페이지로 이동하여 최신 버전을 확인하십시오. 실제로 그래픽 데스크탑이 필요하지 않기 때문에 여기서 "Lite"버전을 사용할 수 있습니다.

다운로드하는 동안 운영 체제에 맞는 최신 버전의 Etcher 를 다운로드하십시오. 다운로드가 완료된 후 Raspbian 이미지를 추출하십시오. 그런 다음 Etcher를 엽니 다. 추출한 Raspbian 이미지를 선택하십시오. SD 카드를 선택하십시오 (먼저 삽입). 마지막으로 이미지를 카드에 씁니다.

완료되면 SD 카드를 컴퓨터에 그대로 두십시오. 파일 관리자를 열고 카드를 찾습니다. 몇 가지 다른 파티션이 표시되어야합니다. “부팅”파티션을 찾으십시오. "kernel.img"파일이있는 파일입니다. “부트”파티션에 빈 텍스트 파일을 만들고 파일 확장자없이“ssh”라고 부릅니다.

마지막으로 Pi를 연결할 수 있습니다. 마지막에 연결했는지 확인하십시오. 화면, 키보드 또는 마우스가 필요하지 않습니다. 네트워크를 통해 원격으로 Raspberry Pi에 액세스 할 수 있습니다.

Pi를 몇 분 동안 설정하십시오. 그런 다음 웹 브라우저를 열고 라우터의 관리 화면으로 이동하십시오. 라즈베리 파이를 찾아 IP 주소를 기록해 둡니다.

Windows, Linux 또는 Mac에 관계없이 OpenSSH를 엽니 다. SSH를 사용하여 Raspberry Pi에 연결하십시오.

$ ssh

물론 Pi의 실제 IP 주소를 사용하십시오. 사용자 이름은 항상 pi이고 암호는 라즈베리입니다.

OpenVPN 설정

OpenVPN은 서버로 설정하기가 간단하지 않습니다. 좋은 소식은 한 번만하면된다는 것입니다. 따라서 파고 들기 전에 Raspbian이 완전히 최신 상태인지 확인하십시오.

$ sudo apt 업데이트 $ sudo apt 업그레이드

업데이트가 완료되면 OpenVPN 및 필요한 인증서 유틸리티를 설치할 수 있습니다.

$ sudo apt 설치 openvpn easy-rsa

인증 기관

장치가 서버에 연결하려고 할 때 장치를 인증하려면 인증 키를 설정하여 sigining 키를 생성해야합니다. 이 키를 사용하면 장치 만 홈 네트워크에 연결할 수 있습니다.

먼저 인증서의 디렉토리를 작성하십시오. 해당 디렉토리로 이동하십시오.

$ 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으로 변경하십시오.

수출 KEY_SIZE = 4096

처리해야 할 기본 블록은 인증 기관에 대한 정보를 설정합니다. 이 정보가 정확하면 도움이되지만 기억할 수있는 것은 괜찮습니다.

수출 KEY_COUNTRY = "미국"수출 KEY_PROVINCE = "CA"수출 KEY_CITY = "SanFrancisco"수출 KEY_ORG = "Fort-Funston"수출 KEY_EMAIL = ""수출 KEY_OU = "MyOrganizationalUnit"수출 KEY_NAME = "HomeVPN"

모든 것이 있으면 저장하고 종료하십시오.

이전에 설치 한 Easy-RSA 패키지에는 필요한 모든 것을 설정하는 데 도움이되는 많은 스크립트가 포함되어 있습니다. 당신은 그들을 실행해야합니다. "vars"파일을 소스로 추가하여 시작하십시오. 방금 설정 한 모든 변수가로드됩니다.

$ sudo 소스 ./vars

다음으로 키를 청소하십시오. 키가 없으므로 키가 삭제된다는 메시지가 표시 될 염려가 없습니다.

$ sudo ./clean-install

마지막으로 인증 기관을 구축하십시오. 이미 기본값을 설정 했으므로 기본값을 그대로 사용할 수 있습니다. 비밀번호 다음에 강력한 비밀번호를 설정하고 마지막 두 질문에“예”로 답하십시오.

$ sudo ./build-ca

열쇠 만들기

키를 서명 할 수 있도록 인증 기관을 설정하는 데 어려움을 겪었습니다. 이제 몇 가지를 만들 차례입니다. 서버 키를 구축하여 시작하십시오.

$ sudo ./build-key-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 설정의 다음 부분은 서버 구성 자체입니다. 고맙게도 여기서해야 할 일이 많지는 않습니다. 데비안은 시작하는 데 사용할 수있는 기본 구성을 제공합니다. 따라서 구성 파일을 가져 오는 것으로 시작하십시오.

$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz> /etc/openvpn/server.conf

텍스트 편집기를 사용하여 /etc/openvpn/server.conf를여십시오. 가장 먼저 찾아야 할 것은 ca, cert 및 키 파일입니다. 생성 한 파일의 실제 위치 (모두 / etc / openvpn / certs / keys)와 일치하도록 설정해야합니다.

ca /etc/openvpn/certs/keys/ca.crt 인증서 /etc/openvpn/certs/keys/server.crt 키 /etc/openvpn/certs/keys/server.key #이 파일은 비밀로 유지해야합니다

dh 설정을 찾아서 작성한 Diffie-Hellman .pem과 일치하도록 변경하십시오.

dh dh4096.pem

HMAC 키의 경로도 설정하십시오.

tls-auth /etc/openvpn/certs/keys/ta.key 0

암호를 찾아 아래 예와 일치하는지 확인하십시오.

암호 AES-256-CBC

다음 몇 가지 옵션이 있지만;으로 주석 처리됩니다. 각 옵션 앞에서 세미콜론을 제거하여 활성화하십시오.

"redirect-gateway def1 bypass-dhcp"푸시 "dhcp-option DNS 208.67.222.222"푸시 "dhcp- 옵션 DNS 208.67.220.220"푸시

사용자 및 그룹 옵션을 찾으십시오. 주석 처리를 제거하고 사용자를 "openvpn"으로 변경하십시오.

사용자 openvpn 그룹 nogroup

마지막으로, 이 마지막 두 줄은 기본 구성이 아닙니다. 파일 끝에 추가해야합니다.

사용자 인증을 위해 더 강력한 암호화를 지정하도록 인증 요약을 설정하십시오.

# 인증 요약 인증 SHA512

그런 다음 OpenVPN이 사용할 수있는 사이퍼를 더 강한 것으로 제한하십시오. 이것은 약한 암호에 대한 가능한 공격을 제한하는 데 도움이됩니다.

# 제한 암호 tls- 암호 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- 샤

구성이 전부입니다. 파일을 저장하고 종료하십시오.

서버 시작

서버를 시작하기 전에 지정한 openvpn 사용자를 만들어야합니다.

$ sudo adduser --system --shell / usr / sbin / nologin --no-create-home openvpn

OpenVPN을 실행하기위한 특별한 사용자이며 다른 작업은 수행하지 않습니다.

이제 서버를 시작하십시오.

$ sudo systemctl start openvpn $ sudo systemctl 시작

둘 다 실행 중인지 확인

$ sudo systemctl 상태 openvpn * .service

모든 것이 좋아 보인다면 시작할 때 활성화하십시오.

$ sudo systemctl 활성화 openvpn $ sudo systemctl 활성화

클라이언트 설정

이제 서버가 설정되어 실행 중입니다. 다음으로 클라이언트 구성을 설정해야합니다. 장치를 서버에 연결하는 데 사용할 구성입니다. certs 폴더로 돌아가서 클라이언트 키 빌드를 준비하십시오. 각 클라이언트에 대해 별도의 키를 만들거나 모든 클라이언트에 대해 하나의 키를 만들도록 선택할 수 있습니다. 가정용으로는 열쇠 하나만 있으면됩니다.

$ cd / etc / openvpn / certs $ sudo source ./vars $ sudo ./build-key client

프로세스는 서버와 거의 동일하므로 동일한 절차를 따르십시오.

클라이언트 구성

클라이언트 구성은 서버 구성과 매우 유사합니다. 다시, 구성을 기반으로하는 사전 작성된 템플리트가 있습니다. 서버와 일치하도록 수정하기 만하면됩니다.

클라이언트 디렉토리로 변경하십시오. 그런 다음 샘플 구성의 압축을 푸십시오.

$ 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 #이 IP는 아이러니하게 VPN입니다

서버에서와 마찬가지로 생성 한 인증서를 반영하도록 인증서를 변경하십시오.

ca ca.crt 인증서 client.crt 키 client.key

사용자 옵션을 찾아서 주석을 해제하십시오. 클라이언트를 아무도 사용하지 않는 것이 좋습니다.

사용자 nobody 그룹 nogroup

HMAC에 대한 tls-auth 옵션의 주석을 해제하십시오.

tls-auth ta.key 1

그런 다음 암호 옵션을 찾아서 서버와 일치하는지 확인하십시오.

암호 AES-256-CBC

그런 다음 파일 맨 아래에 인증 요약 및 암호 제한을 추가하십시오.

# 인증 다이제스트 인증 SHA512 # 암호 제한 tls- 암호 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

모든 것이 올바르게 보이면 파일을 저장하고 종료하십시오. tar를 사용하여 구성 및 인증서를 압축하여 클라이언트로 보낼 수 있습니다.

$ 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에서는 타르볼을 열고 키를 휴대폰으로 전송할 수 있습니다. 그런 다음 OpenVPN 앱을 설치하십시오. 앱을 열고 구성 파일의 정보를 연결하십시오. 그런 다음 키를 선택하십시오.

Linux에서는 서버에서와 마찬가지로 OpenVPN을 설치해야합니다.

$ sudo apt 설치 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에 항상 연결할 수 있습니다.

라즈베리 파이를 VPN으로 전환하여 어디서나 네트워크에 액세스