NHN Cloud Meetup 編集部
TOAST Instance 1台に複数のグローバルIPを割り当てる
2020.01.28
2,761
2019年12月、TOASTでは1台のインスタンスに複数のグローバルIPアドレスを付与することができるようになりました。
日本の市場では需要の多いこの機能の活用例を紹介します。
1台に複数グローバルIPアドレスを付与する需要とは?
1台に複数のグローバルIPアドレスをつけたいという要望は古くからありました。
2015年より前は、「1台のサーバーにSSLサーバー証明書を搭載したサイトを複数運営したい」という理由で複数のグローバルIPアドレスを同じサーバーに追加したいという方がたくさんいらっしゃいました。しかし技術仕様の発展(たとえばSNI(Server Name Indication)対応ブラウザーやサーバーソフトウェアの普及など)により、現在はこの目的でIPアドレスを追加される方はほとんどいらっしゃいません。
今はプロキシーサーバーを運営したい、もしくはメール送信専用サーバーを構築したいお客様などが、複数のグローバルIPアドレスでのサーバー構築を望まれ、この機能を利用されているようです。
複数IPアドレスにしたらサービスは遅くなる?
よく複数IPアドレスにしたら遅くなるんじゃないか?というご質問をいただきます。
実際に共用のレンタルサーバーなどでは複数IPアドレスでのサーバー運営はよく行われることなのですが、不安も感じられる方が多いのでしょう。
まず、同じインスタンス内であっても、別インスタンスであっても、グローバルの回線は共用です。そのため回線の太さという面では条件に差はありません。
インスタンス負荷という意味では、System Monitoring (「System Monitoringサービスの紹介」参照)でメモリの状況などをウォッチした上で、余裕がありそうならば複数IPアドレスでの運営も検討されればよいと思います。すでにメモリ不足が頻繁でサービスがダウンするような人気ウェブサイトを運営中のインスタンスに、さらに別の仕事もこなさせるためにIPアドレスを追加しようというなら、もちろんお勧めはしません。
IPアドレスの追加付与手順
1台のインスタンスに対し、グローバルIPアドレスをトータルで8つ付ける手順をご案内します。
TOASTではインスタンスを作成して必ず付与されるのは「プライベートIPアドレス」のみであり、グローバルIPアドレスを付与したい場合は明示的に「Floating IP」を付与する必要があります。
Floating IPはお客様ご自身でインスタンスに接続したり、接続解除したり、別のインスタンスに付け直したりということができる「浮動」のIPアドレスです。
以降、グローバルIPアドレスと呼ばず「Floating IP」として表記します。
1.インスタンスにFloating IPを1つ付与して作成
最初にインスタンスを作成する際は、1つのサブネット、そして最大で1つしかFloating IPを付与することができません。
この段階でインスタンスにはFloating IP1つ、プライベートIPアドレス1つが付与されます。
2.Networkメニュー内のVPCよりサブネットを作成
デフォルトでサブネットは1つ用意されていて、「Default Network 192.168.0.0/24」となっています。
Floating IPを8個付与する場合は合計8つになるよう準備、つまり7つ分はサブネットを追加しておきましょう。
たとえば SUB1 192.168.1.0/24、SUB2 192.168.2.0/24、、、SUB7 192.168.7.0/24 などです。
3.インスタンスを停止
4.「…」メニュー内の「ネットワークサブネット変更」を選択
該当インスタンスを選択し「…」メニュー内の「ネットワークサブネット変更」を選択します。
※「ネットワークサブネット変更」の項目は「状態」=「停止」の時だけ選択することができます。
5.「使用可能なサブネット」をクリックし、7つ追加し終わったら「確認」をクリック
ここまでの段階でインスタンスには、Floating IP1つ、プライベートIPアドレス8つが付与されたことになります。
6.Compute > Instance > FloatingIPメニューを開き、Floating IPを準備し接続
まず「接続」というボタンが見えていれば、まだインスタンスに接続していないFloating IPがありますので追加の必要はありません。以下の画像の場合、すべてどこかのインスタンスに接続済みの状態です。
あまっているFloating IPがない場合、「Floating IPの作成」を行います。
Floating IPが準備できたら「接続」ボタンを押します。
Floating IPの接続の画面ではまだFloating IPと接続していないインターフェイスが表示されますので選択します。
対象のインスタンスのすべてのインターフェイスに対し、Floating IPを付与します。
ここではじめてインスタンスには、Floating IP8つ、プライベートIPアドレス8つが付与されていることになります。
7.その後 Compute > Instance より停止していたインスタンスを起動
以上でFloating IPの複数付与は完了です。
Squidでの参考設定例
インスタンスに複数のFloating IPを付与しただけでは、「どのFloating IPも応答するが、外部から見た接続元はいつも固定のIPアドレスしか見えない」とう方も多くいるかと思います。
SquidはProxyとして利用されるアプリケーションのひとつですが、Squidでの複数Floating IPでの運用設定例を紹介します。
プライベートIPアドレスを確認する
Floating IPは管理コンソールから確認することはできますが、インスタンスにログイン後にコマンド操作で確認してもわかりません。コマンド操作ではプライベートIPアドレスだけが見える形となります。※「浮動」のフローティングIPアドレスに対して、プライベートIPは「Fixed IP」とも呼ばれます。
squid.conf内に記載するIPアドレスは、プライベートIPアドレスのほうです。
まずコマンドラインで「付与されたプライベートIPアドレス」を確認してみましょう。
TOASTの仕様では、複数Floating IPが付与されているというこては、複数のプライベートIPも付与されていることになります。
ifconfig コマンドで192.168.1.* などのIPアドレスが追加されていることが確認できます。実際にsquid.confにはこれらのIPアドレスを記載します。
http_port 、acl、tcp_outgoing_address
仮にインスタンスに追記されていたIPアドレスは以下の2つで(よって最大で運用可能なFloating IPは2つ)
だったとして説明します。
「192.168.0.3」
「192.168.1.3」
squid.confには以下のように記載し、Squidを再起動します。以下はポート番号を3128とした例です。
(なおブラウザからのアクセスはFloating IP:ポート番号 でアクセスすることになります。)
http_port 192.168.0.3:3128
http_port 192.168.1.3:3128
acl ip1 myip 192.168.0.3/32
acl ip2 myip 192.168.1.3/32
tcp_outgoing_address 192.168.0.3 ip1
tcp_outgoing_address 192.168.1.3 ip2
なお個人利用のために起動しているSquidなどのプロキシーサーバーを第三者に悪用されて、不正アクセスに利用されたケースも後をたちません。
不正に利用されますと、IPアドレスの評価を落とし、他のお客様への影響を与えかねません。
SquidでのACLやセキュリティグループでのアクセス元を制限するなど、セキュリティ対策を行っていただきますようお願いいたします。