OpenVPN による VPN接続について (静的鍵編)


以前に、有線LANケーブルで接続した2PC間のファイル共有を行いましたが、今回はインターネットでVPN (Virtual Private Network)を利用した2PC間の接続になります。

なお、VPNの説明については、省略させていただきます。

VPN環境の構築について、今回はLinuxにおいて標準搭載されている「OpenVPN」を使います。

参考:OpenVPN.JPOpenVPN公式

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

手順

  1. 静的鍵(static.key)の作成
  2. サーバからクライアントへ静的鍵をコピー転送
  3. サーバ設定ファイル(server.conf)の作成
  4. クライアント設定ファイル(client.conf)の作成
  5. OpenVPNサーバの起動(待機)
  6. OpenVPNクライアントの起動(接続)
  7. クライアントからサーバへ ping 送信
  8. 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接続で見られるようにすることを、目標にしています。

,

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)