インフラSEのぼちぼち備忘録

非登録セキスぺの情シスがMicrosoft関連技術(Azure、Windows、Exchange、SystemCenter、SQL、Powershell)を中心とした備忘録を残していきます。圧倒的にインフラよりです。たまにネットワークのことも書きます。※本アカウントの発信内容、その他は所属する組織の見解ではありません。

クライアントHyper-V上とvyOSでネットワーク検証する その5 OSPFで障害テスト

前回までに作ってみOSPF経由の接続でわざとvyOSを落として経路交換やらダウンタイムを見てみましょうかね。

測定用の簡易PowerShell

①ダウンタイム測定の簡易PowerShell

for($i = 0; $i -le 10000; $i++){
curl -Uri http://192.168.20.100 -TimeoutSec 1
    $date = date
    $date.DateTime
    sleep 1  
 }

②経路確認の簡易PowerShell

for($i = 0 ; $i -le 10000 ; $i++){
 tracert -d -w 2 192.168.20.100 
}


f:id:kurone810:20180816234437p:plain


クライアント側ゲートウェイ(プライマリがダウンした場合)

f:id:kurone810:20180816234015p:plain



2018年8月16日 23:46:34頃にダウン
f:id:kurone810:20180816234828p:plain


2018年8月16日 23:47:03頃に回復
f:id:kurone810:20180816235041p:plain


ダウンタイムは約30秒ですね~。


経路も確認
f:id:kurone810:20180816235749p:plain
f:id:kurone810:20180816235721p:plain

f:id:kurone810:20180816235537p:plain

クライアント側ゲートウェイ(プライマリが復旧した場合)

2018年8月17日 0:05:01頃に再度ダウン
f:id:kurone810:20180817000708p:plain

2018年8月17日 0:05:14頃に疎通
f:id:kurone810:20180817000842p:plain

15秒くらいですね~。


経路も確認
f:id:kurone810:20180817001022p:plain

f:id:kurone810:20180817001155p:plain


DC側の対向ゲートウェイ(プライマリがダウンした場合)

f:id:kurone810:20180817001735p:plain


2018年8月17日 0:18:23頃にダウン
f:id:kurone810:20180817002021p:plain

2018年8月17日 0:18:57頃に復旧
f:id:kurone810:20180817002224p:plain

35秒くらいでしょうかね


経路も確認
f:id:kurone810:20180817002313p:plain

f:id:kurone810:20180817002701p:plain

DC側の対抗ゲートウェイ(プライマリが復旧した場合)

2018年8月17日 0:31:39に再度ダウン
f:id:kurone810:20180817003517p:plain

2018年8月17日 0:31:43に復旧
f:id:kurone810:20180817003632p:plain

5秒以内ですか!なるほど。

経路も確認
f:id:kurone810:20180817003734p:plain


f:id:kurone810:20180817003949p:plain




無事にネットワークの自動復旧は確認できたわけですが、

こんなネットワークを組むことはないかもしれませんが、
LAN側のプライマリゲートウェイの復旧時に発生するダウンタイムより
DC対向側のゲートウェイが復旧した際のダウンタイムのほうが短いという気づきがありました。

ちゃんと確認してませんが、vyOSの復旧起動後にVRRPのほうがOSPFより早く復旧し、ゲートウェイに昇格するが、OSPFのルーティング情報の復旧までは引き続きダウンするためかと思います。

と、するとOSPFのルート情報が切り替わる直前でVRRPも復旧するようにチューニングすればダウンタイムを減らせるかもしれません。

うーん奥が深い。

今度は少し構成に手を入れて、ECMPか、vyOSのアウトバウンドの回線負荷分散機能を利用し、待機系ネットワークの有効利用を検証したいです。

クライアントHyper-V × Windows Server コンテナーのIIS × OSPF経由で試してみる

  • ホストVMWindows Server2016 Server Core)にIPを設定
  • NATモードでコンテナを起動(※Dockerイメージは取得済みの前提)
  • ホストVMWindows FireWallを無効化

f:id:kurone810:20180816000052p:plain
※赤枠の中の話。

ホストVMWindows Server2016 Server Core)にIPを設定

PowerShellで以下を実行

New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.20.100" -PrefixLength "24" -DefaultGateway "192.168.20.250"

NATモードでコンテナを起動(※Dockerイメージは取得済みの前提)

docker run --name iis01 -p 80:80 -it microsoft/windowsservercore powershell
|


コンテナ上でIISの役割をインストールします

Install-WindowsFeature Web-Server

f:id:kurone810:20180816002504p:plain

f:id:kurone810:20180816002647p:plain

ホストVMWindows FireWallを無効化

