2015年3月19日木曜日

vyosをOpenStackのGlanceにimageファイル(QCOW2)で登録する方法

■目的
 vyosをKVM環境で利用したいので、KVMをCompute-nodeにしたOpenStack環境からデプロイできるようにvyosをイメージファイルにしてGlance上に登録してみる。

■参考にさせて頂いたサイト
http://wiki.vyos-users.jp/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8

■内容
上記参考サイトからvyosをダウンロードする
vyosはLiveCDでの提供なので以下のやり方でイメージ化する

①KVMにvyosのisoファイルを/tmpに持ってくる

②空のイメージファイル(仮想ディスク)を作成

qemu-img create -f qcow2 /tmp/vyos1.1.4-base.img 100G

③末尾のXMLファイルを/etc/libvirt/qemu/に設置し、これを使ってvyosをインストールする
virsh create /etc/libvirt/qemu/vyos-base_ver1.1.4.xml

④vnc-clientを使ってvyosが起動している上記SVに接続し
http://wiki.vyos-users.jp/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89

を参考にしながらvyosをインストールしていく。
#install image からを実行

⑤vyosのインストールが完了したら最後にpoweroffする。

これで/tmp/内にvyosがインストールされたイメージファイルが出来た。
これをこのままglanceに登録してもよいが容量が大きいので
qemu-img convert -O qcow2 -c vyos1.1.4-base.img vyos1.1.4-base_1.img

で圧縮する

後は圧縮したこの
vyos1.1.4-base_1.img

ファイルをOpenStackのコントローラーにコピーして

. /root/keystonerc_admin
してから

glance image-create --name vyos1.1.4 --disk-format qcow2 --container-format bare --file vyos1.1.4-base_1.img --is-public True --human-readable --progress

エラー等がなければこれでこれでOpenStack上にイメージとして登録されたので後はOpenStackからイメージ起動でvyosが起動できるようになる。

vyos-base_ver1.1.4.xml
<domain type='kvm'>
  <name>vyos1.1.4-base</name>
  <uuid></uuid>
  <memory>4194304</memory>
  <currentMemory>4194304</currentMemory>
  <vcpu>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc'>hvm</type>
    <boot dev='cdrom'/>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='localtime'>
    <timer name='pit' tickpolicy='delay'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/tmp/vyos1.1.4-base.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/tmp/vyos-1.1.4-1-amd64.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <mac address='ac:16:01:24:21:02'/>
      <source bridge='brq56850f8c-aa'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5988' autoport='no' listen='0.0.0.0' keymap='ja' passwd='password'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
    </video>
  </devices>
</domain>

■終わり
VMwareであればisoファイルを仮想ディスクにマウント出来るのでそういう点ではやはり楽だなと思いました。
次はvyosについて記載したいと思う。

私の体験が誰かの生産性向上に役立っていただけることを祈って

2015年3月15日日曜日

HPのサーバーでSmart Storage Administratorを使ってみる

■目的
 HPのサーバーでHDD構成を変えてOSを入れ替えたいので、Smart Storage Administratorを使ってみる。
今回はサーバーを新規に作る想定で進めて行きたいと思う。

■前提条件
・サーバーはHP DL360Gen8
・HDDは300GのSAS×3本
・今回はRAIDを組まずに構成する

■内容
 #記事内画像はところどころボカシを入れています。
まずはサーバーの電源を入れ


この画面でF5を押してしばらく待っていると以下の画面が出てくる

左のメニューから以下の項目に行くと搭載されているHDDの情報が見える。

RAIDを組む場合は複数のHDDを選択してRAID1,5等を組むことが出来る。
#上記を行う場合はスペア用は最初選択しないで後からスペア用にする。

今回は300G×3を900Gとして使いたいので、各HDD毎にRAID0の設定をする。
1つづつ選択し以下のように設定を行う



3台とも設定を行ったら以下の状態になる。




