最近のコメント

    Pritunl VPN環境の構築手順

    コロナの影響でリモート接続が必要となり構築した際のメモ。
    既存のセグメントに透過的にアクセス可能とするのではなく、新しい仮想のVPNセグメントを生成して、そのセグメントに必要なクライアントを参加させる形となる。

    Pritunlサーバ構築

    AWS(準備)

    • EC2のOS: Amazon Linux 2
    • EC2インスタンスタイプ: t3.micro
    • ストレージ: 8GB
    • ElasticIP付与: 必須(以降、111.111.111.111)
    • ドメイン設定: 任意
    • インバウンドポート設定
      • TCP SSH、HTTP、HTTPS 保守作業する場所(自宅/会社)のIPのみ許可
      • UDP 18055 VPNクライアント用(*後ほどPritunlのWeb設定画面で表示される番号)

    AWS(EC2サーバ構築)

    • SSHにて、ec2-userでログイン
    • ここを参考にPritunlをインストール(以下)

    sudo tee /etc/yum.repos.d/mongodb-org-4.2.repo << EOF
    [mongodb-org-4.2]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/4.2/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
    EOF

    sudo tee /etc/yum.repos.d/pritunl.repo << EOF
    [pritunl]
    name=Pritunl Repository
    baseurl=https://repo.pritunl.com/stable/yum/amazonlinux/2/
    gpgcheck=1
    enabled=1
    EOF

    sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    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 yum -y install pritunl mongodb-org
    sudo systemctl start mongod pritunl
    sudo systemctl enable mongod pritunl

    • セットアップキーを作成

    sudo pritunl setup-key
    0602d77d26fe4b22a8330a8c13c00000 のようなキーが表示される

    • デフォルトパスワードを作成

    sudo pritunl default-password
    Administrator default password:
    username: “pritunl”
    password: “xxxxxxxxxxxxxx”

    Pritunl コントロール画面(初期設定)

    • ブラウザで、Pritunlセットアップ画面を開き、セットアップキーを入力する。
      https://111.111.111.111/setup
    • 先程生成した、ユーザ、初期パスワードを入力しログインする。
    • Settingsダイアログが表示されるのでNew Password、Lets Encrypt Domain(ドメイン取得時のみ)などを設定する。
    • オーガナイゼーション作成
      • 上部メニューの Users をクリック
      • Add Organization ボタンをクリック
        ※最低この単位で、VPNのネットワークセグメントを分けることも可能
    • ユーザ作成
      • Add User ボタンをクリック
      • 対象ユーザを全員分作成
      • Linuxのファイルサーバをクライアントにする場合、Pinやメールは設定しない
    アカウント(半角) メール PIN(整数6文字以上)
    user1 user1@hoge.jp 123456
    user2 user1@hoge.jp 123456
    user3 user3@hoge.jp 123456
    linuxFileServer なし なし
    • サーバ作成
      Name: vpnの名称
      UDP: 18055 (自動で設定される)
      セグメント: 192.168.217.0/24 (自動で設定される)
      ※VPNセグメントを複数構築したい場合(ネットワークを分離したい場合)は複数作成する。
    • オーガナイゼーションをサーバに紐付ける
      • Attach Organization ボタンをクリック
      • オーガナイゼーションとサーバを入力
    • サーバの起動
      • 左側の Start Server 緑ボタンをクリック
      • 右側の Status が Online となればOK
    • 各ユーザのプロファイルをダウンロード
      ダウンロードしたプロファイルと、先程設定したPinを、各ユーザに配布する。

      このファイルとPinがあれば誰でも接続できてしまう為、配布は可能な限り安全な方法で行うこと。またPinは口頭で伝えるなどすること。

    Windowsクライアントアプリの導入

    • ここより Pritunl.exe をダウンロードし、インストール
    • クライアント起動
    • 設定ファイルをImport(予め、Pritunlのユーザ一覧画面の右側のダウンロードボタンで、各ユーザの.tarファイルをダンロードしておく)
    • 右上のハンバーガーメニューより「Connect」
    • Pinをいれれば接続完了

    リモートデスクトップを使用する場合は、接続元・先の2台にクライアントアプリをインストールします。
    また、既存のファイルサーバにアクセスしたい場合は、ファイルサーバにクライアントをインストールします(次章を参照)

    LinuxサーバにOpenVPNクライアントを導入

    ファイルサーバ等、Linuxマシンにアクセスを行う必要がある場合などに必要となる。
    ここの記事のclient側についてのみ参考にさせていただきました。

    • openvpnクライアントをインストール

    yum install epel-release
    yum install –enablerepo=epel openvpn

    • client.confの修正

    cat /usr/share/doc/openvpn/sample/sample-config-files/client.conf > /etc/openvpn/client.conf
    vi /etc/openvpn/client.conf

    下記項目を変更します。
    remote 111.111.111.111 18055
    ca /etc/openvpn/ca
    cert /etc/openvpn/cert
    key /etc/openvpn/key
    tls-auth /etc/openvpn/ta 1

    • 上記の4つの証明書(ca,cert,key,ta)に対応したファイルを作成
      Pritunlのユーザ一覧画面からダウンロードしたプロファイル(tarファイル)をLhaForge等のアーカイバで展開し、展開された .ovpnファイルを、サクラエディタ等のテキストエディタで開いて切り出し、ファイル化します。

    <ca>~この部分をコピーして単独のファイル ca にする~</ca>

    <tls-auth>~この部分をコピーして単独のファイル ta にする~</tls-auth>

    <cert>~この部分をコピーして単独のファイル certに する~</cert>

    <key>~この部分をコピーして単独のファイル key にする~</key>

    ※Linuxであれば tar -xf user1.tar のようにアーカイブを展開し、展開後のovpnファイルを vi user1.ovpn 等としてファイル内のタグで囲まれたテキスト部分を切り出してファイル化します。少々面倒なのですが、もっと良い方法を知っている方がいれば教えてほしいです・・・

    • VPNクライアント接続テスト

    openvpn /etc/openvpn/client.conf

    接続ログが画面にずらずらと表示される。エラーなどがなければOK。
    ※以下のようなPinエラーになる場合は、当該ユーザ作成時にPinを設定している為、Pinの設定を削除してください。

    Mon Mar 30 02:03:30 2020 AUTH: Received control message:
    AUTH_FAILED,CRV1:R:f52cbb8978cc402da249d2e00000003:bmls:Enter Pin
    Mon Mar 30 02:03:30 2020 SIGTERM[soft,auth-failure] received, process exiting

    • VPNクライアント自動起動

    vi /opt/openvpn-client.sh

    #!/bin/bash  
    openvpn /etc/openvpn/client.conf  

    chmod 755 /opt/openvpn-client.sh
    vi /etc/systemd/system/openvpn-client.service

    [Unit]  
    Description = OpenVPN-Client daemon  
    [Service]  
    ExecStart = /opt/openvpn-client.sh  
    Restart = always  
    Type = simple  
    [Install]  
    WantedBy=multi-user.target  
    • 起動

    systemctl start openvpn-client
    ps aux | grep openvpn

    下記のようなプロセスがあれば問題ない
    root 862 0.0 0.1 23284 3420 ? Ss 3月31 0:00 /bin/bash /opt/openvpn-client.sh
    root 867 0.0 0.4 56504 7976 ? S 3月31 0:05 openvpn /etc/openvpn/client.conf

    • 自動起動

    systemctl enable openvpn-client

    • サーバを再起動後しばらくして、Pritunl ユーザ一覧画面で、当該サーバが接続状態となっていればOK

    Comments are closed.