Amazon EC2でJuniper vMXを試行錯誤して起動した

2018.01.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。
Juniperのソフトウェアルーター製品、vMXはAWS Marketplaceでライセンス込みのAMIが提供されています。評価にあたりvSRXほどWebでの情報が多くなくEC2で起動するのに苦戦したので、その様子を記録として記します。

検証環境

  • AWSリージョン : 東京
  • vMXのバージョン : 17.2R1
  • AMI : ami-d524cbb3

今回はライセンス込みのAMIを選択しましたが、BYOL(ライセンス持ち込み)でも多分同様です。ライセンス込みでは30日、BYOLでは60日のトライアル期間が設定されますが、インスタンスの起動日時ではなく、Marketplaceでのサブスクリプション購入日から起算されることに注意してください。

vMXはVCP(管理プレーン)とVFP(転送プレーン)で構成されるため他の仮想化プラットフォームでは仮想マシン2台で実行することもありますが、EC2ではインスタンス1台に両方のコンポーネントが実行されます。その分セットアップはシンプルですが、vCPU数などスペック面の考慮が必要です。

ドキュメント

セットアップにあたってのドキュメントとしては以下が公開されています。

Marketplaceのリンクではバージョンが古いので、JuniperのWebサイトで検索するのが良いでしょう。基本的にはこちらの手順に従うのですが、一部不足している部分について後述します。

1. VPCとENIのセットアップ

vMXのインスタンスを実行する前準備として、AWSの仮想ネットワークであるVPCとインスタンスに紐付けるENI(EC2の仮想NIC)を作成しておきます。VPCについて特段の制約はないので、既存と新規作成のどちらでも構いません。今回は既存のVPCを流用しました。

ENIは、VCP用1つ(fxp0)とVFP用1つ(ge-0/0/0)の計2つが最小構成、VFP用のENIを追加して利用するスタイルです。EC2インスタンス作成時に追加するのも良いと思いますが全てのENIで送信元/送信先チェックを無効にする必要があるため、あらかじめ作成しておいてインスタンス作成時にそれらを選択するのがオススメです。以下の要件で作成します。

  • 説明 : 任意の内容
  • サブネット : 2つとも同じでも別でも構いませんが、インスタンスを実行するアベイラビリティゾーンに合わせておく必要があります。今回はap-northeast-1aにしました。
  • プライベートIP : 特に問いません。Elastic IPは必要に応じて割り当てましょう。今回はVCP用の作成後にElastic IPを設定しました。
  • セキュリティグループ : VCP用はこのあと接続するためのSSHを許可するグループ、VFP用はvMXの用途に合わせて任意のセキュリティグループを割り当てます。

識別しやすいよう、それぞれ作成後にvmx-management(VCP用)、vmx-wan(VFP用)とNameタグを設定しました。前述の送信元/送信先チェックをそれぞれのENIで無効にします。

2. EC2インスタンスの作成

続いてvMXを実行するEC2インスタンスを作成、起動します。インスタンスの作成ウィザードを開き、AMI選択画面で[AWS Marketplace]を選択、検索ウィンドウに「vmx」を入力してvMXを表示します。BYOLかライセンス込みのどちらかを選択しましょう。

利用料金を確認し、サブスクリプションを購入してウィザードを進めます。インスタンスタイプはm4.xlargeが最小、パフォーマンスモードで動かすのであればもう少し大きいタイプを選択しましょう。

インスタンスの設定では、[VPC]および[サブネット]をENIと同じVPC、サブネットをそれぞれ選択します。すると画面下方に[ネットワークインターフェース]という項目が表示されるので、[デバイスの追加]ボタンを押下しつつ、eth0eth1それぞれの[ネットワークインターフェース]列から作成したENIを選択します。

残りの設定は既定のままでOKです。インスタンスの起動後SSHで接続出来るようになるまで最長で25分ほどかかるらしいので、ときおりSSH接続を試しつつ気長に待ちましょう。

3. SSHで接続

しばらく待ったらSSHで接続しましょう。ドキュメントにはrootユーザーと記載されているのですが、手元で試す限りではパスワード認証が通らずログインできませんでした。MarketplaceページのUsageで案内されているjnprユーザーでログインしましょう。

$ ssh jnpr@<VCP用ENIに割り当てたEIP>
The authenticity of host '<VCP用ENIに割り当てたEIP>' can't be established.
ECDSA key fingerprint is SHA256:2jFSK8CmNjQNS4IMcNvjJ+ovIGvSDc+TqCiKnyh4WV8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '<VCP用ENIに割り当てたEIP>' (ECDSA) to the list of known hosts.
--- JUNOS 17.2R1.13 Kernel 64-bit  JNPR-10.3-20170523.350481_build
jnpr@ip-XX-XX-XX-XX>

ログインできました!初期状態ではVFP用ENIのインターフェースには設定が無いので、導通確認のため以下のコマンドでPrivate IPを割り当ててみましょう。

jnpr@ip-XX-XX-XX-XX> configure
Entering configuration mode

[edit]
jnpr@ip-XX-XX-XX-XX# set groups global interfaces ge-0/0/0 unit 0 family inet address YY.YY.YY.YY/YY(VFP用ENIのPrivate IP)

[edit]
jnpr@ip-XX-XX-XX-XX# commit
commit complete

[edit]
jnpr@ip-XX-XX-XX-XX# exit
Exiting configuration mode
jnpr@ip-XX-XX-XX-XX> ping source YY.YY.YY.YY ZZ.ZZ.ZZ.ZZ(任意の到達できるIPアドレス)
PING ZZ.ZZ.ZZ.ZZ (ZZ.ZZ.ZZ.ZZ): 56 data bytes
64 bytes from ZZ.ZZ.ZZ.ZZ: icmp_seq=0 ttl=255 time=32.036 ms
64 bytes from ZZ.ZZ.ZZ.ZZ: icmp_seq=1 ttl=255 time=5.365 ms
64 bytes from ZZ.ZZ.ZZ.ZZ: icmp_seq=2 ttl=255 time=3.860 ms
^C
--- ZZ.ZZ.ZZ.ZZ ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 3.860/13.754/32.036/12.942 ms

jnpr@ip-XX-XX-XX-XX>

pingで通信できていますね。

まとめ

Juniper vMXをEC2インスタンスで起動する様子をご紹介しました。ひっかかったところをまとめたつもりですので、vMXを評価する誰かの役に立てば幸いです。