まずコンテナからはCtrl + P+Q でホストに戻ります。
DockerへのIPマスカレードなネットワークの通信制限はホストのWindows FireWallの設定が適用されるため今回は無効化します。

Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled false


右側の端末相当のホストPCのWebブラウザからサービスを確認しました。
f:id:kurone810:20180816004253p:plain
f:id:kurone810:20180816003911p:plain



f:id:kurone810:20180816004620p:plain

クライアントHyper-V上とvyOSでネットワーク検証する その4 OSPFを設定

さてシンプルなOSPFとしてarea 0を設定していきます。

f:id:kurone810:20180812114210p:plain


上記赤枠LAN1号機を一例:OSPFのアドレスを設定

set protocols ospf area 0 network 192.168.10.0/24
set protocols ospf area 0 network 10.0.1.0/24

インターフェースに適用

set interfaces ethernet eth0 ip ospf 
set interfaces ethernet eth1 ip ospf 

各4つのvyOSに設定。


さて、これで最低限の回復性(VRRP + OSPF)は実装できたかなと思います。

設計としては内部-WAN1経由するネットワークをActive
内部-WAN2を経由するネットワークをPassiceとしてスタンバイできてるはずです。


次はDC側にWindows ServerコンテナーでIISを立てて実際にダウンタイムを計ってみたいなと思います。

クライアントHyper-V上とvyOSでネットワーク検証する その3 VRRPを設定

さて、vyosの仮想マシンができたので、実際にネットワークで遊んでいきます。

  • インターフェースのIP設定
  • VRRPの設定

1.インターフェースのIP設定

適当にIPアドレスとインターフェースの採番を決めます。
f:id:kurone810:20180810001454p:plain

conf

f:id:kurone810:20180810001852p:plain


2号機Eth1の一例だけ

set interfaces ethernet eth1 address 10.0.2.2/24

f:id:kurone810:20180810002054p:plain

show interfaces

"+"がついているのはまだコミットされていない。
f:id:kurone810:20180810002642p:plain

commit

※commit後に再確認
f:id:kurone810:20180810002903p:plain


設定の保存もしておきましょう

save

f:id:kurone810:20180810003119p:plain


残りのインターフェースも設定する。

VRRPの設定


LAN(CL)1号機に次の設定追加

set interfaces ethernet eth0 vrrp vrrp-group 10 priority 255
set interfaces ethernet eth0 vrrp vrrp-group 10 sync-group lan-sync
set interfaces ethernet eth0 vrrp vrrp-group 10 virtual-address 192.168.10.250

f:id:kurone810:20180810005648p:plain

LAN(CL)2号機に次の設定追加

set interfaces ethernet eth0 vrrp vrrp-group 10 priority 200
set interfaces ethernet eth0 vrrp vrrp-group 10 sync-group lan-sync
set interfaces ethernet eth0 vrrp vrrp-group 10 virtual-address 192.168.10.250

f:id:kurone810:20180810010217p:plain



f:id:kurone810:20180810011126p:plain

Pingが1発落ちましたが通信は継続。
f:id:kurone810:20180810011201p:plain


再起動完了後に宛先の到達エラーが1発
f:id:kurone810:20180810012058p:plain

結構Hyper-V上だけでも遊べますね!
次はOSPFを設定してみたいです。

ServerCoreなWindows Server 2016をインストールした後にWindowsコンテナーを試してみた備忘録

ノートPC上で作る動的ネットワークのデータセンター側サービス例としてよいサービスはないかなぁ?と考えていたところ
Powershellは好きな割に、ServerCore、Windowsコンテナーを使う機会がなかったので使ってみました~!

とりあえず準備まで。


ServerCoreのインストール


インストール直後にパスワード設定
f:id:kurone810:20180803000846p:plain

f:id:kurone810:20180803000946p:plain

f:id:kurone810:20180803001127p:plain

f:id:kurone810:20180803001627p:plain

PowerShellも起動できますねー
f:id:kurone810:20180803001805p:plain

Windowsコンテナーの導入

では早速Dockerの機能を追加していきます。

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

f:id:kurone810:20180803002619p:plain

Install-Package -Name docker -ProviderName DockerMsftProvider

f:id:kurone810:20180803002901p:plain

Restart-Computer -force

f:id:kurone810:20180803003243p:plain

試しにwindowsservercoreのイメージを取得

f:id:kurone810:20180803004350p:plain


ダウンロードには時間がかかるので寝て待ちましょうかね!

クライアントHyper-V上とvyOSでネットワーク検証する その2

タイトルの通り前回ったvyOSのネットワークで動的ルーティングで遊んでみようと思います。