たまにLogicalドライブの欄が空白の表示になることがあるが、正常に設定できているので問題ない。
後は再起動してOSのインストールを始めていく。



■終わり
 かなりわかりやすいツールの印象を受けた。
この後OSインストールの際にLVMを組んで設定していく。
実際RAID5とか組んでHDD障害とか起きた時にちゃんと復旧できるのか・・・個人的には疑問なのと壊れたらまたOSから入れなおせば良いので今回はRAID組まない構成とした。

私の体験が誰かの生産性向上に役立っていただけることを祈って




MTU/MSSサイズについて

■目的
 PPPoE接続等を行う上で抑えておきたいMTU/MSSサイズについて記載する


■内容




















上記を同僚から貰った。
値が間違っている可能性もあるのであくまで参考程度として抑えて頂きたい。

■MTUとは
http://e-words.jp/w/MTU.html
MTUとは、通信機器などが一度に送信できる最大のデータ量。
また、その設定値。
送りたいデータの量がMTUを超える場合はMTUごとに分割して複数回に分けて送信する。

通常のSW等を経由したEthernet接続(レイヤー2層)では1500がMTU値になる。
しかしPPPoE接続等を行う場合、カプセル化用のヘッダー(暗号化等も含む)が付くため、その分を引いてあげた値を機器に側に設定することでスムーズにフレーム送信を行うことが出来るようになる。

■MSSとは
http://e-words.jp/w/MSS.html
TCPで通信を行う際に指定する、データの送信単位(セグメント)の最大値

上記の組み合わせで暗号強度やトンネリングを使った場合に、フラグメントせずに一度に送ることが出来るMSSサイズを最適な値に指定することでスループットの向上を行うことが出来る。

Netscreen等の機器は割りとこの辺りを柔軟に対応してくれるが、Cisco機器等の場合かなりシビアにこの辺の設定が効いてくるためPPPoE接続を行ったGREトンネル等を行う場合は注意が必要
MSSの値が少しでも適切ではないと通信出来ない状態になったりする。
またMTUの値が適切ではないとフラグメントが多発してCPU負荷が高騰したりする。

■終わり
 MTUやMSS等の理解は難しい。今現在私も雰囲気でしかわかっていない。
Path MTU Discovery 等による自動検出を使う場合はICMPを通しておくこともポイント
私の体験が誰かの生産性向上に役立っていただけることを祈って

ScreenOSを使った拠点間VPNの設定方法まとめ(本社:グローバルIP、拠点:PPPoE固定グローバルIPの場合)

■目的
 前回同様にScreenOSを使った拠点間VPN構成のまとめを作成する
今回は本社側がグローバルIPを持ったSSG、拠点側もPPPoEを使った固定グローバルIPを持ったSSGの構成と
最も安心感のある構成

■前提条件
センター側
・SSG320
・ScreenOS:6.2
・NSRPを使った冗長構成
・固定グローバルIPをインターフェースに持っている

拠点側
・SSG5
・ScreenOS:6.2
・シングル構成
・PPPoEを終端している。固定グローバルIP

■内容
今回は最もオーソドックスなサイトtoサイトの接続方法となる



■センター側コンフィグ
set interface ethernet0/2 ip 100.100.100.100/24 

① 
set zone id 103 "VPN_TEST3"
set zone "VPN_TEST3" tcp-rst


set interface "tunnel.3" zone "VPN_TEST3" 
set interface tunnel.3 ip unnumbered interface ethernet0/0 

③★ポイント 
set ike gateway "TEST3-GW" address 3.3.3.3 Main outgoing-interface "ethernet0/2" preshare "xxxxxxx" proposal "pre-g2-3des-sha" 
set ike gateway "TEST3-GW" heartbeat hello 1 
set ike gateway "TEST3-GW" heartbeat reconnect 60 


