IBM Bluemix からは IBM のウェブアプリケーションサーバー製品である WebSphere Application Server(以下、WAS)が提供されており、メニューから選ぶだけでホスティングされた WAS 環境を利用することができます。以前にその内容をブログで紹介させていただいたこともあり、手順についてはこちらを参照ください:
WebSphere Application Server on Bluemix を使う
↑当時はまだβ版で、その前提での紹介になっていますが、現在は正式サービスになっています。
上記リンク先を見ていただくとわかりますが、このサービスで提供される WAS 環境を利用するには現状、 VPN 接続が必要です。例えば下図でいうと同じネットワーク内にある青い3台のマシンの中で、1台だけが WAS インスタンス(ピンクのマシン)に VPN 接続しているとします。この場合、VPN 接続した1台のマシンは WAS に繋がりますが、他の2台は WAS に繋がりません。なので、本格的に WAS を利用するにはちと不便な環境ということになります:
今回紹介するのはこの不便さをなるべく簡単に解消するために、2つの設定を行うことで、VPN 接続していない2台のマシンからも WAS を使えるようにする、というものです。そしてその2つの設定がこちらです:
・VPN 接続したマシンにルーティングと NAT の設定を行う(要はソフトウェアルータにする)
・VPN 接続していないマシンにルーティング設定を追加する
これによって、VPN 接続していない PC も「ルーティングを1つ追加する」という手順だけで WAS が接続できるようになる、というものです。VPN 接続には専用クライアントの導入なども必要でしたが、ルーティングの追加だけならコマンドを1つ実行するだけでできる(ネットワーク管理者権限などを持っていて、DHCP サーバーの設定を変更できる場合は DHCP の設定だけで、ユーザーは何もしなくてもできる)ので、少しはハードルが下がるかな、と思っています。
以降の説明のため、以下の様な環境であることを想定します:
WAS インスタンスの IP アドレス: 169.45.191.94
VPN 接続するマシンの OS: Linux(CentOS 6)
VPN 接続するマシンの IP アドレス: 192.168.0.104
VPN 接続するマシンのネットワークインターフェース: eth0
VPN 接続するマシンの VPN 接続側のネットワークインターフェース: tun0
VPN 接続するマシンの属するネットワーク: 192.168.0.0/24
VPN 接続しないマシンのネットワークインターフェース: eth0
では実際の設定作業を紹介します。まずは Linux マシンから WAS インスタンスに VPN 接続を行うための OpenVPN を導入します:
そして、この OpenVPN を使って WAS インスタンスに VPN 接続します。VPN 接続に必要な構成ファイルは WAS サービスインスタンスの「管理コンソールにアクセスするには、VPN に接続している必要があります」と書かれた箇所の右側の?マークをクリックした先の画面から「VPN 構成ファイル」と書かれたアイコンをクリックするとダウンロードできます:
Bluemix 画面からダウンロードした構成ファイル一式(wasaas-uss.ovpn を含む zip ファイル)を OpenVPN を導入した Linux 機の /root/openvpn/ 以下に展開し、以下のコマンドを実行します(実行したまま終了する必要があるので、SSH 接続で行う場合は screen などを実行してから行い、最後にデタッチする必要があります):
次に VPN 接続した Linux マシンをソフトウェアルータ化するための設定を行います。そのためには IP フォワーディング機能を有効にする必要があります。以下のコマンドを実行します:
続いて /etc/sysconfig/network ファイルを書き換えます。具体的には以下の最後の3行を書き足します(GATEWAY に何か記述されていた場合は消去しておいてください):
次に IP フォワーディング機能を恒久的に有効にするため、/etc/sysctl.conf ファイルを編集して、net.ipv4.ip_forward = 1 に書き換えます。また sysctl コマンドでこの編集後のファイルを読み込んで有効にします:
最後に iptables を使ってルータ化&NATフィルタリングを行います。上記リンク先の手順で Linux PC を VPN 接続した場合、そのネットワークインターフェイスは tun0 になっているはずです。なので、/etc/sysconfig/iptables を書き換えて目的の接続先(今回の例では 169.45.191.94)への接続は tun0 経由で NAT 接続するように変更し、その上で iptables を有効に(または再起動)します:
これで Linux 機はソフトウェアルータになっているはずです。あとは VPN 接続していない同一ネットワーク上のマシンに対して、「WAS(169.45.191.94) に接続する時は 192.168.0.104 経由で接続する」ことを教えます。Linux/UNIX 系マシンであれば以下のようなコマンドを実行します:
Windows 機の場合は少しコマンドが異なり、以下の様なコマンドを管理者権限で実行します:
これでルーティングの設定も完了しています。試しに VPN 接続していない(上記の route コマンドを実行した)マシンから WAS インスタンスに接続してみましょう。ウェブブラウザを開いて https://(WAS マシンの IP アドレス):9043/ibm/console/ にアクセスするか、または Bluemix のサービス画面から「管理コンソールを開く」をクリックします:
ルーティング設定前であれば「ホストが見つからない」エラーになるはずですが、ホストが見つかった上で「安全な接続ではない」というエラーになるはずです。これはセキュリティ設定のエラーなので、この状態を回避すれば管理コンソールにアクセスできます。FireFox であれば「エラー内容」を書かれたボタンをクリックします:
「例外を追加」します:
以下の様な確認画面が表示されたら「セキュリティ例外を承認」をクリックします:
これで管理コンソールにアクセスできるようになっているはずです!:
正しいユーザー ID とパスワードを入力することで、実際の管理画面にアクセスすることができます。これで VPN 接続しなくても、ルーティング設定だけで Bluemix の WAS インスタンスにアクセスすることができるようになりました。SSH 接続についても同様にできます:
なお、設定したルーティングを元に戻すには、上記で実行した route コマンドの add 部分を del や delete に変えて実行します:
本当は全て DHCP 設定の中で行えるとユーザーとしては楽なのですが、今回紹介した方法であればネットワーク管理者でなくても(1コマンド実行するだけで)設定できて、比較的簡単に実現できると思っています。
WebSphere Application Server on Bluemix を使う
↑当時はまだβ版で、その前提での紹介になっていますが、現在は正式サービスになっています。
上記リンク先を見ていただくとわかりますが、このサービスで提供される WAS 環境を利用するには現状、 VPN 接続が必要です。例えば下図でいうと同じネットワーク内にある青い3台のマシンの中で、1台だけが WAS インスタンス(ピンクのマシン)に VPN 接続しているとします。この場合、VPN 接続した1台のマシンは WAS に繋がりますが、他の2台は WAS に繋がりません。なので、本格的に WAS を利用するにはちと不便な環境ということになります:
今回紹介するのはこの不便さをなるべく簡単に解消するために、2つの設定を行うことで、VPN 接続していない2台のマシンからも WAS を使えるようにする、というものです。そしてその2つの設定がこちらです:
・VPN 接続したマシンにルーティングと NAT の設定を行う(要はソフトウェアルータにする)
・VPN 接続していないマシンにルーティング設定を追加する
これによって、VPN 接続していない PC も「ルーティングを1つ追加する」という手順だけで WAS が接続できるようになる、というものです。VPN 接続には専用クライアントの導入なども必要でしたが、ルーティングの追加だけならコマンドを1つ実行するだけでできる(ネットワーク管理者権限などを持っていて、DHCP サーバーの設定を変更できる場合は DHCP の設定だけで、ユーザーは何もしなくてもできる)ので、少しはハードルが下がるかな、と思っています。
以降の説明のため、以下の様な環境であることを想定します:
WAS インスタンスの IP アドレス: 169.45.191.94
VPN 接続するマシンの OS: Linux(CentOS 6)
VPN 接続するマシンの IP アドレス: 192.168.0.104
VPN 接続するマシンのネットワークインターフェース: eth0
VPN 接続するマシンの VPN 接続側のネットワークインターフェース: tun0
VPN 接続するマシンの属するネットワーク: 192.168.0.0/24
VPN 接続しないマシンのネットワークインターフェース: eth0
では実際の設定作業を紹介します。まずは Linux マシンから WAS インスタンスに VPN 接続を行うための OpenVPN を導入します:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum install --enablerepo=epel openvpn
そして、この OpenVPN を使って WAS インスタンスに VPN 接続します。VPN 接続に必要な構成ファイルは WAS サービスインスタンスの「管理コンソールにアクセスするには、VPN に接続している必要があります」と書かれた箇所の右側の?マークをクリックした先の画面から「VPN 構成ファイル」と書かれたアイコンをクリックするとダウンロードできます:
Bluemix 画面からダウンロードした構成ファイル一式(wasaas-uss.ovpn を含む zip ファイル)を OpenVPN を導入した Linux 機の /root/openvpn/ 以下に展開し、以下のコマンドを実行します(実行したまま終了する必要があるので、SSH 接続で行う場合は screen などを実行してから行い、最後にデタッチする必要があります):
# cd /root/openvpn/ # openvpn /root/openvpn/wasaas-uss.ovpn
次に VPN 接続した Linux マシンをソフトウェアルータ化するための設定を行います。そのためには IP フォワーディング機能を有効にする必要があります。以下のコマンドを実行します:
# echo 1 > /proc/sys/net/ipv4/ip_forward
続いて /etc/sysconfig/network ファイルを書き換えます。具体的には以下の最後の3行を書き足します(GATEWAY に何か記述されていた場合は消去しておいてください):
NETWORKING=yes
HOSTNAME=’localhost.localdomain’
FORWARD_IPV4=yes
GATEWAY=
GATEWAYDEV=
次に IP フォワーディング機能を恒久的に有効にするため、/etc/sysctl.conf ファイルを編集して、net.ipv4.ip_forward = 1 に書き換えます。また sysctl コマンドでこの編集後のファイルを読み込んで有効にします:
# vi /etc/sysctl.conf : : net.ipv4.ip_forward = 1 : : # sysctl -p /etc/sysctl.conf
最後に iptables を使ってルータ化&NATフィルタリングを行います。上記リンク先の手順で Linux PC を VPN 接続した場合、そのネットワークインターフェイスは tun0 になっているはずです。なので、/etc/sysconfig/iptables を書き換えて目的の接続先(今回の例では 169.45.191.94)への接続は tun0 経由で NAT 接続するように変更し、その上で iptables を有効に(または再起動)します:
# vi /etc/sysconfig/iptables *nat :PREROUTING ACCEPT [4:180] :POSTROUTING ACCEPT [2:121] :OUTPUT ACCEPT [2:121] -A POSTROUTING -s 192.168.0.0/24 -d 169.45.191.94/32 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [215:27937] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -o tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # /etc/init.d/iptables start (または restart)
これで Linux 機はソフトウェアルータになっているはずです。あとは VPN 接続していない同一ネットワーク上のマシンに対して、「WAS(169.45.191.94) に接続する時は 192.168.0.104 経由で接続する」ことを教えます。Linux/UNIX 系マシンであれば以下のようなコマンドを実行します:
# route add 169.45.191.94 gw 192.168.0.104 eth0
Windows 機の場合は少しコマンドが異なり、以下の様なコマンドを管理者権限で実行します:
> route add 169.45.191.94 mask 255.255.255.255 192.168.0.104
これでルーティングの設定も完了しています。試しに VPN 接続していない(上記の route コマンドを実行した)マシンから WAS インスタンスに接続してみましょう。ウェブブラウザを開いて https://(WAS マシンの IP アドレス):9043/ibm/console/ にアクセスするか、または Bluemix のサービス画面から「管理コンソールを開く」をクリックします:
ルーティング設定前であれば「ホストが見つからない」エラーになるはずですが、ホストが見つかった上で「安全な接続ではない」というエラーになるはずです。これはセキュリティ設定のエラーなので、この状態を回避すれば管理コンソールにアクセスできます。FireFox であれば「エラー内容」を書かれたボタンをクリックします:
「例外を追加」します:
以下の様な確認画面が表示されたら「セキュリティ例外を承認」をクリックします:
これで管理コンソールにアクセスできるようになっているはずです!:
正しいユーザー ID とパスワードを入力することで、実際の管理画面にアクセスすることができます。これで VPN 接続しなくても、ルーティング設定だけで Bluemix の WAS インスタンスにアクセスすることができるようになりました。SSH 接続についても同様にできます:
なお、設定したルーティングを元に戻すには、上記で実行した route コマンドの add 部分を del や delete に変えて実行します:
# route del 169.45.191.94 gw 192.168.0.104 eth0 > route delete 169.45.191.94 mask 255.255.255.255 192.168.0.104
本当は全て DHCP 設定の中で行えるとユーザーとしては楽なのですが、今回紹介した方法であればネットワーク管理者でなくても(1コマンド実行するだけで)設定できて、比較的簡単に実現できると思っています。
コメント