クラウドとマレーシアでぐだぐだする日記

いい感じのITエンジニアでいるためにアウトプットします

仮想SRX Vagrantでの事前設定(第1回JunOSファイアーウォール設定を学ぶ)

こんにちは、シゲルです。あなたの好きなファイアウォール製品は何でしょうか?

自分はあまり好き嫌いはないですが割と自分の仕事でかかわる機会のあったのがJuniperのSRXです。SSGシリーズの終売、EOLが発表されリプレースの時期に後継機としてお客様先へ納入した思い出があります。

CiscoのルータはGNS3でシミュレーションできるようになってますがSRXというかJunOSもお家で気軽に動かせるようにしたいと思いvSRXという仮想ファイアウォールを動かせる方法を調べてみました。

仮想環境で構築を行う場合の注意する事

はじめてSRXを設定するときに直接接続したインターフェースにPingが飛ばず、訳が分からず絶望したりするのはSRXあるあるでしょうか??これから扱う仮想版のvSRXも同じことが発生します。

仮想化した環境で構築を行う場合、物理のネットワーク機器を扱う場合とは異なり結線が見えません。当たり前のようですがコレがなかなか厄介で時々ハマって物理的なケーブルやLEDランプが見えたらなぁぁぁぁとかコンソール接続ぅぅぅとか思う時があります。

ドハマリを避けるにはネットワーク図を見ながら結線を想像して作業を行うこと、リンクに関するステータス確認を行うことが地味ですが一番効果的かなーと考えています。

実行環境

自分の場合は古めのデスクトップPCで動かしています。

MacでもLinuxでもVirtualBoxが使えれば問題なく動くはずです。

VirtualBoxのインストール

仮想化環境としてVirtualBoxを使います。VirtualBoxの公式ページからダウンロードしてインストールしておきます。

Vagrantのインストール

VirtualBoxと組み合わせて使う仮想化環境構築ツールとしてVagrantを使います。Vagrantの公式ページからダウンロードしてインストールしておきます。

Vagrantプラグインのインストール

Vagrantで仮想ファイアウォールvSRXを動かすためにVagrantプラグインをインストールします。コマンドはこちらです。

コマンド

PS D:\vsrxtest> vagrant plugin install vagrant-junos
PS D:\vsrxtest> vagrant plugin install vagrant-host-shell

私の場合はホストとゲストOSのGuestAdditionsのバージョンが異なる際に、ゲストOSのGuest Additionsのバージョンをアップデートしてくれる”vagrant-vbguest”プラグインを入れていますがここら辺はお好みで。

構築したいネットワーク

Juniper vSRXを絡めてこんな感じのネットワークを構築します。家庭用のブロードバンドルータと同じような使い方です。動作確認用のクライアント(Ubuntu16)の構築も後でVagrantで行います。通常では物理のSRXの場合だとge-0/0/0が外向きに接続されるインターフェースとなりますがここではge-0/0/2を外向きのインターフェースとして使っています。

f:id:shige_shigetan:20180316012120j:plain

Vagrantfileの作成

Vagrantfileの作成を作成します。仮想ファイアウォールを"vsrx1"として、確認用PCを"Ubuntu16"として設定しています。

#
# Juniper lab 
#
# ge-0/0/0.0: management interface
# ge-0/0/1.0 - ge-0/0/7.0: user interfaces

Vagrant.configure(2) do |config|
  config.vm.box = "juniper/ffp-12.1X47-D15.4"


  config.vm.define "vsrx1" do |vsrx1|
    vsrx1.vm.host_name = "vsrx1"
    vsrx1.vm.network "private_network",
                      ip: "10.0.0.1",
                      virtualbox__intnet: "internalnet"

    vsrx1.vm.network "public_network"
    vsrx1.vm.network "private_network", ip: "192.168.33.241"

  end

# for tect client 
  config.vm.define "ubuntu16" do |server|
    server.vm.box = "bento/ubuntu-16.04"
    
    server.vm.host_name = "ubuntu16"
    server.vm.network "private_network", 
                      ip: "10.0.0.2",    
                      virtualbox__intnet: "internalnet"
    
    server.vm.network "private_network", ip: "192.168.33.242"

  end
end

この設定でSRX側はこのようになります。

  • 10.99.34.4   確認用のUbuntuと同じネットワークでge-0/0/1.0に設定される   
  • public_network PCのネットワークアダプタをブリッジ。ge-0/0/2.0に設定  

設定ファイルに書いた順番でge-0/0/1.0、ge-0/0/2.0、ge-0/0/3.0と設定されます。

この設定で確認PC側はこのようになります。

  • 192.168.33.241 ホストPCから接続用
  • 10.99.34.5  vSRXと同じネットワーク

確認用のUbuntu16についても、localhostとポート番号指定でssh接続することができますが固定IPとポート22番で接続できるように変更しています。

仮想ファイアウォールと確認用クライアントの起動

Vagrantfileを置いたフォルダで以下のコマンドを実行します。起動にしばらく時間がかかりますのでゆっくり待ちましょう。

コマンド

PS D:\vsrxtest>vagrant up 

上のVagrantfileでコマンドを実行した場合、このようにnetwork bridgeを選択するポイントで起動がとまります。中段の1)~3)のネットワークアダプターの内から適切なものを一つを選びます。今回は"1"を入力してエンターを押します。毎回起動のたびに選択するのは面倒なので後ほど設定を固定化するためVagrantfileを編集しますが、ここの記述はPCのネットワークアダプタ事に違うので注意が必要です。

実行結果

Bringing machine 'vsrx1' up with 'virtualbox' provider...
Bringing machine 'testsrv' up with 'virtualbox' provider...
==> vsrx1: Checking if box 'juniper/ffp-12.1X47-D15.4' is up to date...
==> vsrx1: Clearing any previously set forwarded ports...
==> vsrx1: Clearing any previously set network interfaces...
==> vsrx1: Available bridged network interfaces:
1) Intel(R) PRO/1000 PT Dual Port Server Adapter #2
2) Intel(R) Ethernet Connection (2) I218-V
3) Hyper-V Virtual Ethernet Adapter
==> vsrx1: When choosing an interface, it is usually the one that is
==> vsrx1: being used to connect to the internet.
    vsrx1: Which interface should the network bridge to?

外向けの通信用のネットワークアダプターの固定化

外向けの通信用のネットワークアダプターを固定化するためにVagrantfileを変更します。Vagrant upで起動したときに出てきたネットワークアダプタ名"Intel(R) PRO/1000 PT Dual Port Server Adapter #2"をそのままコピーします。これで次回の起動の時はブリッジ用のネットワークアダプタが選択された状態で起動してきます。

# 変更前
    vsrx1.vm.network "public_network"

# 変更後
    vsrx1.vm.network "public_network", bridge: 'Intel(R) PRO/1000 PT Dual Port Server Adapter #2'

仮想ファイアウォールと確認用クライアントの停止

仮想ファイアウォールとクライアントと停止するためにはVagrantfileを置いたフォルダで以下のコマンドを実行します。起動させたままホストPCの電源を切ったときに仮想マシンが壊れた場合がありました、忘れずに実行しましょう。

コマンド

PS D:\vsrxtest>vagrant halt 

実行結果

==> testsrv: Attempting graceful shutdown of VM...
==> vsrx4: Attempting graceful shutdown of VM...

以上です。次回に続きます。