set vpn "TEST3-IKE" gateway "TEST3--GW" replay tunnel idletime 0 proposal "g2-esp-3des-sha" 
set vpn "TEST3-IKE" monitor rekey 
set vpn "TEST3-IKE" id 0x3 bind interface tunnel.3 
set vpn "TEST3-IKE" proxy-id check 
set vpn "TEST3-IKE" proxy-id local-ip 0.0.0.0/0 remote-ip 0.0.0.0/0 "ANY"  

⑤  
set route 10.1.3.0/24 interface tunnel.3

センター側のコンフィグは前回とほぼ同様
ポイントは③のところでPhase1-GWの設定がmainモードになっているところ

------------------------------------------------------------------------------

■拠点側コンフィグ

★ポイント
set interface ethernet0/9 ip 3.3.3.3/24 ←WAN側 今回はPPPoEで動的に持ってきたグローバルIP
set interface bgroup0/0 ip 10.1.2.254/24 ←LAN側
set flow all-tcp-mss 1304

set pppoe name "TEST3_PPOE"
set pppoe name "TEST3_PPOE" username "aaaaaaa@bbbbb@cccccc" password "dddddddd"
set pppoe name "TEST3_PPOE" interface ethernet0/9


set zone id 103 "VPN3"
set zone "VPN3" tcp-rst


set interface "tunnel.3" zone "VPN3"
set interface tunnel.3 ip unnumbered interface bgroup0/0
set interface tunnel.3 mtu 1442

③ポイント
set ike gateway "TEST3-GW" address 100.100.100.100 Main outgoing-interface "ethernet0/9" preshare "xxxxxxx" proposal "pre-g2-3des-sha"



set vpn "TEST3-IKE" gateway "TEST3-GW" replay tunnel idletime 0 proposal "g2-esp-3des-sha" 
set vpn "TEST3-IKE" monitor source-interface ethernet0/0 destination-ip 172.16.1.1 rekey
set vpn "TEST3-IKE" id 0x3 bind interface tunnel.3


set route 10.0.0.0/8 interface tunnel.3
set route 172.16.0.0/12 interface tunnel.3
set route 192.168.0.0/16 interface tunnel.3


センター側同様③のところでPhase1-GWの設定がmainモードになっているところがポイント

------------------------------------------------------------------------------

上記まででVPNが正常に張れるようになる筈

最後にポリシーの設定を忘れないようにする

もしVPNがうまく張れない場合はログを見ながらPhase1を突破しているか等を確認しながら切り分けしていく。


■終わり
この構成が割りと多い構成
今後SSG-Cisco間でのVPN設定や、VPNのトンネルインターフェースを使ったアドレス変換等を掲載予定

私の体験が誰かの生産性向上に役立っていただけることを祈って

2015年3月14日土曜日

ScreenOSを使った拠点間VPNの設定方法まとめ(本社:グローバルIP、拠点:PPPoE動的グローバルIPの場合)

■目的
 前回同様にScreenOSを使った拠点間VPN構成のまとめを作成する
今回は本社側がグローバルIPを持ったSSG、拠点側はPPPoEを使った動的グローバルIPを持ったSSGの構成とする

■前提条件
センター側
・SSG320
・ScreenOS:6.2
・NSRPを使った冗長構成
・固定グローバルIPをインターフェースに持っている

拠点側
・SSG5
・ScreenOS:6.2
・シングル構成
・PPPoEを終端している。しかし固定グローバルIPを持っていない。

■内容
今回拠点側は動的グローバルIPアドレスのため、電源を落としたりするとグローバルアドレスが変わってしまう可能性がある。そのため前回同様Aggressiveモードでの接続を行う。
拠点側からの接続でVPNを構成するのでローカル認証を行う。






センター側コンフィグ
set interface ethernet0/2 ip 100.100.100.100/24

set zone id 102 "VPN_TEST2"
set zone "VPN_TEST2" tcp-rst 

set interface "tunnel.2" zone "VPN_TEST2"
set interface tunnel.2 ip unnumbered interface ethernet0/0


