ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

リモートアクセスVPNゲートウェイの接続先以外のプライベートLANにアクセスする

こんにちは、ニフクラ技術支援チームです。

今回は2019年4月からニフクラで提供している「リモートアクセスVPNゲートウェイ」(SSLVPN)の仕様の特徴と、それに伴う制限事項の回避方法を紹介します。

リモートアクセスVPNゲートウェイを利用して、お客様環境からニフクラ上のプライべートLANに直接接続することはもちろん問題ありませんが、さらにルーターを介して別のプライベートLANには直接接続できないという制限があります。
f:id:TechnicalAccountEngineer:20201204111924j:plain

これはリモートアクセスVPNゲートウェイがルーティング機能を持たず、SNATによりプライベートLANに接続するという仕様によるものです。
(リモートアクセスVPNゲートウェイによるIPアドレスの変換については下記「構成イメージ」をご確認ください。)

今回はこの制限に対する回避手段として、ニフクラルーターのDNATを利用したパターンと、SSH転送サーバーを利用したパターンで、別プライベートLAN上のリソースへの接続方法を検証します。

構成イメージ

f:id:TechnicalAccountEngineer:20201208165238j:plain
構成図

前提条件

本ブログは、以下の前提知識がある方を想定しています。

  • ニフクラの基本的なコントロールパネルの操作、サービス利用に関する知識

  • Linuxの基本的な操作、設定に関する知識

利用リソース

共通

リソース 数量
仮想サーバー(OS:CentOS 8.2) 2
プライベートLAN 2
リモートアクセスVPNゲートウェイ 1

ニフクラルーターのDNAT利用の場合

リソース種別 数量
ルーター 1

SSH転送サーバー利用の場合

リソース種別 数量
仮想サーバー(OS:CentOS 8.2) 1

環境構築

(1) プライベートLANの作成

プライベートLANの設定は以下の通りです。

プライベートLAN名 IPアドレス帯 備考
RAVPNLAN01 192.168.20.0/24 プライベートLAN①
RAVPNLAN02 192.168.30.0/24 プライベートLAN②

プライベートLAN①はリモートアクセスVPNゲートウェイと接続するネットワークです。
プライベートLAN②はルーターまたはSSH転送サーバー経由で接続するアクセスサーバーを配置するネットワークです。

作成方法の詳細は以下をご参照ください。
クラウドヘルプ(プライベートLAN:作成)

(2) リモートアクセスVPNゲートウェイの作成、クライアント設定

本検証では以下の設定としています。

項目 設定値
リモートアクセスVPNGW名 RAVPNGW01
タイプ ravgw.small
プライベート側ネットワーク RAVPNLAN01(192.168.20.0/24)
IPアドレス 192.168.20.254
ネットワークプールのCIDR 192.168.21.0/24
トンネルモード 分割トンネル

今回はトンネルモードは「分割トンネル」で作成します。
トンネルモードによってクライアントネットワーク内での通信可否が異なります。
こちらも参考にしていただき、要件に合わせて選択してください。
リモートアクセスVPNゲートウェイに接続されている端末同士は、SSL-VPN経由で通信出来ますか? | ニフクラFAQ

リモートアクセスVPNゲートウェイの作成、クライアント設定についてはニフクラブログでご紹介していますので、ご参照ください。
ニフクラの新サービス、リモートアクセスVPNゲートウェイ機能を利用してみた - ニフクラ ブログ

(3) アクセスサーバー作成

ルーターまたはSSH転送サーバーを経由して接続するサーバー2台を、プライベートLAN②(192.168.30.0/24)上に作成します。 作成するサーバーの構成は以下の通りです。

ホスト名 グローバルIP プライベートIP
RAVPNSV02 利用しない 192.168.30.11
RAVPNSV03 利用しない 192.168.30.12

サーバーに適用するファイアウォールには以下の通信(INルール)を許可するように設定しています。
接続パターンごとに必要なINルールの定義は、後の手順で追加します。

プロトコル ポート 接続元種別 備考
ICMP - 192.168.30.0/24 疎通確認用

作成方法の詳細は以下をご参照ください。
クラウドヘルプ(サーバーの作成)
クラウドヘルプ(ファイアウォールグループの新規作成)

接続パターン① ニフクラルーターのDNAT利用

ニフクラルーターのDNAT機能を利用した接続パターンでの設定と接続方法を紹介します。 f:id:TechnicalAccountEngineer:20201207104707j:plain

(1) ルーター作成

ルーターとネットワーク設定は以下の通りです。

ルーター名 タイプ
RAVPNRT01 router.small
接続ネットワーク名 IPアドレス
RAVPNLAN01(192.168.20.0/24) 192.168.20.1
RAVPNLAN02(192.168.30.0/24) 192.168.30.1

ルーターに適用するファイアウォールはDNAT設定後に設定します。

