以前に、有線LANケーブルで接続した2PC間のファイル共有を行いましたが、今回はインターネットでVPN (Virtual Private Network)を利用した2PC間の接続になります。
なお、VPNの説明については、省略させていただきます。
VPN環境の構築について、今回はLinuxにおいて標準搭載されている「OpenVPN」を使います。
OpenVPNは、Webブラウザなどに使われる SSL/TLS プロトコルを利用していて、個人でも簡単に安全なVPN環境を構築できるツールになっていると思います。
今回は、その第一回目ということで、CA認証局の証明書などを使わない、専用鍵(静的鍵, StaticKey)を使った2PC間だけの”簡単”なOpenVPNによるVPN接続のテストを行いました。
OpenVPNのインストール
linuxの場合は、おそらく最初からOpenVPNが入っていると思いますが、一応「openvpn」とコマンドして確認しました。
~$ openvpn
OpenVPNのバージョン情報など出てきたので、ubuntu20.04では、最初から入っているようです。
入っていない場合はインストールします。
~$ sudo apt install openvpn
OpenVPN のセットアップ
今回の構成
- OpenVPNサーバ:ubuntu20.04 (ip_addr:192.168.0.11, vpn_ip_addr:10.8.0.1)
- OpenVPNクライアント:AlterLinux (ip_addr:192.168.0.14, vpn_ip_addr:10.8.0.2)
- 静的鍵:static.key
- 設定ファイル:server.conf, client.conf
手順
- 静的鍵(static.key)の作成
- サーバからクライアントへ静的鍵をコピー転送
- サーバ設定ファイル(server.conf)の作成
- クライアント設定ファイル(client.conf)の作成
- OpenVPNサーバの起動(待機)
- OpenVPNクライアントの起動(接続)
- クライアントからサーバへ ping 送信
- VPN接続でクライアントからサーバの共有ファイルを確認
静的鍵やサーバ/クライアント設定ファイルの作成については、 OpenVPN.JP を参考にしました。
静的鍵(static.key)の作成
サーバ側で次のコマンドにより静的鍵を作成します。
今回はvpn接続テストが目的なので、「openvpn」という適当な作業用ディレクトリを作りました。
~$ mkdir openvpn
~$ cd openvpn
~/openvpn$ openvpn --genkey --secret static.key
中身を確認します。
~/openvpn$ cat static.key
サーバからクライアントへ静的鍵をコピー転送
サーバからクライアント(ユーザ:altan, IP:192.168.0.14) への鍵の移動は「USBメモリ」などで移動するか、「scpコマンド」で転送します。
クライアント(AlterLinux)側の操作
“scp”を使う場合は「クライアント」側の”ssh”を起動して、リモートできるようにしておきます。
~$ sudo systemctl status sshd (sshが可動しているか確認)
inactive (dead)
~$ sudo systemctl start sshd (sshを起動)
active
クライアント側にも「openvpn」作業ディレクトリを作ります。
~$ mkdir openvpn
サーバ(ubuntu20.04)側の操作
“scp”コマンドで「サーバ」から「クライアント」へ静的鍵(static.key)を転送します。
~/openvpn$ scp static.key altan@192.168.0.14:~/openvpn/
サーバ設定ファイル(server.conf)の作成
テキストエディタ(viなど)で設定ファイル(server.conf)を作成します。
~/openvpn$ vi server.conf
サーバ側では以下の内容になります。
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key
クライアント設定ファイル(client.conf)の作成
テキストエディタ(viなど)で設定ファイル(client.conf)を作成します。
~/openvpn$ vi client.conf
クライアント側では以下の内容になります。
remote 192.168.0.11
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
remote パラメータはサーバのIPアドレスです。
ifconfigパラメータは server.conf とIPアドレスの並び順が逆になっています。
OpenVPNサーバの起動(待機)
起動は以下のコマンド入力です。sudo(管理者権限)が必要です。
~/openvpn$ sudo openvpn server.conf
最後の行 ” link remote: ” がクライアントからの接続待ちです。
OpenVPNクライアントの起動(接続)
起動は以下のコマンド入力です。sudo(管理者権限)が必要です。
~/openvpn$ sudo openvpn client.conf
最後の” Sequence completed “で接続されました。
クライアントからサーバへ ping 送信
別のターミナル(端末)から”ping “送信します。
~$ ping 10.8.0.1
VPN接続でクライアントからサーバの共有ファイルを確認
ファイルフォルダのネットワークURLに「smb://10.8.0.1/」を入力して接続します。
サーバ(ubuntu)の共有ファイルが確認できました。
まとめ
今回は、OpenVPNの勉強を兼ねてのVPN接続でしたが、静的鍵によるVPN接続は簡単ですが、あまり実用的ではなく、ローカル環境でしか使えないようです。
ですので、外部からVPN接続ができるようにするためには、認証局で作成された秘密鍵や証明書が必要になります。
次回は自己認証局による証明書発行、外部接続のためのセキュリティ設定などを交えて、本格的なOpenVPN接続をやっていきたいと思います。
最終的には、自宅webカメラサーバの画像を外からOpenVPN接続で見られるようにすることを、目標にしています。