set ike gateway "TEST2-GW" address 0.0.0.0 id "TEST2-VPN" Aggr local-id "TEST2-VPN" outgoing-interface "ethernet0/2" preshare "xxxxxxx" proposal "pre-g2-3des-sha"
set ike gateway "TEST2-GW" nat-traversal udp-checksum
set ike gateway "TEST2-GW" nat-traversal keepalive-frequency 5
set ike gateway "TEST2-GW" heartbeat hello 1
set ike gateway "TEST2-GW" heartbeat reconnect 60


set vpn "TEST2-IKE" gateway "TEST2-GW" replay tunnel idletime 0 proposal "g2-esp-3des-sha" 
set vpn "TEST2-IKE" monitor source-interface ethernet0/0 destination-ip 10.1.2.254 rekey
set vpn "TEST2-IKE" id 0x1 bind interface tunnel.2
set vpn "TEST2-IKE" proxy-id check
set vpn "TEST2-IKE" proxy-id local-ip 0.0.0.0/0 remote-ip 0.0.0.0/0 "ANY" 



set route 10.1.2.0/24 interface tunnel.2

センター側のコンフィグは前回と全くの同様

------------------------------------------------------------------------------

■拠点側コンフィグ
★ポイント
set interface ethernet0/9 ip 2.2.2.2/24 ←WAN側 今回はPPPoEで動的に持ってきたグローバルIP
set interface bgroup0/0 ip 10.1.2.254/24 ←LAN側
set flow all-tcp-mss 1304

set pppoe name "TEST2_PPOE"
set pppoe name "TEST2_PPOE" username "aaaaaaa@bbbbb@cccccc" password "dddddddd"

set pppoe name "TEST2_PPOE" interface ethernet0/9


set zone id 102 "VPN2"
set zone "VPN2" tcp-rst


set interface "tunnel.2" zone "VPN2"
set interface tunnel.2 ip unnumbered interface bgroup0/0
set interface tunnel.2 mtu 1442


set ike gateway "TEST2-GW" address 1.1.1.1 Aggr local-id "TEST1-VPN" outgoing-interface "ethernet0/9" preshare "xxxxxxxx" proposal "pre-g2-3des-sha"
set ike gateway "TEST2-GW" nat-traversal
set ike gateway "TEST2-GW" nat-traversal udp-checksum
set ike gateway "TEST2-GW" nat-traversal keepalive-frequency 5
set ike respond-bad-spi 1
set ike gateway "TEST2-GW" heartbeat reconnect 60
set ike ikev2 ike-sa-soft-lifetime 60
unset ike ikeid-enumeration
unset ike dos-protection
unset ipsec access-session enable
set ipsec access-session maximum 5000
set ipsec access-session upper-threshold 0
set ipsec access-session lower-threshold 0
set ipsec access-session dead-p2-sa-timeout 0
unset ipsec access-session log-error
unset ipsec access-session info-exch-connected
unset ipsec access-session use-error-log


set vpn "TEST2-IKE" gateway "TEST2-GW" replay tunnel idletime 0 proposal "g2-esp-3des-sha"
set vpn "TEST2-IKE" monitor source-interface bgroup0/0 destination-ip 172.16.1.1 rekey
set vpn "TEST2-IKE" id 0x2 bind interface tunnel.2
set vpn "TEST2-IKE" proxy-id check
set vpn "TEST2-IKE" proxy-id local-ip 0.0.0.0/0 remote-ip 0.0.0.0/0 "ANY"


set route 10.0.0.0/8 interface tunnel.2
set route 172.16.0.0/12 interface tunnel.2
set route 192.168.0.0/16 interface tunnel.2

①~⑤の変更点は前回同様変更無し
重要なのは事前のPPPoE設定によってWAN側のインターフェースがグローバルIPになっているところのみ

------------------------------------------------------------------------------

上記まででVPNが正常に張れるようになる筈
最後にポリシーの設定を忘れないようにする