作成方法の詳細は以下をご参照ください。
クラウドヘルプ(ルーター:作成)

(2) DNAT設定

NATテーブル(DNAT)を作成します。
DNATルールは以下の通りです。
※DNATの仕様上、接続サーバーが複数台ある場合は送信先ポートを分ける必要があります。

プロトコル インバウンドネットワーク 送信先ポート 変換後IPアドレス:ポート 備考
TCP RAVPNLAN01 10022 192.168.30.11:22 アクセスサーバー①
TCP RAVPNLAN01 20022 192.168.30.12:22 アクセスサーバー②

作成方法の詳細は以下をご参照ください。
クラウドヘルプ(ルーター:NATテーブル作成)

続いて、ルーターに適用するファイアウォールを作成します。
ポートにはDNATルールで設定した送信先ポートを指定します。

プロトコル
ポート
接続元種別
備考
TCP 10022 192.168.20.254 リモートアクセスVPNゲートウェイのプライベートIP
TCP 20022

作成方法の詳細は以下をご参照ください。
クラウドヘルプ(ファイアウォールグループの新規作成)

(3) アクセスサーバーの設定

サーバーに適用しているファイアウォールに以下のINルールを追加します。
※OS上のファイアウォールはデフォルトで無効化されています。

プロトコル
ポート
接続元種別
備考
TCP 22 192.168.20.254 リモートアクセスVPNゲートウェイのプライベートIP

追加方法の詳細は以下をご参照ください。
クラウドヘルプ(ファイアウォール:ルールの追加)

続いて、サーバーのデフォルトゲートウェイにルーターのIPアドレス「192.168.30.1」を設定します。
コンソール接続し設定してください。 f:id:TechnicalAccountEngineer:20201202202350j:plain

接続方法の詳細は以下をご参照ください。
クラウドヘルプ(サーバー:コンソール)

(4) 接続確認

設定が完了したので、クライアント環境から接続してみます。 本検証ではターミナルに「TeraTerm」を使用します。

クライアント端末でVPN接続します。

VPN接続が確立すると、リモートアクセスVPNゲートウェイで設定したネットワークプールからIPアドレスが割り当てられます。
「ipconfig /all」コマンドでIPアドレスを確認します。
f:id:TechnicalAccountEngineer:20201203171950j:plain

f:id:TechnicalAccountEngineer:20201203172010j:plain

IPアドレスの割り当てが確認できたら、TeraTermを起動します。
ホストに「192.168.20.1」(ルーターのプライベートIP)、
TCPポートにDNATルールで設定した接続先の送信先ポートを指定し、接続します。

f:id:TechnicalAccountEngineer:20201202211912j:plainf:id:TechnicalAccountEngineer:20201202211925j:plain

ユーザー名/パスワードとSSHキーを指定します。 f:id:TechnicalAccountEngineer:20201202203452j:plain

「ip a」コマンドで接続先を確認します。

f:id:TechnicalAccountEngineer:20201203160524j:plain
アクセスサーバー①
f:id:TechnicalAccountEngineer:20201203160545j:plain
アクセスサーバー②

ニフクラルーターのDNAT機能を利用し、プライベートLAN②上のサーバーにログインできました。

「w」コマンドで送信元のIPアドレスを確認してみます。

f:id:TechnicalAccountEngineer:20201202211031j:plain
アクセスサーバー①

f:id:TechnicalAccountEngineer:20201202211053j:plain
アクセスサーバー②
SNATにより送信元のIPアドレスがリモートアクセスVPNゲートウェイのプライベートIPアドレスになっていることが確認できます。

ニフクラルーターのDNATを利用した接続検証は以上になります。

接続パターン② SSH転送サーバー利用

SSH転送サーバーを利用した接続パターンでの設定と接続方法を紹介します。 f:id:TechnicalAccountEngineer:20201207104728j:plain

(1) SSH転送サーバーの作成

SSH転送サーバーのホスト名とネットワーク設定は以下の通りです。 プライベートIP(プライベートLAN②)はサーバー作成後に追加NICを作成し、設定してください。

ホスト名
グローバルIP
プライベートIP(プライベートLAN①) プライベートIP(プライベートLAN②)
RAVPNSV01 利用しない 192.168.20.10 192.168.30.10

SSH転送サーバーに適用するファイアウォールは以下の通信(INルール)を許可するようにしています。
※OS上のファイアウォールはデフォルトで無効化されています。

プロトコル
ポート
接続元種別
備考
TCP 22 192.168.20.254 リモートアクセスVPNゲートウェイのプライベートIP

作成方法の詳細は以下をご参照ください。
クラウドヘルプ(サーバーの作成)
クラウドヘルプ(追加NIC:作成)
クラウドヘルプ(サーバー:追加NIC 設定)
クラウドヘルプ(ファイアウォールグループの新規作成)

(2) アクセスサーバーの設定

