Windows Azure 仮想ネットワークによる、
複数セグメントでの IPSec 接続

更新日: 2013 年 5 月 15 日

執筆者: にくじゃがソフトウェア 津村 彰 <tsumura@nikujaga.info>

マイクロソフトから提供されている、Cisco 社および Juniper 社のデバイスによる仮想ネットワークの接続は、1 セグメントに限られていて、マイクロソフト社の資料でも同様の構成で紹介されています。しかし、実際にはセキュリティ上や既存の構成など (VPN やフロア毎のセグメント構成・Wifi セグメント等) により、ユーザー全員を 1 セグメントで収容する事は難しいと思われます。

そこで、複数セグメントでの IPSec 接続環境構成・検証を行った結果、複数セグメントでの IPSec 接続に問題がないことを確認しましたので、本稿ではその構成方法をご紹介します (仮想ネットワークの設定は割愛します)。


目次

  1. 仮想ネットワークにおける複数セグメント構成概要
  2. オンプレミス設定概要
  3. Azure 対向ルーターの構成と検証
  4. FAQ
  5. 最後に

1. 仮想ネットワークにおける複数セグメント構成概要

仮想ネットワークでは、ローカル ネットワーク (以下、オンプレミス) に複数のセグメントが構成された際、以下の挙動を示します。

  • 事前共有鍵を元にフェーズ 1 を構成
  • オンプレミスのセグメント毎に複数のフェーズ 2 を構成
  • 仮想マシンの場合、デフォルト ゲートウェイはグローバル セグメントに向けられており、オンプレミスのセグメントであった場合、該当のトンネルへパケットを送信

今回の検証で使用した機器は以下になります。

Azure 対向ルーター

  • Juniper SSG5-SB (ScreenOS 6.3.0r13.0)
  • Juniper NetScreen25 (ScreenOS 5.4.0r23.0)
  • Juniper NetScreen5GT (ScreenOS 5.4.0r27.0)

オンプレミス内コアルーター

  • NEC IX3110

オンプレミス内コアスイッチ

  • Cisco Catalyst3550-24G
  • Cisco Catalyst2950G-24

オンプレミス内ノード

  • CentOS5.2 on Hyper-V
  • CentOS5.2 on hp ML115G5