もしVPNがうまく張れない場合はログを見ながらPhase1を突破しているか等を確認しながら切り分けしていく。

■終わり
今回はSSGでPPPoEを終端しているので割と安心感のある構成
ちゃんとPPPoEの情報を入れれば特に問題はない。
PPPoE接続をする場合はデフォルトルートは自動的に設定が入るのでルーティング周りにも気をつけよう

私の体験が誰かの生産性向上に役立っていただけることを祈って

ScreenOSを使った拠点間VPNの設定方法まとめ(本社:グローバルIP、拠点:プライベートIPの場合)

■目的
 いまさらながらScreenOSを使った拠点間VPN構成のまとめを作成する
今回は本社側がグローバルIPを持ったSSG、拠点側はプライベートIPを持ったSSGの構成とする

■前提条件
センター側
・SSG320
・ScreenOS:6.2
・NSRPを使った冗長構成
・固定グローバルIPをインターフェースに持っている

拠点側
・SSG5
・ScreenOS:6.2
・シングル構成
・上位でグローバルIPを終端している装置があるのでインターフェースはプライベートアドレスのみ

■内容
今回拠点側はプライベートアドレスしか持っていないため、Aggressiveモードでの接続を行う。
拠点側からの接続でVPNを構成するのでローカル認証を行う。

イメージ図)


センター側コンフィグ
set interface ethernet0/2 ip 100.100.100.100/24

set zone id 101 "VPN_TEST1"
set zone "VPN_TEST1" tcp-rst 


set interface "tunnel.1" zone "VPN_TEST1"
set interface tunnel.1 ip unnumbered interface ethernet0/0


set ike gateway "TEST1-GW" address 0.0.0.0 id "TEST1-VPN" Aggr local-id "TEST1-VPN" outgoing-interface "ethernet0/2" preshare "xxxxxxx" proposal "pre-g2-3des-sha"
set ike gateway "TEST1-GW" nat-traversal udp-checksum
set ike gateway "TEST1-GW" nat-traversal keepalive-frequency 5
set ike gateway "TEST1-GW" heartbeat hello 1
set ike gateway "TEST1-GW" heartbeat reconnect 60


set vpn "TEST1-IKE" gateway "TEST1-GW" replay tunnel idletime 0 proposal "g2-esp-3des-sha" 
set vpn "TEST1-IKE" monitor source-interface ethernet0/0 destination-ip 10.1.1.254 rekey
set vpn "TEST1-IKE" id 0x1 bind interface tunnel.1
set vpn "TEST1-IKE" proxy-id check
set vpn "TEST1-IKE" proxy-id local-ip 0.0.0.0/0 remote-ip 0.0.0.0/0 "ANY" 



set route 10.1.1.0/24 interface tunnel.1


①はZONEの設定
②でZONEをTunnelインターフェースに割り当てる
 TunnelインターフェースをunnumberdにしてLAN側のインターフェースにバインドさせる
③がPhase1のVPN設定、ここがキモ
 ポイントは宛先SSG5はグローバルアドレスを持たないので0.0.0.0 Aggrモードを指定している
 local-idを指定し、グローバルアドレス側のインターフェースをoutgoingに指定
 後はpreshareキーと暗号化方式を選択する。
 その他nat-traversal指定も行う
④Phase2のVPN設定
 ③で作ったGWを指定する。
  set vpn "TEST1-IKE" id 0x1 bind interface tunnel.1 の0x1はIKE設定の数だけ自動で増えていく値なので
  WEBから作成すると自動的に割り当てられる
  Proxy-IDを使ったチェックの設定をいれる
⑤Tunnelをネクストホップに指定した拠点側アドレス向けルーティング設定

------------------------------------------------------------------------------

■拠点側コンフィグ
set interface ethernet0/9 ip 192.168.54.220/24 ←WAN側
set interface bgroup0/0 ip 10.1.1.254/24 ←LAN側

