メインコンテンツへスキップ
見出し画像

【リモートワークで使える】さくらVPSで固定IPのVPNサーバーを作ってみた

    おはようございます。青山です。

    今回はさくらVPS上に VPNサーバーを構築して固定IPとして使う方法をまとめます。

    VPNってそもそも何?

    VPNは(Virtual Private Network)の略称で、インターネット上に“安全な専用トンネル”を作る技術のことです。

    んあ?専用トンネル?

    簡単に言うと、自分の通信を暗号化して、別の場所のサーバーを経由してインターネットに接続する仕組みのことですね。

    イメージとしては、インターネットという公共の道路の中に自分専用のトンネルを作って通信するようなイメージです。

    画像
    VPNを使う事で自分専用のトンネルを使うことが出来る

    通信は暗号化されるため、途中で第三者が通信内容を見たり盗み見たりすることが非常に難しくなります。

    VPNを使うと何が良いの?

    VPNは自分専用のトンネルって事ね。ほんでVPNを使うとどんな良い事があるの?という所ですが、以下のメリットがあります。

    ・会社のネットワークに安全に接続できる
    ・通信内容を暗号化できる
    ・IPアドレスを隠せる

    具体的に見ていきましょう。

    会社のネットワークに安全に接続できる

    VPNを使うことで、インターネット経由でも会社の社内ネットワークに安全に接続することができます。

    例えば、会社によっては特定のIPアドレスからしかアクセスできないサーバーを用意している場合があります。

    そのような場合でも、VPNを使えば会社のネットワークを経由してアクセスできるようになるため、外出先や自宅からでも社内サーバーに接続することが可能になります。便利!

    通信内容を暗号化できる

    VPNを利用すると、インターネット上でやり取りされる通信内容が暗号化されます。暗号化とは、第三者が内容を見ても理解できないようにデータを変換する仕組みのこと。

    悪い奴が見ても通信の意味が分からないようにするってことですね。

    例えば、カフェや空港、ホテルなどの公共Wi-Fiを利用する場合、同じネットワークに接続している人から通信内容を盗み見られるリスクがあるってご存知ですか?

    そこでVPNを使えば通信が暗号化されるため、仮に途中でデータを取得されたとしても内容を読み取ることが非常に難しくなります。

    そのため、外出先でも比較的安全にインターネットを利用することができ、ログイン情報や個人情報などの漏えいリスクを減らすことができるというわけです。

    IPアドレスを隠せる

    VPNを利用すると、インターネットへアクセスする際に自分の端末から直接接続するのではなく、VPNサーバーを経由して通信が行われます。

    そのため、アクセス先のWebサイトから見ると、接続元は自分の端末ではなくVPNサーバーのIPアドレスとして認識されるように。

    これにより、実際のIPアドレスやおおよその位置情報を知られにくくすることができます。

    また、VPNサービスによっては世界中にサーバーが用意されており、接続する国を変更することで別の地域からアクセスしているように見せることも可能です。

    このような仕組みによって、プライバシーを守りながらインターネットを利用することができるんですねー。

    ではVPNについての内容はこれくらいにして実際にさくらのVPSサーバーを使って設定していきたいと思います。

    環境

    まずは今回の環境からです。

    今回の構成では、さくらのVPS上にVPNサーバーを構築し、そのサーバーを経由してインターネットに接続する仕組みを作ります。

    これにより、自宅やスマートフォンから接続した場合でも、VPSのグローバルIPアドレスを固定IPとして利用できるようになります。

    VPNサーバーの構築方法はいくつかありますが、今回は WireGuard というVPNソフトウェアを使用しました。

    WireGuardは近年非常に人気のあるVPNで、高速・軽量・設定がシンプルという特徴があります。

    OpenVPNなどの従来のVPNと比べても設定が簡単で、個人用VPNを構築する用途には非常に向いていますよ。

    今回のサーバー環境は以下の通りです。

    VPS : さくらVPS
    OS  : Rocky Linux 9
    VPN : WireGuard
    CPU : 2core
    RAM : 768MB

    これくらいのサーバーであれば月に1000円くらいで借りる事が出来ます。
    VPNは軽量な事で有名なWireGuardを採用しました。

    WireGuardをインストール

    それでは実際にVPNサーバーを構築していきます。
    まず最初に、WireGuardをサーバーにインストールします。

    Rocky Linuxでは dnfパッケージマネージャーを使用して簡単にインストールすることができるので便利。

    まずはWireGuard関連パッケージを利用するために、EPELリポジトリを追加します。

    sudo dnf install epel-release -y

    次に、WireGuardのツールをインストールします。

    sudo dnf install wireguard-tools -y

    これでWireGuardを利用するための基本的なツールがインストールされます。

    自動セットアップスクリプト

    WireGuardは手動でも設定できますが、今回は 有名な自動セットアップスクリプトを利用します。

    このスクリプトを使用すると、VPNサーバーの構築やクライアント設定の生成を自動で行ってくれるため、非常に簡単にセットアップすることが可能です。

    まずはスクリプトをダウンロードします。

    curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
    chmod +x wireguard-install.sh
    sudo ./wireguard-install.sh

    次に実行権限を付与します。

    chmod +x wireguard-install.sh

    そしてスクリプトを実行。

    sudo ./wireguard-install.sh

    セットアップ時の質問

    スクリプトを実行すると、いくつかの質問が表示されます。
    基本的には Enterキーでデフォルト設定のままで問題ありません。

    設定内容の例は以下です。

    Public IPv4 address : 自動検出
    Interface           : ens3
    Port                : xxxxx (任意)
    DNS                 : 1.1.1.1
    Client name         : myvpn

    設定が完了すると、WireGuardの設定ファイルが自動的に生成されます。

    サーバー設定

    サーバー側の設定ファイルは以下の場所に作成されます。

    /etc/wireguard/wg0.conf

    サーバー設定は以下から行います。

    /etc/wireguard/wg0.conf

    このファイルには、WireGuardのインターフェース設定や接続するクライアント情報が記述されています。

    以下は設定ファイルの一例です。

    (※セキュリティの関係上、実際の値は伏字にしています)

    [Interface]
    Address = ********
    ListenPort = ********
    PrivateKey = ********
    
    PostUp = firewall-cmd --zone=public --add-interface=wg0 && firewall-cmd --add-port=49988/udp && firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.66.66.0/24 masquerade'
    PostDown = firewall-cmd --zone=public --remove-interface=wg0 && firewall-cmd --remove-port=49988/udp && firewall-cmd --remove-rich-rule='rule family=ipv4 source address=10.66.66.0/24 masquerade'
    
    [Peer]
    PublicKey = ********
    AllowedIPs = ********

    ここまで来たらいよいよVPNを起動してみます。

    VPN起動

    sudo systemctl enable wg-quick@wg0
    sudo systemctl start wg-quick@wg0

    1つ目のコマンドは サーバー起動時にWireGuardを自動起動する設定です。
    2つ目のコマンドで、WireGuardを実際に起動します。

    起動後は、以下のコマンドで状態を確認することができます。

    sudo wg

    正常に起動していれば、以下のような情報が表示されます。

    interface: wg0
    listening port: ********
    
    peer: xxxxx
    latest handshake: 10 seconds ago
    transfer: 63 KiB received

    クライアント設定

    次にクライアント側で設定するために必要なファイルを設定します。

    /home/rocky/wg0-client-myvpn.conf

    この表示が確認できれば、VPNサーバーは正常に動作しています。

    [Interface]
    PrivateKey = ********
    Address = ********
    DNS = 1.1.1.1
    
    [Peer]
    PublicKey = ********
    Endpoint = ********
    AllowedIPs = 0.0.0.0/0
    PersistentKeepalive = 25

    実際にパソコンからVPNに接続してみる

    次に、VPNへ接続するクライアント側の設定を行います。

    WireGuardでは、サーバー側で作成した クライアント設定ファイル(.conf) を利用することで簡単に接続することができるんですよね。

    まずはPCにWireGuardのクライアントソフトをインストールします。

    画像
    WireGuardの公式サイト

    こちらの公式サイトからダウンロードできます。
    それぞれのOSに対応したクライアントが用意されているのでご自身の環境に合ったものをインストールしてください。

    インストール後、WireGuardアプリを起動します。

    VPN設定を読み込む

    WireGuardを起動したら、以下の手順で設定ファイルを読み込みましょう。

    Add Tunnel
    ↓
    Import tunnel from file
    ↓
    wg0-client-myvpn.conf を選択

    設定ファイルを読み込むことで、VPN接続の情報がWireGuardに登録されます。
    手動で細かく入力しなくてよいため、この方法が一番手軽です。

    VPN接続

    設定の読み込みが完了したら、有効化をクリックしてVPNへ接続します。
    正常に接続できれば、PCの通信はVPNサーバーを経由する状態になり完了です。

    つまり、外部サイトから見た接続元IPは、自分の回線ではなく VPSのIPアドレス になるというわけですね。

    例えば確認くんなどで自身の接続IPを確認できるため、自身のIPが変わっているかチェックしてみて下さい。

    というわけで本日の記事は以上です。
    VPN作ってみたいという方は是非チャレンジしてみてくださいね。
    読んでいただきありがとうございました!



     
     
    WEB集客改善コンサルタント。AIO、SEO、CROの分野が得意です。ミニマリスト。 自分らしい生き方の探求。丁寧で穏やかな暮らし。3度の飯より音楽が好き。写真も撮ってます。

    あなたへのおすすめ