WAN回線

  • フレッツ光ネクスト ファミリー タイプ
  • i-revoアクセス (http://access.i-revo.jp/)

今回は VPN ルーターとして、Cisco 社製品と並んで一般的に使用されている、Juniper 社の SSG シリーズを使用しました。また、NetScreen シリーズでもほぼ同様のコンフィグにて稼働した為、併せて紹介します。

ページのトップへ


2. オンプレミス設定概要

今回は図 1 のように、オンプレミス側のルーター直下のセグメント A と、L3 スイッチ配下のセグメント B を、Azure 内のセグメント Z に接続します。

図 1

図 1

WAN

1 つの固定 IP のアカウントを使用し、PPPoE にてインターネットに接続

コア ルーター

全てのルーティングを制御するルーター。対外接続もここを経由する。事前に Azure 対向・L3 配下のスタティック ルートを構成

L3 スイッチ

今回はコア ルーターに配下のノードからのパケットを転送するので、デフォルト ゲートウェイをコア ルーターに構成

Azure 対向ルーター

デフォルト ゲートウェイは WAN 回線に固定される為、既存セグメントへのスタティック ルート、及び Azure へのソース ルーティング (後述) を構成

仮想ネットワーク

WAN の IP アドレス及びオンプレミスのセグメント情報を使用し、仮想ネットワークを構成

ページのトップへ


3. Azure 対向ルーターの構成と検証

Azure 対向ルーターで使用している ScreenOS の設定例は下記になります。これらの設定例は、以下の部分を置換する事でそのまま使用可能です。

  • <Untrust IPAddr/CIDR> - WAN 側インターフェイスの IP アドレス/サブネット。(例: 1.2.3.4/32)
  • <Trust IPAddr/CIDR> - LAN 側インターフェイスの IP アドレス/サブネット。(例: 192.168.1.1/24)
  • <CoreRoutorIPAddr> - 他セグメントへのルーティング先。 (例: 192.168.1.254)
  • <SegmentA> - LAN 側インターフェイス A のネットワーク アドレス。(例: 192.168.1.0)
  • <SegmentB> - LAN 側セグメント B のネットワーク アドレス。(例: 172.16.0.0)
  • <Subnetmask> - サブネット マスク。(例: 255.255.255.0)
  • <OnpremiseSegmentA/CIDR> - LAN 側インターフェイス A のサブネット。(例: 192.168.1.0/24)
  • <OnpremiseSegmentB/CIDR> - LAN 側セグメント B のサブネット。(例: 172.16.0.0/24)
  • <AzureGateway> - 仮想ネットワークのゲートウェイの IP アドレス
  • <AzureSegment/CIDR> - Azure 内のネットワーク アドレス
  • <PreSharedKey> - 事前共有鍵

なお、下記は筆者が今回の検証でつまずいた箇所になります。ご参考になれば幸いです。

  1. フェーズ 1 の設定、およびフェーズ 2 (AutoKey IKE) の Proxy-ID にミスは無いか。
  2. Azure 上で指定されているセグメントと過不足が無いか。
  3. Source Routeing は該当するトンネル インターフェイスに向けられているか。
  4. Source Routeing のメトリックは、20 より大きい値 (15 等) になっているか。
  5. VirtualRouter の設定で、Source Routeing を有効にしているか。
  6. Trust to Untrust のポリシーで、Azure へのポリシーの優先順位を上げてあるか。
    (例えば Any to Any で省略した場合、優先順位の高いインターネットへパケットを送ってしまうので注意。)

Juniper SSG5-SB の設定例

unset key protection enable
set clock timezone 0
set vrouter trust-vr sharable
set vrouter "untrust-vr"
exit
set vrouter "trust-vr"
unset auto-route-export
exit
set alg appleichat enable
unset alg appleichat re-assembly enable
set alg sctp enable
set auth-server "Local" id 0
set auth-server "Local" server-name "Local"
set auth default auth server "Local"
set auth radius accounting port 1646
set admin name "netscreen"
set admin password "nKVUM2rwMUzPcrkG5sWIHdCtqkAibn"
set admin auth web timeout 10
set admin auth dial-in timeout 3
set admin auth server "Local"
set admin format dos
set zone "Trust" vrouter "trust-vr"
set zone "Untrust" vrouter "trust-vr"
set zone "DMZ" vrouter "trust-vr"
set zone "VLAN" vrouter "trust-vr"
set zone "Untrust-Tun" vrouter "trust-vr"
set zone "Trust" tcp-rst
set zone "Untrust" block
unset zone "Untrust" tcp-rst
set zone "MGT" block
unset zone "V1-Trust" tcp-rst
unset zone "V1-Untrust" tcp-rst
set zone "DMZ" tcp-rst
unset zone "V1-DMZ" tcp-rst
unset zone "VLAN" tcp-rst
set zone "Untrust" screen tear-drop
set zone "Untrust" screen syn-flood
set zone "Untrust" screen ping-death
set zone "Untrust" screen ip-filter-src
set zone "Untrust" screen land
set zone "V1-Untrust" screen tear-drop
set zone "V1-Untrust" screen syn-flood
set zone "V1-Untrust" screen ping-death
set zone "V1-Untrust" screen ip-filter-src
set zone "V1-Untrust" screen land
set interface "ethernet0/0" zone "Untrust"
set interface "ethernet0/1" zone "DMZ"
set interface "bgroup0" zone "Trust"
set interface "tunnel.1" zone "Untrust"
set interface "tunnel.2" zone "Untrust"
set interface bgroup0 port ethernet0/2
set interface bgroup0 port ethernet0/3
set interface bgroup0 port ethernet0/4
set interface bgroup0 port ethernet0/5
set interface bgroup0 port ethernet0/6
unset interface vlan1 ip
set interface ethernet0/0 ip <Untrust IPAddr/CIDR>
set interface ethernet0/0 route
set interface bgroup0 ip <Trust IPAddr/CIDR>
set interface bgroup0 nat
unset interface vlan1 bypass-others-ipsec
unset interface vlan1 bypass-non-ip
set interface ethernet0/0 ip manageable
set interface bgroup0 ip manageable
set interface "serial0/0" modem settings "USR" init "AT&F"
set interface "serial0/0" modem settings "USR" active
set interface "serial0/0" modem speed 115200
set interface "serial0/0" modem retry 3
set interface "serial0/0" modem interval 10
set interface "serial0/0" modem idle-time 10
set flow tcp-mss
set flow all-tcp-mss 1304
unset flow no-tcp-seq-check
set flow tcp-syn-check
unset flow tcp-syn-bit-check
set flow reverse-route clear-text prefer
set flow reverse-route tunnel always
set pki authority default scep mode "auto"
set pki x509 default cert-path partial
set address "Trust" "OnpremiseSegmentA" <SegmentA> <Subnetmask>
set address "Trust" "OnpremiseSegmentB" <SegmentB> <Subnetmask>
set address "Untrust" "AzureSegment" <AzureSegment> <Subnetmask>
set crypto-policy
exit
set ike p1-proposal "azure-ike" preshare group2 esp aes128 sha-1 second 28800
set ike p2-proposal "azure-ipsec" no-pfs esp aes128 sha-1 second 3600
set ike gateway "azure-gateway-ike" address <AzureGateway> Main outgoing-interface "ethernet0/0" preshare "<PreSharedKey>" proposal "azure-ike"
set ike gateway "azure-gateway-ike" nat-traversal
unset ike gateway "azure-gateway-ike" nat-traversal udp-checksum
set ike gateway "azure-gateway-ike" nat-traversal keepalive-frequency 10
set ike respond-bad-spi 1
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 "Azure-VPN_A" gateway "azure-gateway-ike" no-replay tunnel idletime 0 proposal "azure-ipsec"
set vpn "Azure-VPN_A" monitor optimized rekey
set vpn "Azure-VPN_A" id 0x1 bind interface tunnel.1
set vpn "Azure-VPN_A" dscp-mark 0
set vpn "Azure-VPN_B" gateway "azure-gateway-ike" no-replay tunnel idletime 0 proposal "azure-ipsec"
set vpn "Azure-VPN_B" monitor optimized rekey
set vpn "Azure-VPN_B" id 0x7 bind interface tunnel.2
set vpn "Azure-VPN_B" dscp-mark 0
set url protocol websense
exit
set vpn "Azure-VPN_A" proxy-id local-ip <OnpremiseSegmentA/CIDR> remote-ip <AzureSegment/CIDR> "ANY"
set vpn "Azure-VPN_B" proxy-id local-ip <OnpremiseSegmentB/CIDR> remote-ip <AzureSegment/CIDR> "ANY"
set policy id 1 name "Go Azure" from "Trust" to "Untrust" "Any" "<AzureSegment/CIDR>" "ANY" permit log
set policy id 1
exit
set policy id 2 from "Untrust" to "Trust" "<AzureSegment/CIDR>" "<OnpremiseSegmentB/CIDR>" "ANY" permit
set policy id 2
exit
set policy id 3 from "Untrust" to "Trust" "<AzureSegment/CIDR>" "<OnpremiseSegmentA/CIDR>" "ANY" permit
set policy id 3
exit
set pppoe name "nikujaga-isp"
set pppoe name "nikujaga-isp" username "userid@ppp.nikujaga.info" password "PPP_PASSWORD"
set pppoe name "nikujaga-isp" idle 0
set pppoe name "nikujaga-isp" interface ethernet0/0
set pppoe name "nikujaga-isp" ppp lcp-echo-retries 10
set pppoe name "nikujaga-isp" ppp lcp-echo-timeout 180
set pppoe name "nikujaga-isp" auto-connect 60
set pppoe name "nikujaga-isp" clear-on-disconnect
set nsmgmt bulkcli reboot-timeout 60
set ssh version v2
set config lock timeout 5
unset license-key auto-update
set telnet client enable
set snmp port listen 161
set snmp port trap 162
set snmpv3 local-engine id "0162052010008315"
set vrouter "untrust-vr"
exit
set vrouter "trust-vr"
unset add-default-route
set route <OnpremiseSegmentB/CIDR> interface bgroup0 gateway <CoreRoutorIPAddr>
set route <OnpremiseSegmentB/CIDR> interface ethernet0/1 gateway <CoreRoutorIPAddr>
set route source <OnpremiseSegmentA/CIDR> interface tunnel.1
set route source <OnpremiseSegmentB/CIDR> interface tunnel.2
exit
set vrouter "untrust-vr"
exit
set vrouter "trust-vr"
exit

Juniper NetScreen25 の設定例

set clock timezone 0
set vrouter trust-vr sharable
set vrouter "untrust-vr"
exit
set vrouter "trust-vr"
unset auto-route-export
exit
set auth-server "Local" id 0
set auth-server "Local" server-name "Local"
set auth default auth server "Local"
set auth radius accounting port 1646
set admin name "netscreen"
set admin password "nKVUM2rwMUzPcrkG5sWIHdCtqkAibn"
set admin auth timeout 10
set admin auth server "Local"
set admin format dos
set zone "Trust" vrouter "trust-vr"
set zone "Untrust" vrouter "trust-vr"
set zone "DMZ" vrouter "trust-vr"
set zone "VLAN" vrouter "trust-vr"
set zone "Untrust-Tun" vrouter "trust-vr"
set zone "Trust" tcp-rst
set zone "Untrust" block
unset zone "Untrust" tcp-rst
set zone "MGT" block
set zone "DMZ" tcp-rst
set zone "VLAN" block
unset zone "VLAN" tcp-rst
set zone "Untrust" screen tear-drop
set zone "Untrust" screen syn-flood
set zone "Untrust" screen ping-death
set zone "Untrust" screen ip-filter-src
set zone "Untrust" screen land
set zone "V1-Untrust" screen tear-drop
set zone "V1-Untrust" screen syn-flood
set zone "V1-Untrust" screen ping-death
set zone "V1-Untrust" screen ip-filter-src
set zone "V1-Untrust" screen land
set interface "ethernet1" zone "Trust"
set interface "ethernet2" zone "DMZ"
set interface "ethernet3" zone "Untrust"
set interface "tunnel.1" zone "Untrust"
set interface "tunnel.2" zone "Untrust"
unset interface vlan1 ip
set interface ethernet1 ip <Trust IPAddr/CIDR>
set interface ethernet1 nat
set interface ethernet3 ip <Untrust IPAddr/CIDR>
set interface ethernet3 route
set interface tunnel.1 ip unnumbered interface ethernet3
set interface tunnel.2 ip unnumbered interface ethernet3
unset interface vlan1 bypass-others-ipsec
unset interface vlan1 bypass-non-ip
set interface ethernet1 ip manageable
set interface ethernet3 ip manageable
set flow all-tcp-mss 1350
unset flow no-tcp-seq-check
set flow tcp-syn-check
set pki authority default scep mode "auto"
set pki x509 default cert-path partial
set address "Trust" "OnpremiseSegmentA" <SegmentA> <Subnetmask>
set address "Trust" "OnpremiseSegmentB" <SegmentB> <Subnetmask>
set address "Untrust" "AzureSegment" <AzureSegment> <Subnetmask>
set ike p1-proposal "azure-ike" preshare group2 esp aes128 sha-1 second 28800
set ike p2-proposal "azure-ipsec" no-pfs esp aes128 sha-1 second 3600
set ike gateway "azure-gateway-ike" address <AzureGateway> Main outgoing-interface "ethernet3" preshare "<PreSharedKey>" proposal "azure-ike"
set ike gateway "azure-gateway-ike" nat-traversal
unset ike gateway "azure-gateway-ike" nat-traversal udp-checksum
set ike gateway "azure-gateway-ike" nat-traversal keepalive-frequency 10
set ike respond-bad-spi 1
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 "Azure-VPN_A" gateway "azure-gateway-ike" no-replay tunnel idletime 0 proposal "azure-ipsec"
set vpn "Azure-VPN_A" monitor optimized rekey
set vpn "Azure-VPN_A" id 1 bind interface tunnel.1
set vpn "Azure-VPN_B" gateway "azure-gateway-ike" no-replay tunnel idletime 0 proposal "azure-ipsec"
set vpn "Azure-VPN_B" monitor optimized rekey
set vpn "Azure-VPN_B" id 7 bind interface tunnel.2
set url protocol websense
exit
set vpn "Azure-VPN_A" proxy-id local-ip <OnpremiseSegmentA/CIDR> remote-ip <AzureSegment/CIDR> "ANY"
set vpn "Azure-VPN_B" proxy-id local-ip <OnpremiseSegmentB/CIDR> remote-ip <AzureSegment/CIDR> "ANY"
set policy id 1 name "Go Azure" from "Trust" to "Untrust" "Any" "Any" "ANY" permit log
set policy id 1
exit
set policy id 2 from "Untrust" to "Trust" "<AzureSegment/CIDR>" "<OnpremiseSegmentA/CIDR>" "ANY" permit log
set policy id 2
exit
set policy id 3 from "Untrust" to "Trust" "<AzureSegment/CIDR>" "<OnpremiseSegmentB/CIDR>" "ANY" permit log
set policy id 3
exit
set pppoe name "nikujaga-isp"
set pppoe name "nikujaga-isp" username "userid@ppp.nikujaga.info" password "PPP_PASSWORD"
set pppoe name "nikujaga-isp" idle 0
set pppoe name "nikujaga-isp" static-ip
set pppoe name "nikujaga-isp" interface ethernet3
set pppoe name "nikujaga-isp" auto-connect 5
set pppoe name "nikujaga-isp" clear-on-disconnect
set nsmgmt bulkcli reboot-timeout 60
set nsmgmt bulkcli reboot-wait 0
set ssh version v2
set config lock timeout 5
set license-key auto-update
set snmp port listen 161
set snmp port trap 162
set vrouter "untrust-vr"
exit
set vrouter "trust-vr"
set source-routing enable
unset add-default-route
set route <OnpremiseSegmentB/CIDR> interface ethernet1 gateway <CoreRoutorIPAddr>
set route 172.16.1.0/24 interface ethernet1 gateway <CoreRoutorIPAddr>
set route 192.168.254.0/24 interface ethernet1 gateway <CoreRoutorIPAddr>
set route source <OnpremiseSegmentA/CIDR> interface tunnel.1 preference 15 permanent
set route source <OnpremiseSegmentB/CIDR> interface tunnel.2 preference 15 permanent
exit
set vrouter "untrust-vr"
exit
set vrouter "trust-vr"
exit

Juniper NetScreen5GT の設定例

set clock timezone 0
set vrouter trust-vr sharable
set vrouter "untrust-vr"
exit
set vrouter "trust-vr"
unset auto-route-export
exit
set auth-server "Local" id 0
set auth-server "Local" server-name "Local"
set auth default auth server "Local"
set auth radius accounting port 1646
set admin name "netscreen"
set admin password "nKVUM2rwMUzPcrkG5sWIHdCtqkAibn"
set admin auth timeout 10
set admin auth server "Local"
set admin format dos
set zone "Trust" vrouter "trust-vr"
set zone "Untrust" vrouter "trust-vr"
set zone "VLAN" vrouter "trust-vr"
set zone "Untrust-Tun" vrouter "trust-vr"
set zone "Trust" tcp-rst
set zone "Untrust" block
unset zone "Untrust" tcp-rst
set zone "MGT" block
set zone "VLAN" block
set zone "VLAN" tcp-rst
set zone "Untrust" screen tear-drop
set zone "Untrust" screen syn-flood
set zone "Untrust" screen ping-death
set zone "Untrust" screen ip-filter-src
set zone "Untrust" screen land
set zone "V1-Untrust" screen tear-drop
set zone "V1-Untrust" screen syn-flood
set zone "V1-Untrust" screen ping-death
set zone "V1-Untrust" screen ip-filter-src
set zone "V1-Untrust" screen land
set interface "trust" zone "Trust"
set interface "untrust" zone "Untrust"
set interface "tunnel.1" zone "Trust"
set interface "tunnel.2" zone "Trust"
unset interface vlan1 ip
set interface trust ip <Trust IPAddr/CIDR>
set interface trust nat
set interface untrust ip <Untrust IPAddr/CIDR>
set interface untrust route
set interface tunnel.1 ip unnumbered interface untrust
set interface tunnel.2 ip unnumbered interface untrust
unset interface vlan1 bypass-others-ipsec
unset interface vlan1 bypass-non-ip
set interface trust ip manageable
set interface untrust ip manageable
set flow tcp-mss
set flow all-tcp-mss 1350
unset flow tcp-syn-check
set pki authority default scep mode "auto"
set pki x509 default cert-path partial
set address "Trust" "OnpremiseSegmentA" <SegmentA> <Subnetmask>
set address "Trust" "OnpremiseSegmentB" <SegmentB> <Subnetmask>
set address "Untrust" "AzureSegment" <AzureSegment> <Subnetmask>
set ike p1-proposal "azure-ike" preshare group2 esp aes128 sha-1 second 28800
set ike p2-proposal "azure-ipsec" no-pfs esp aes128 sha-1 second 3600
set ike gateway "azure-gateway-ike" address <AzureGateway> Main outgoing-interface "untrust" preshare "<PreSharedKey>" proposal "azure-ike"
set ike gateway "azure-gateway-ike" nat-traversal
unset ike gateway "azure-gateway-ike" nat-traversal udp-checksum
set ike gateway "azure-gateway-ike" nat-traversal keepalive-frequency 10
set ike respond-bad-spi 1
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 "Azure-VPN_A" gateway "azure-gateway-ike" no-replay tunnel idletime 0 proposal "azure-ipsec"
set vpn "Azure-VPN_A" monitor optimized rekey
set vpn "Azure-VPN_A" id 1 bind interface tunnel.1
set vpn "Azure-VPN_B" gateway "azure-gateway-ike" no-replay tunnel idletime 0 proposal "azure-ipsec"
set vpn "Azure-VPN_B" monitor optimized rekey
set vpn "Azure-VPN_B" id 7 bind interface tunnel.2
set url protocol websense
exit
set vpn "Azure-VPN_A" proxy-id local-ip <OnpremiseSegmentA/CIDR> remote-ip <AzureSegment/CIDR> "ANY"
set vpn "Azure-VPN_B" proxy-id local-ip <OnpremiseSegmentB/CIDR> remote-ip <AzureSegment/CIDR> "ANY"
set policy id 1 name "Go Azure" from "Trust" to "Untrust" "Any" "<AzureSegment/CIDR>" "ANY" permit
set policy id 1
exit
set policy id 2 from "Untrust" to "Trust" "<AzureSegment/CIDR>" "<OnpremiseSegmentA/CIDR>" "ANY" permit
set policy id 2
exit
set policy id 3 from "Untrust" to "Trust" "<AzureSegment/CIDR>" "<OnpremiseSegmentB/CIDR>" "ANY" permit
set policy id 3
exit
set pppoe name "nikujaga-isp"
set pppoe name "nikujaga-isp" username "userid@ppp.nikujaga.info" password "PPP_PASSWORD"
set pppoe name "nikujaga-isp" idle 0
set pppoe name "nikujaga-isp" static-ip
set pppoe name "nikujaga-isp" interface untrust
set pppoe name "nikujaga-isp" auto-connect 5
set pppoe name "nikujaga-isp" clear-on-disconnect
set nsmgmt bulkcli reboot-timeout 60
set nsmgmt bulkcli reboot-wait 0
set ssh version v2
set config lock timeout 5
set license-key auto-update
set modem speed 115200
set modem retry 3
set modem interval 10
set modem idle-time 10
set snmp port listen 161
set snmp port trap 162
set vrouter "untrust-vr"
set source-routing enable
exit
set vrouter "trust-vr"
set source-routing enable
unset add-default-route
set route <OnpremiseSegmentB/CIDR> gateway <CoreRoutorIPAddr>
set route source <OnpremiseSegmentA/CIDR> interface tunnel.1 preference 15
set route source <OnpremiseSegmentB/CIDR> interface tunnel.2 preference 15
exit
set vrouter "untrust-vr"
exit
set vrouter "trust-vr"
exit

問題なく Windows Azure 仮想ネットワークに接続できた場合、以下のログが表示されます。

図 2

図 2 [拡大図]

もしフェーズ 2 でトラブルがあった場合は、下記のようなログが表示されます。

図 3

図 3 [拡大図]

これは Proxy-ID が一致しないため、フェーズ 2 が確立できず、その結果フェーズ 1 ごと落ちていることを示しています。不要なセグメントを書いた場合、このようなエラー ログの他、一見安定して通信しているようにみえても、パケット ロスやセッション断の原因となりますのでご注意ください。

ページのトップへ


4. FAQ

Q. セグメントを追加したい場合のオペレーションについて教えて下さい。
A. セグメントの追加は、業務システムの構成変更に当たるので、事前に作業時間を確保してください。
次に、Windows Azure 仮想ネットワークおよびオンプレミスのルーターに設定を投入します。
対向ルーターの設定については必要箇所を書き換えて CLI から投入する方が簡単です。
Q. ローカル ネットワークの設定が Windows Azure に反映されません。
A. Windows Azure 仮想ネットワークのゲートウェイは、動的に設定が変更できない事があります。
その場合、一度ゲートウェイを削除し、再作成してください。
その際、Azure 側ゲートウェイ IP アドレスと事前共有鍵が変更されますので、オンプレミスのルーターへ改めて設定を投入してください。
Q. ソース ルーティングについて教えて下さい。
A. 一般的なルーティングは、IP プロトコルの宛先を参照して、静的ないし動的に宛先にパケットを転送します。
今回使用したソース ルーティングは、IP プロトコルの送信元を参照して、宛先を設定します。
これは、複数のトンネル インターフェイスがあった際に、正しく該当のインターフェイスにパケットを転送する為に必要です。
Q. 動作は一見普通ですが、パケット ロスや、セッションの断が発生します。
A. 実際に通信するプロトコルにも依存しますが、連続的に大量 (100 MB~) データを送信した際、瞬断が発生し、疎通できなくなる場合があります。これは、Windows Azure とオンプレミスのルーターでフェーズ 2 の数や設定が一致しないため、フェーズ 2 を諦めてしまい、生きてるフェーズ 2 ごとフェーズ 1 がダウンする為です。一度設定を見なおしてみてください。
Q. メトリックとはなんですか?
A. ソース ルーティングで設定したメトリックとは、ルーティングの優先順位付けのパラメーターです。ScreenOS ではデフォルトのルーティング テーブルはメトリック 20 と定義されており、VPN のセグメントを優先して処理させるため、小さな値を入れています。

ページのトップへ


5. 最後に

本ドキュメントを書くにあたり、マイクロソフト社 エヴァンジェリスト 武田様、株式会社pnop 廣瀬さまにご協力頂きましたこと、この場を借りて御礼もうしあげます。

ページのトップへ