set zone id 101 "VPN1"
set zone "VPN1" tcp-rst


set interface "tunnel.1" zone "VPN"
set interface tunnel.1 ip unnumbered interface bgroup0/0
set interface tunnel.1 mtu 1442


set ike gateway "TEST1-GW" address 1.1.1.1 Aggr local-id "TEST1-VPN" outgoing-interface "ethernet0/9" preshare "xxxxxxxx" proposal "pre-g2-3des-sha"
set ike gateway "TEST1-GW" nat-traversal
set ike gateway "TEST1-GW" nat-traversal udp-checksum
set ike gateway "TEST1-GW" nat-traversal keepalive-frequency 5
set ike respond-bad-spi 1
set ike gateway "TEST1-GW" heartbeat reconnect 60
set ike ikev2 ike-sa-soft-lifetime 60
unset ike ikeid-enumeration
unset ike dos-protection
unset ipsec access-session enable
set ipsec access-session maximum 5000
set ipsec access-session upper-threshold 0
set ipsec access-session lower-threshold 0
set ipsec access-session dead-p2-sa-timeout 0
unset ipsec access-session log-error
unset ipsec access-session info-exch-connected
unset ipsec access-session use-error-log


set vpn "TEST1-IKE" gateway "TEST1-GW" replay tunnel idletime 0 proposal "g2-esp-3des-sha"
set vpn "TEST1-IKE" monitor source-interface bgroup0/0 destination-ip 172.16.1.1 rekey
set vpn "TEST1-IKE" id 0x1 bind interface tunnel.1
set vpn "TEST1-IKE" proxy-id check
set vpn "TEST1-IKE" proxy-id local-ip 0.0.0.0/0 remote-ip 0.0.0.0/0 "ANY"


set route 10.0.0.0/8 interface tunnel.1
set route 172.16.0.0/12 interface tunnel.1
set route 192.168.0.0/16 interface tunnel.1


①はZONEの設定
②でZONEをTunnelインターフェースに割り当てる
 TunnelインターフェースをunnumberdにしてLAN側のインターフェースにバインドさせる
 拠点側でPPPoE回線を利用している場合mtu値を設定しておいた方が良い
③がPhase1のVPN設定とデフォルトで入るそれっぽい設定
 1.1.1.1はセンター側のグローバルIPアドレス
 後はセンター側同様
 Aggrモードとセンター側と同じlocal-idを指定し、グローバルアドレス側のインターフェースをoutgoingに指定
 センター側と同じpreshareキーと暗号化方式を選択する。
 その他nat-traversal指定も行う
④Phase2のVPN設定
 ③で作ったGWを指定する。
  set vpn "TEST1-IKE" monitor source-interface bgroup0/0 destination-ip 172.16.1.1 rekey
  の172.16.1.1はセンター側のLAN側Interfaceを指定している
  Proxy-IDを使ったチェックの設定をいれる
⑤Tunnelをネクストホップに指定したセンター側アドレス向けルーティング設定
  デフォルトルートの0.0.0.0をTunnel向けに設定してしまうとVPNをはりに行けなくなってしまうのでこんな感じで設定

------------------------------------------------------------------------------

上記まででVPNが正常に張れるようになる筈
最後にポリシーの設定を忘れないようにする

もしVPNがうまく張れない場合はログを見ながらPhase1を突破しているか等を確認しながら切り分けしていく。

■終わり
 個人的にはインターネットVPNを構成するのはグローバルIP同士でのサイトtoサイトVPNが理想だが、この構成は割りと多いのではないかと思う。
ポイントは
・上位側のルーター等でVPNで使うプロトコル(IKE,ESP)等が通信出来るようになっていること
・MTUの値
に気をつける事。
他のWEBサイトではDPDを利用した接続設定等も見られるがとりあえずこの設定で問題なさそうなので良いかな

私の体験が誰かの生産性向上に役立っていただけることを祈って