この記事は、ニフクラブログで2020-12-17に公開された記事を移転したものです。 こんにちは、ニフクラ技術支援チームです。
今回は2019年4月からニフクラで提供している「リモートアクセスVPNゲートウェイ」(SSLVPN)の仕様の特徴と、それに伴う制限事項の回避方法を紹介します。
リモートアクセスVPNゲートウェイを利用して、お客様環境からニフクラ上のプライべートLANに直接接続することはもちろん問題ありませんが、さらにルーターを介して別のプライベートLANには直接接続できないという制限があります。
これはリモートアクセスVPNゲートウェイがルーティング機能を持たず、SNATによりプライベートLANに接続するという仕様によるものです。
(リモートアクセスVPNゲートウェイによるIPアドレスの変換については下記「構成イメージ」をご確認ください。)
今回はこの制限に対する回避手段として、ニフクラルーターのDNATを利用したパターンと、SSH転送サーバーを利用したパターンで、別プライベートLAN上のリソースへの接続方法を検証します。
構成イメージ
前提条件
本ブログは、以下の前提知識がある方を想定しています。
ニフクラの基本的なコントロールパネルの操作、サービス利用に関する知識
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 |
トンネルモード | 分割トンネル |
今回はトンネルモードは「分割トンネル」で作成します。
トンネルモードによってクライアントネットワーク内での通信可否が異なります。
こちらも参考にしていただき、要件に合わせて選択してください。
ニフクラ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機能を利用した接続パターンでの設定と接続方法を紹介します。
(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」を設定します。
コンソール接続し設定してください。
接続方法の詳細は以下をご参照ください。
クラウドヘルプ(サーバー:コンソール)
(4) 接続確認
設定が完了したので、クライアント環境から接続してみます。 本検証ではターミナルに「TeraTerm」を使用します。
クライアント端末でVPN接続します。
VPN接続が確立すると、リモートアクセスVPNゲートウェイで設定したネットワークプールからIPアドレスが割り当てられます。
「ipconfig /all」コマンドでIPアドレスを確認します。
IPアドレスの割り当てが確認できたら、TeraTermを起動します。
ホストに「192.168.20.1」(ルーターのプライベートIP)、
TCPポートにDNATルールで設定した接続先の送信先ポートを指定し、接続します。
ユーザー名/パスワードとSSHキーを指定します。
「ip a」コマンドで接続先を確認します。
ニフクラルーターのDNAT機能を利用し、プライベートLAN②上のサーバーにログインできました。
「w」コマンドで送信元のIPアドレスを確認してみます。
SNATにより送信元のIPアドレスがリモートアクセスVPNゲートウェイのプライベートIPアドレスになっていることが確認できます。
ニフクラルーターのDNATを利用した接続検証は以上になります。
接続パターン② SSH転送サーバー利用
SSH転送サーバーを利用した接続パターンでの設定と接続方法を紹介します。
(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アドレスを確認します。
IPアドレスの割り当てが確認できたら、TeraTermを起動し、SSH転送サーバーに接続します。
ユーザー名/パスワードとSSHキーを指定し、接続します。
「ip a」コマンドでSSH転送サーバーに接続していることを確認します。
「w」コマンドで送信元のIPアドレスを確認します。 SNATにより送信元のIPアドレスがリモートアクセスVPNゲートウェイのプライベートIPアドレスになっていることが確認できます。
次にTeraTermの「SSH転送」機能でアクセスサーバーに接続するための設定を追加します。
※OSのSSHポートフォワーディング(sshd_configのAllowTcpForwarding)設定はデフォルトで有効化されています。
SSH転送サーバーに接続したターミナルで、「設定」から「SSH転送」を開きます。
設定を追加します。本検証では以下の設定としています。
ローカルのポート | リモート側ホスト | ポート | 備考 |
---|---|---|---|
30022 | 192.168.30.11 | 22 | アクセスサーバー① |
40022 | 192.168.30.12 | 22 | アクセスサーバー② |
続いて、アクセスサーバーに接続します。
SSH転送サーバーに接続したターミナルは起動したまま、別のターミナルを起動します。
ホストに「127.0.0.1」、TCPポートに「SSH転送」で設定したローカルのポートを指定し接続します。
※SSH転送サーバーのターミナルを終了すると接続できません。
ユーザー名/パスワードとSSHキーを指定し、接続します。
「ip a」コマンドで接続先を確認します。
SSH転送サーバーを経由して、ポートフォワーディングでプライベートLAN②上のサーバーにログインできました。
「w」コマンドで送信元のIPアドレスを確認します。
SSH転送サーバー経由では送信元IPがSSH転送サーバーのIPアドレスになっていることが確認できます。
SSH転送サーバー利用パターンでの接続検証は、以上になります。
まとめ
ニフクラルーターのDNAT利用とSSH転送サーバー利用、2つの接続パターンを検証してみました。
接続サーバーが複数ある場合のDNAT設定や、リモートアクセスVPNゲートウェイのプライベートIPからの通信許可設定など注意点はありますが、構築から接続まで比較的容易に実施できたと思います。
この接続方法は、DBサーバーなど内部ネットワークに配置したサーバーへのリモートメンテナンス経路として有用です。 リモートアクセスVPNゲートウェイの利用、またはメンテナンス経路を検討される際は参考にしてみてください。
なお、リモートアクセスVPNゲートウェイを経由して、プライベートLANからクライアント環境への通信はできませんのでご留意ください。
リモートアクセスVPNゲートウェイを経由した、プライベートLANから接続端末への通信は出来ますか? | ニフクラFAQ
ここまで読んでいただきありがとうございました!
注意事項
- 本記事ではOS上の操作についても記載していますが、ニフクラではOS以上はご利用者様の責任範囲となりますのでご留意ください。
- 本記事で記載した各サービス/ニフクラの機能等は、2020年12月時点の情報です。利用時には各サービス/ニフクラの機能の最新情報をご確認いただきご利用ください。