f:id:kurone810:20180605223842p:plain

仮想ディスクへのインストール

何はともあれ、Hyper-V マネージャーより対象のvyOSが正常に起動していることを確認。
f:id:kurone810:20180721233415p:plain


最初の操作としてはISOメディアからブートしている状態なのでID,Passともvyosでログインし、
仮想ハードディスクにインストールする必要があります。

コマンドは

install system

f:id:kurone810:20180721233929p:plain

ISO DVDのマウント解除

パーティションやらパスワードの設定が聞かれますので進んでいき、インストールを4台にインストールが完了したら、ISOのDVDのマウントを外しておきます。

こういう手間なのはPoweShellで自動化しておくと便利!

VMの停止とISOのアンマウント

Get-VM | Where-Object {$_.Name -like "vy*" -and $_.Name -ne "vyOS_template"} | Stop-VM
Get-VM | Where-Object {$_.Name -like "vy*" -and $_.Name -ne "vyOS_template"} 

Remove-VMDvdDrive "vyOS_LAN1" -ControllerNumber 1 -ControllerLocation 0
Remove-VMDvdDrive "vyOS_LAN2" -ControllerNumber 1 -ControllerLocation 0
Remove-VMDvdDrive "vyOS_DC3" -ControllerNumber 1 -ControllerLocation 0
Remove-VMDvdDrive "vyOS_DC4"-ControllerNumber 1 -ControllerLocation 0

VMの起動

Get-VM | Where-Object {$_.Name -like "vy*" -and $_.Name -ne "vyOS_template"} | Start-VM
Get-VM | Where-Object {$_.Name -like "vy*" -and $_.Name -ne "vyOS_template"}


再度VMを起動後にインストール時に設定したパスワードでログイン出来たら成功!
f:id:kurone810:20180722000506p:plain

show interfaces

f:id:kurone810:20180722000652p:plain

ちゃんとインターフェースが2つ設定されています。

IPとSSHの設定

Hyper-Vマネージャーから操作するのも面倒なので
最低限のIPを割り振ってSSHを有効化したい。

で、ホストコンピューターからアクセスするためには
ホストコンピューター側から仮想スイッチにアクセスするためには、こちらも同セグメントでIPを設定しないと。こっちはPowerShellで簡単にできそう。

とりあえず、vyOS側を設定。

設定モードへ

conf

f:id:kurone810:20180722002007p:plain


IPは一例ですが~。

set interfaces ethernet eth0 address 192.168.10.251/24
set interfaces ethernet eth1 address 10.0.1.1/24

f:id:kurone810:20180722002331p:plain

設定出来たら

commit
save

f:id:kurone810:20180722003135p:plain


次はホスト側へのIP採番。

New-NetIPAddress -InterfaceAlias "vEthernet (内部-WAN-1)" -IPAddress "10.0.1.100" -PrefixLength "24"
New-NetIPAddress -InterfaceAlias "vEthernet (内部-WAN-2)" -IPAddress "10.0.2.100" -PrefixLength "24"
Get-NetAdapter | Where-Object {$_.Name -like "*vEthernet*"}


できたらホストPC側のcmdからPingが通るようになる。
f:id:kurone810:20180722003400p:plain


SSHを有効化して、設定の有効化と保存。

set service ssh

f:id:kurone810:20180722003615p:plain

できましたよ!
f:id:kurone810:20180722003729p:plain
f:id:kurone810:20180722003910p:plain

クライアントHyper-V上とvyOSでネットワーク検証する

最近、子どもの看病やら、自分の体調不良であまりITを触る時間がとれておらず、
流行りの働き方改革を考えないとなぁと思っています。

子育てに力を入れたい⇒ITもこれまで通り検証し続けたい=睡眠時間を削る⇒体調壊した。
うーん。。。やっぱり効率化が必要ですね。


ということで!
"いつでも"、"どこでも"、"短時間で"、ネットワーク系の検証・勉強が可能な環境を整える!

と、考えたところソコソコスペックの高いノートPC上でOSPFやBGPを完結して検証できると便利じゃね?

と思って以下をWindows10のクライアントHyper-Vを利用して短時間で構成できるようにしてみました。

※前提としてHyper-Vの機能を有効化しておく必要があります。

構成の概要

f:id:kurone810:20180605223842p:plain

右側がクライアント、オンプレで左側がDCなどルーティング先のイメージ。

L3はvyOSを利用します。
が、ISOやらイメージファイルをセットすればなんでも使えるよ!

vyOSのコンフィグは自動化しません。
VRRPやOSPF、BGPの検証利用を想定した物理配線の相当まで。

