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 を利用するにはちと不便な環境ということになります:
2016091201


今回紹介するのはこの不便さをなるべく簡単に解消するために、2つの設定を行うことで、VPN 接続していない2台のマシンからも WAS を使えるようにする、というものです。そしてその2つの設定がこちらです:
 ・VPN 接続したマシンにルーティングと NAT の設定を行う(要はソフトウェアルータにする)
 ・VPN 接続していないマシンにルーティング設定を追加する
2016091202

これによって、VPN 接続していない PC も「ルーティングを1つ追加する」という手順だけで WAS が接続できるようになる、というものです。VPN 接続には専用クライアントの導入なども必要でしたが、ルーティングの追加だけならコマンドを1つ実行するだけでできる(ネットワーク管理者権限などを持っていて、DHCP サーバーの設定を変更できる場合は DHCP の設定だけで、ユーザーは何もしなくてもできる)ので、少しはハードルが下がるかな、と思っています。

以降の説明のため、以下の様な環境であることを想定します:
2016091203


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 構成ファイル」と書かれたアイコンをクリックするとダウンロードできます:
2016091501


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 のサービス画面から「管理コンソールを開く」をクリックします:
2016091201


ルーティング設定前であれば「ホストが見つからない」エラーになるはずですが、ホストが見つかった上で「安全な接続ではない」というエラーになるはずです。これはセキュリティ設定のエラーなので、この状態を回避すれば管理コンソールにアクセスできます。FireFox であれば「エラー内容」を書かれたボタンをクリックします:
2016091202


「例外を追加」します:
2016091203


以下の様な確認画面が表示されたら「セキュリティ例外を承認」をクリックします:
2016091204


これで管理コンソールにアクセスできるようになっているはずです!:
2016091205


正しいユーザー ID とパスワードを入力することで、実際の管理画面にアクセスすることができます。これで VPN 接続しなくても、ルーティング設定だけで Bluemix の WAS インスタンスにアクセスすることができるようになりました。SSH 接続についても同様にできます:
2016091206


なお、設定したルーティングを元に戻すには、上記で実行した 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コマンド実行するだけで)設定できて、比較的簡単に実現できると思っています。