コロナの影響でリモート接続が必要となり構築した際のメモ。
既存のセグメントに透過的にアクセス可能とするのではなく、新しい仮想の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 |
なし |
なし |
Windowsクライアントアプリの導入
- ここより Pritunl.exe をダウンロードし、インストール
- クライアント起動
- 設定ファイルをImport(予め、Pritunlのユーザ一覧画面の右側のダウンロードボタンで、各ユーザの.tarファイルをダンロードしておく)
- 右上のハンバーガーメニューより「Connect」
- Pinをいれれば接続完了
リモートデスクトップを使用する場合は、接続元・先の2台にクライアントアプリをインストールします。
また、既存のファイルサーバにアクセスしたい場合は、ファイルサーバにクライアントをインストールします(次章を参照)
LinuxサーバにOpenVPNクライアントを導入
ファイルサーバ等、Linuxマシンにアクセスを行う必要がある場合などに必要となる。
※ここの記事のclient側についてのみ参考にさせていただきました。
yum install epel-release
yum install –enablerepo=epel openvpn
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
等としてファイル内のタグで囲まれたテキスト部分を切り出してファイル化します。少々面倒なのですが、もっと良い方法を知っている方がいれば教えてほしいです・・・
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
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
最近のコメント