可用性の構成をとったうえで
対象のvyOSのVMをダウンさせて遊ぶといいかなぁ。
なんて。

仮想スイッチの作成

f:id:kurone810:20180605230019p:plain
まずは仮想スイッチを4つ作成しておきます。

New-VMSwitch "内部-LAN-CL" -SwitchType Internal
New-VMSwitch "内部-WAN-1" -SwitchType Internal
New-VMSwitch "内部-WAN-2" -SwitchType Internal
New-VMSwitch "内部-LAN-DC" -SwitchType Internal

vyOS4台分に必要なものを作成してVMを起動する。

パパっとHyper-V用のPowershellの動作確認しながら作ったので・・・(^^)/

せめてISOイメージのpathくらい変数化しとけばよかったなぁとか思いつつ。まだ改善途上の現状提供っす。
f:id:kurone810:20180605232043p:plain

1.VHDファイルを以下のpathに作成します。
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\

2.vyOSは以下のpathのISOを利用しています
D:\OS\vyos-1.1.7-i586-virt.iso


New-VHD -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_LAN1.vhdx" -SizeBytes 20GB

New-VHD -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_LAN2.vhdx" -SizeBytes 20GB

New-VHD -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_DC3.vhdx" -SizeBytes 20GB

New-VHD -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_DC4.vhdx" -SizeBytes 20GB


New-VM -Name "vyOS_LAN1" -MemoryStartupBytes 256MB -VHDPath "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_LAN1.vhdx" -SwitchName "内部-LAN-CL" -Generation 1 -BootDevice CD
Set-VMDvdDrive "vyOS_LAN1" -Path "D:\OS\vyos-1.1.7-i586-virt.iso"

New-VM -Name "vyOS_LAN2" -MemoryStartupBytes 256MB -VHDPath "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_LAN2.vhdx" -SwitchName "内部-LAN-CL" -Generation 1 -BootDevice CD
Set-VMDvdDrive "vyOS_LAN2" -Path "D:\OS\vyos-1.1.7-i586-virt.iso"

New-VM -Name "vyOS_DC3" -MemoryStartupBytes 256MB -VHDPath "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_DC3.vhdx" -SwitchName "内部-LAN-DC" -Generation 1 -BootDevice CD
Set-VMDvdDrive "vyOS_DC3" -Path "D:\OS\vyos-1.1.7-i586-virt.iso"

New-VM -Name "vyOS_DC4" -MemoryStartupBytes 256MB -VHDPath "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_DC4.vhdx" -SwitchName "内部-LAN-DC" -Generation 1 -BootDevice CD
Set-VMDvdDrive "vyOS_DC4" -Path "D:\OS\vyos-1.1.7-i586-virt.iso"


Add-VMNetworkAdapter "vyOS_LAN1" -Name "アダプターWAN-1"
Connect-VMNetworkAdapter  "vyOS_LAN1" -Name "アダプターWAN-1" -SwitchName "内部-WAN-1"
Rename-VMNetworkAdapter "vyOS_LAN1" -Name "ネットワーク アダプター" -NewName "アダプターLAN-CL"


Add-VMNetworkAdapter "vyOS_LAN2" -Name "アダプターWAN-2"
Connect-VMNetworkAdapter  "vyOS_LAN2" -Name "アダプターWAN-2" -SwitchName "内部-WAN-2"
Rename-VMNetworkAdapter "vyOS_LAN2" -Name "ネットワーク アダプター" -NewName "アダプターLAN-CL"


Add-VMNetworkAdapter "vyOS_DC3" -Name "アダプターWAN-1"
Connect-VMNetworkAdapter  "vyOS_DC3" -Name "アダプターWAN-1" -SwitchName "内部-WAN-1"
Rename-VMNetworkAdapter "vyOS_DC3" -Name "ネットワーク アダプター" -NewName "アダプターLAN-DC"

Add-VMNetworkAdapter "vyOS_DC4" -Name "アダプターWAN-2"
Connect-VMNetworkAdapter  "vyOS_DC4" -Name "アダプターWAN-2" -SwitchName "内部-WAN-2"
Rename-VMNetworkAdapter "vyOS_DC4" -Name "ネットワーク アダプター" -NewName "アダプターLAN-DC"


Get-VM | Where-Object {$_.Name -like "vyOS*"} | Start-VM

Get-VM

ネットワーク検証環境がノートPCで完結するのはいいですね~。

どういうパターンを用意しておくと便利かは奥が深いですが、

他にも何パターンか用意しておいて後で少しだけ必要な構成を追加するのがよさそうですね~。

検証がはかどりそうです!

次回は実際の検証について書いていきたい。