웹사이트 검색

Rocky Linux 8에서 Pritunl VPN 서버를 설정하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 방화벽 구성\n
  3. 2단계 - MongoDB 설치
  4. 3단계 - Pritunl 서버 설치
    1. 파일 열기 제한 늘리기\n

    1. 방화벽에서 포트 활성화\n

    1. 데이터베이스 복구
    2. 자격 증명 재설정
    3. 웹 콘솔 포트 변경

    Pritunl은 소규모 및 대규모 조직을 위한 사용자 관리 및 수평 확장 기능을 갖춘 오픈 소스 VPN 및 IPsec 서버입니다. 사용자는 OpenVPN 및 Wireguard 프로토콜을 사용할 수 있습니다. 사용하기 쉬운 GUI 인터페이스와 함께 제공되며 대부분의 장치 및 플랫폼에서 클라이언트를 지원합니다. 클라이언트와 서버 간의 모든 트래픽은 암호화됩니다. Pritunl은 신속하게 배포할 수 있고 내장된 복제 지원을 통해 Pritunl 클러스터를 쉽게 배포할 수 있는 안정적이고 확장 가능한 데이터베이스인 MongoDB를 기반으로 합니다.

    이 튜토리얼에서는 Rocky Linux 8에 Pritunl VPN 서버를 설치하는 방법에 대해 설명합니다. Linux 클라이언트를 사용하여 VPN에 연결하는 방법도 살펴봅니다.

    전제 조건

    1. A system running Rocky Linux 8 for hosting Pritunl server.

    2. A non-root user with sudo privileges.

    3. A domain name pointed to the server.

    4. A system running Rocky Linux 8 as a client.

    5. Make sure everything is updated.

      $ sudo dnf update
      
    6. Install any prerequisites.

      $ sudo dnf install nano
      

    1단계 - 방화벽 구성

    Rocky Linux는 Firewalld Firewall을 사용합니다. 방화벽 상태를 확인하십시오.

    $ sudo firewall-cmd --state
    running
    

    이것은 성공적으로 실행되고 있음을 나타냅니다.

    방화벽은 다른 영역에서 작동하며 공개 영역은 우리가 사용할 기본 영역입니다. 방화벽에서 활성화된 모든 서비스와 포트를 나열합니다.

    $ sudo firewall-cmd --permanent --list-services
    

    다음 출력이 표시되어야 합니다.

    dhcpv6-client mdns ssh
    

    HTTP 및 HTTPS 포트를 허용합니다.

    $ sudo firewall-cmd --permanent --add-service=http
    $ sudo firewall-cmd --permanent --add-service=https
    

    방화벽의 상태를 다시 확인하십시오.

    $ sudo firewall-cmd --permanent --list-all
    

    비슷한 출력이 표시되어야 합니다.

    public
      target: default
      icmp-block-inversion: no
      interfaces:
      sources:
      services: cockpit dhcpv6-client http https ssh
      ports: 
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
    

    변경 사항을 적용하려면 방화벽을 다시 로드하십시오.

    $ sudo firewall-cmd --reload
    

    2단계 - MongoDB 설치

    Pritunl은 MongoDB 데이터베이스를 기반으로 구축되었으므로 먼저 설치해야 합니다. Rocky Linux는 MongoDB와 함께 제공되지 않으므로 MongoDB의 공식 리포지토리를 사용해야 합니다.

    참고: MongoDB 5.0은 최신 프로세서에서만 작동합니다. 서버가 이전 하드웨어에서 실행 중인 경우 이전 버전의 MongoDB를 선택하거나 최신 서버로 전환해야 합니다.

    편집을 위해 /etc/yum.repos.d/mongodb-org-5.0.repo 파일을 만들고 엽니다.

    $ sudo nano /etc/yum.repos.d/mongodb-org-5.0.repo
    

    다음 코드를 붙여넣습니다.

    [mongodb-org-5.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
    

    완료되면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력하여 파일을 저장합니다.

    몽고DB를 설치합니다.

    $ sudo dnf install mongodb-org
    

    MongoDB 서비스를 활성화하고 시작합니다.

    $ sudo systemctl enable mongod --now
    

    3단계 - Pritunl 서버 설치

    첫 번째 단계는 Pritunl의 공식 저장소를 만드는 것입니다. 편집을 위해 /etc/yum.repos.d/pritunl.repo 파일을 만들고 엽니다.

    $ sudo nano /etc/yum.repos.d/pritunl.repo
    

    다음 코드를 붙여넣습니다.

    [pritunl]
    name=Pritunl Repository
    baseurl=https://repo.pritunl.com/stable/yum/centos/8/
    gpgcheck=1
    enabled=1
    

    완료되면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력하여 파일을 저장합니다.

    Pritunl에 필요한 Epel 저장소를 먼저 설치하십시오.

    $ sudo dnf install epel-release
    

    Pritunl에 필요한 GPG 키를 추가하고 가져옵니다.

    $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
    $ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp
    

    프리툰을 설치합니다.

    $ sudo dnf install pritunl
    

    Pritunl 버전을 확인하십시오.

    $ pritunl version
    pritunl v1.30.2960.4
    

    Pritunl 서비스를 활성화하고 시작합니다.

    $ sudo systemctl enable pritunl --now
    

    열린 파일 제한 늘리기

    다음 명령을 실행하여 서버에서 열린 파일 제한을 늘립니다. 이렇게 하면 부하가 높은 경우 연결 문제를 방지할 수 있습니다. 별도의 서버에 MongoDB를 설치한 경우 해당 서버에서 이러한 명령을 실행해야 합니다.

    $ sudo sh -c 'echo "* hard nofile 64000" >> /etc/security/limits.conf'
    $ sudo sh -c 'echo "* soft nofile 64000" >> /etc/security/limits.conf'
    $ sudo sh -c 'echo "root hard nofile 64000" >> /etc/security/limits.conf'
    $ sudo sh -c 'echo "root soft nofile 64000" >> /etc/security/limits.conf'
    

    4단계 - Pritunl 액세스 및 구성

    브라우저에 http:///를 입력하여 Pritunl을 시작할 수 있습니다. 최신 브라우저는 모든 사이트의 HTTPS 버전에 액세스하려고 시도하므로 브라우저에서 발생하는 개인 정보 보호 오류를 우회해야 합니다.

    URL을 처음 실행하면 다음 화면이 나타납니다.

    MongoDB URI를 자동으로 가져옵니다. 설정 키의 경우 다음 명령을 실행합니다.

    $ sudo pritunl setup-key
    eacbd641982048fd9a60cdf09f7ebaa3
    

    생성된 키를 웹사이트에 입력하고 저장 버튼을 클릭합니다. 데이터베이스를 업그레이드하고 로그인 화면을 엽니다.

    다음 명령을 실행하여 기본 로그인 정보를 생성하십시오.

    $ sudo pritunl default-password
    [undefined][2021-11-08 22:34:55,255][INFO] Getting default administrator password
    Administrator default password:
      username: "pritunl"
      password: "krZQLlH9U7P1"
    

    로그인 정보를 입력하고 로그인하면 다음과 같은 설정 화면이 나타납니다.

    기본 암호를 바꾸려면 강력한 암호를 입력하십시오. Lets Encrypt Domain 입력란에 도메인을 입력합니다. Pritunl은 도메인에 대한 SSL 인증서를 자동으로 생성하고 설정합니다.

    이제 브라우저에 https://pritunl.example.com을 입력하여 도메인 이름을 사용하여 서버를 시작할 수 있습니다.

    5단계 - 조직, 서버 및 사용자 추가

    다음 단계는 VPN에 조직을 추가하는 것입니다. 사용자 탭을 클릭하고 조직 추가 버튼을 클릭합니다.

    계속하려면 추가 버튼을 클릭하십시오.

    다음 단계는 사용자를 추가하는 것입니다. 두 가지 옵션이 있습니다. 사용자를 하나씩 추가하거나 대량으로 추가할 수 있습니다. 지금은 단일 사용자를 추가할 것입니다. 사용자 추가 버튼을 클릭합니다.

    PIN 필드는 선택 사항이며 이중 인증을 사용하려는 경우에 사용됩니다. PIN은 숫자로만 구성됩니다.

    조직 및 사용자가 설정되면 서버 탭으로 이동하여 서버 추가 버튼을 클릭합니다.

    포트: 서버가 사용할 포트를 추가할 수 있습니다. 지정한 포트가 보안 그룹의 모든 인바운드 트래픽에 대해 열려 있는지 확인하십시오.

    DNS: Google DNS 또는 OpenDNS를 추가할 수 있습니다.

    가상 네트워크: 이 필드에 사설 IP를 추가할 수 있지만 다른 리소스가 이를 사용하지 않도록 해야 합니다. 클라이언트에는 이 범위의 IP 주소가 할당됩니다.

    가상 WG 네트워크: WireGuard 클라이언트에 할당될 개인 네트워크용 WireGuard 네트워크 주소입니다. 가상 네트워크와 동일한 CIDR 블록이 있어야 합니다.

    WireGuard 활성화: 선택하면 OpenVPN 대신 WireGuard를 사용합니다. 그러나 우리는 튜토리얼에 OpenVPN을 사용할 것이므로 선택하지 않은 상태로 두십시오.

    WG 포트: 이 포트는 WireGuard 연결에 사용됩니다. WireGuard 옵션을 활성화한 경우에만 사용됩니다.

    Google Authenticator 활성화: 2단계 인증을 사용하려면 이 옵션을 활성화합니다. 이 옵션이 서버에서 활성화되면 해당 서버 아래의 모든 클라이언트는 매번 VPN에 연결하기 전에 OTP를 확인해야 합니다.

    IPv6 활성화: IPv6 DNS 서버를 활성화합니다. 클라이언트에는 프라이빗 IPv6 주소가 제공됩니다.

    추가 버튼을 클릭하여 완료합니다.

    조직 추가 버튼을 클릭하여 새로 생성된 서버에 조직을 연결합니다.

    서버 시작 버튼을 클릭하여 VPN을 시작합니다.

    방화벽에서 포트 활성화

    VPN 포트를 통한 클라이언트의 연결을 수락하려면 방화벽을 통해 연결을 활성화해야 합니다.

    $ sudo firewall-cmd --permanent --add-port=18412/udp
    $ sudo firewall-cmd --reload
    

    6단계 - Pritunl 클라이언트 설치

    이제 서버가 가동되어 실행 중이므로 클라이언트를 설치하고 VPN에 연결할 시간입니다. Pritunl은 명령줄과 GUI 클라이언트의 두 가지 유형의 클라이언트를 제공합니다.

    자습서에서는 명령줄 클라이언트를 사용합니다. 시스템에는 한 가지 유형의 클라이언트만 설치할 수 있습니다.

    Pritunl 클라이언트에 필요한 EPEL 저장소를 설치합니다.

    $ sudo dnf install epel-release
    

    Rocky Linux 시스템에 공식 Pritunl 리포지토리를 추가합니다.

    $ sudo tee -a /etc/yum.repos.d/pritunl.repo << EOF
    [pritunl]
    name=Pritunl Stable Repository
    baseurl=https://repo.pritunl.com/stable/yum/centos/8/
    gpgcheck=1
    enabled=1
    EOF
    

    GPG 키를 추가하고 가져옵니다.

    $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
    $ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp
    

    명령줄 클라이언트를 설치합니다.

    $ sudo dnf install pritunl-client
    

    7단계 - 클라이언트에서 서버로 연결

    Pritunl 서버 사이트의 사용자 탭에서 클라이언트에 연결하기 위한 임시 프로필 링크를 가져옵니다.

    마지막 항목에서 임시 URI 링크를 복사합니다.

    프로파일을 추가하려면 클라이언트 터미널에서 다음 명령을 입력하십시오.

    $ pritunl-client add pritunl://example.com/ku/2hd6S6Ug
    

    명령에서 add 뒤에 복사한 프로필 링크를 추가해야 합니다.

    추가된 프로필 목록을 확인하세요.

    $ pritunl-client list
    +----------------------------------+-------------------------+--------------+----------------+----------------+
    |                ID                |          NAME           |  ONLINE FOR  | SERVER ADDRESS | CLIENT ADDRESS |
    +----------------------------------+-------------------------+--------------+----------------+----------------+
    | wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | Disconnected | -              | -              |
    +----------------------------------+-------------------------+--------------+----------------+----------------+
    

    다음 명령을 실행하여 프로필에 연결합니다. 명령에서 전체 프로필 ID를 사용할 필요가 없습니다. 프로필 ID의 처음 3글자를 사용하여 참조하세요.

    $ pritunl-client start wki --mode=ovpn --password=PINOTP
    

    • OPVN 모드를 지정하려면 명령에 플래그 --mode=ovpn을 추가합니다.\n
    • Google Authenticator 옵션을 활성화한 경우 Google Authenticator 또는 Authy 클라이언트를 사용하여 구성해야 합니다.\n
    • 핀과 2단계 인증 코드를 지정하려면 명령에서 --password=PINOTP 플래그를 사용하십시오. 예를 들어 핀이 54321이고 OTP 코드가 456789인 경우 위 명령에서 --password=54321456789 플래그를 사용합니다. PIN만 사용하는 경우 --password=PIN 플래그를 사용하십시오.\n

    list 명령을 다시 실행하여 연결이 작동하는지 확인하십시오.

    $ pritunl-client list
    +----------------------------------+-------------------------+------------+----------------+----------------+
    |                ID                |          NAME           | ONLINE FOR | SERVER ADDRESS | CLIENT ADDRESS |
    +----------------------------------+-------------------------+------------+----------------+----------------+
    | wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | 6 secs     | 178.62.233.196 | 192.168.238.2  |
    +----------------------------------+-------------------------+------------+----------------+----------------+
    

    Pritunl VPN에 성공적으로 연결되었습니다.

    Pritunl 명령줄

    Pritunl 서버에는 일부 기본 작업을 수행하는 데 사용할 수 있는 명령줄 도구가 함께 제공됩니다.

    데이터베이스 복구

    Pritunl을 사용하여 데이터베이스를 복구하고 손상되거나 일관성 없는 데이터베이스를 복구할 수 있습니다.

    먼저 Pritunl 서버를 중지합니다.

    $ sudo systemctl stop pritunl
    

    데이터베이스를 복구하십시오.

    $ sudo pritunl repair-database
    

    Pritunl 서비스를 다시 시작하십시오.

    $ sudo systemctl start pritunl
    

    repair-database 명령은 모든 로그를 지우고 모든 사용자 고정 가상 IP 주소를 재설정하며 모든 서버를 중지 상태로 만듭니다.

    자격 증명 재설정

    다음 명령은 관리자 사용자 이름과 암호를 다시 pritunl로 재설정합니다. 활성화된 경우 관리자 사용자에 대한 싱글 사인온 및 2단계 인증 설정도 제거됩니다.

    $ sudo pritunl reset-password
    

    웹 콘솔 포트 변경

    기본적으로 Pritunl은 포트 443에서 실행됩니다. 변경하려면 다음 명령을 사용하십시오.

    $ sudo pritunl set app.server_port 8443
    

    Pritunl은 Lets Encrypt 확인을 위해 포트 80에서 웹 서버를 실행하고 HTTP 요청을 HTTPS로 리디렉션합니다. 다음 명령을 사용하여 리디렉션을 끌 수 있습니다. 이렇게 하면 Lets Encrypt 인증서 사용도 방지됩니다.

    $ sudo pritunl set app.redirect_server false
    

    결론

    이것으로 Rocky Linux 8 서버에서 Pritunl VPN 서버를 설정하고 사용하는 방법에 대한 자습서를 마칩니다. Pritunl에 대해 자세히 알아보려면 공식 문서를 따를 수 있습니다. 질문이 있으시면 아래 의견에 게시하십시오.