サーバーに適用しているファイアウォールに以下のINルールを追加します。
※OS上のファイアウォールはデフォルトで無効化されています。

プロトコル ポート 接続元種別 備考
TCP 22 192.168.30.10 SSH転送サーバーのIP

追加方法の詳細は以下をご参照ください。
クラウドヘルプ(ファイアウォール:ルールの追加)

(3) 接続確認

設定が完了したので、クライアント環境から接続してみます。

クライアント端末でVPN接続します。

VPN接続が確立すると、リモートアクセスVPNゲートウェイで設定したネットワークプールからIPアドレスが割り当てられます。
「ipconfig /all」コマンドでIPアドレスを確認します。
f:id:TechnicalAccountEngineer:20201203171950j:plain

f:id:TechnicalAccountEngineer:20201203172010j:plain

IPアドレスの割り当てが確認できたら、TeraTermを起動し、SSH転送サーバーに接続します。
f:id:TechnicalAccountEngineer:20201202213601j:plain

ユーザー名/パスワードとSSHキーを指定し、接続します。
f:id:TechnicalAccountEngineer:20201202213633j:plain

「ip a」コマンドでSSH転送サーバーに接続していることを確認します。 f:id:TechnicalAccountEngineer:20201202213653j:plain

「w」コマンドで送信元のIPアドレスを確認します。

f:id:TechnicalAccountEngineer:20201202214846j:plain
SSH転送サーバー
SNATにより送信元のIPアドレスがリモートアクセスVPNゲートウェイのプライベートIPアドレスになっていることが確認できます。

次にTeraTermの「SSH転送」機能でアクセスサーバーに接続するための設定を追加します。
※OSのSSHポートフォワーディング(sshd_configのAllowTcpForwarding)設定はデフォルトで有効化されています。

SSH転送サーバーに接続したターミナルで、「設定」から「SSH転送」を開きます。 f:id:TechnicalAccountEngineer:20201207113343j:plain
設定を追加します。本検証では以下の設定としています。

ローカルのポート リモート側ホスト ポート 備考
30022 192.168.30.11 22 アクセスサーバー①
40022 192.168.30.12 22 アクセスサーバー②
f:id:TechnicalAccountEngineer:20201202213448j:plainf:id:TechnicalAccountEngineer:20201202213500j:plain

続いて、アクセスサーバーに接続します。

SSH転送サーバーに接続したターミナルは起動したまま、別のターミナルを起動します。
ホストに「127.0.0.1」、TCPポートに「SSH転送」で設定したローカルのポートを指定し接続します。
※SSH転送サーバーのターミナルを終了すると接続できません。

f:id:TechnicalAccountEngineer:20201202213809j:plainf:id:TechnicalAccountEngineer:20201202213936j:plain

ユーザー名/パスワードとSSHキーを指定し、接続します。 f:id:TechnicalAccountEngineer:20201202214032j:plain

「ip a」コマンドで接続先を確認します。

f:id:TechnicalAccountEngineer:20201202215433j:plain
アクセスサーバー①
f:id:TechnicalAccountEngineer:20201202215459j:plain
アクセスサーバー②

SSH転送サーバーを経由して、ポートフォワーディングでプライベートLAN②上のサーバーにログインできました。

「w」コマンドで送信元のIPアドレスを確認します。

f:id:TechnicalAccountEngineer:20201202214958j:plain
アクセスサーバー①
f:id:TechnicalAccountEngineer:20201202215018j:plain
アクセスサーバー②
SSH転送サーバー経由では送信元IPがSSH転送サーバーのIPアドレスになっていることが確認できます。

SSH転送サーバー利用パターンでの接続検証は、以上になります。

まとめ

ニフクラルーターのDNAT利用とSSH転送サーバー利用、2つの接続パターンを検証してみました。
接続サーバーが複数ある場合のDNAT設定や、リモートアクセスVPNゲートウェイのプライベートIPからの通信許可設定など注意点はありますが、構築から接続まで比較的容易に実施できたと思います。

この接続方法は、DBサーバーなど内部ネットワークに配置したサーバーへのリモートメンテナンス経路として有用です。 リモートアクセスVPNゲートウェイの利用、またはメンテナンス経路を検討される際は参考にしてみてください。

なお、リモートアクセスVPNゲートウェイを経由して、プライベートLANからクライアント環境への通信はできませんのでご留意ください。
リモートアクセスVPNゲートウェイを経由した、プライベートLANから接続端末への通信は出来ますか? | ニフクラFAQ

ここまで読んでいただきありがとうございました!

注意事項

  • 本記事ではOS上の操作についても記載していますが、ニフクラではOS以上はご利用者様の責任範囲となりますのでご留意ください。
  • 本記事で記載した各サービス/ニフクラの機能等は、2020年12月時点の情報です。利用時には各サービス/ニフクラの機能の最新情報をご確認いただきご利用ください。