FortiGate 50BをAmazon VPCに接続してみた

qpstudy08で頂いたFortiGate 50BをAmazon VPCに接続してみた。

初期設定確認&リセット

電源入れてinternal側にPCをつなげてみたけどIPが降ってこないので、Ciscoケーブル刺してコンフィグを見てみた所、デフォルトの設定ではないようだった。
ここを参考に "execute factoryreset" した。

既存ネットワークへ接続

デフォルト設定で192.168.1.99/24らしいので、既存のLAN(192.168.1.0/24)にそのままつなぐ事にしたが、dhcpサーバがかぶってイヤなのでWebGUIから停止させた後にINTをLANに接続。

PPPoE設定

GUIからWAN1に設定した(最初WAN2でやろうとしてなぜかうまくいかず)。外に疎通確認できたので、よしとする。

ファイアウォール設定

デフォルト設定ではFWのポリシー的に必要なパケット通らないようなので、以下のような設定をまず行う。
ファイアウォールメニューから、アドレス(aliasみたいなもん?)として27.0.1.16/255.255.255.255と27.0.1.144/255.255.255.255を追加し、グループ amazon vpcとしてさっきの2つのアドレスを追加する。
ポリシー>ポリシーからCreate Newして、送信元アドレスにAmazon VPC、宛先アドレスをallにし、サービスを複数選択(IKEとESP)してACCEPTとする。
これでIPsecで使用するパケットが通るようになった

IPsec設定

ここからはCLIで行った。このスレッドが参考になりました。

まずはIPsecの設定とトンネルインターフェースの設定

# Phase1の設定
config vpn ipsec phase1-interface
    edit "P1-Amazon1"
        set interface "wan1"
        set local-gw xxx.xxx.xxx.xxx
        set nattraversal disable
        set dhgrp 2
        set proposal aes128-sha1
        set remote-gw 27.0.1.16
        set dpd-retryinterval 10
        set psksecret PRE_SHARED_KEY1
    next
end
# Phase2の設定
config vpn ipsec phase2-interface
    edit "P2-Amazon1"
        set keepalive enable
        set phase1name "P1-Amazon1"
        set proposal aes128-sha1
        set dhgrp 2
        set keylifeseconds 3600
    next
end
# Tunnel インターフェースの設定
config system interface
    edit "P1-Amazon1"
        set vdom "root"
        set ip 169.254.252.26 255.255.255.255
        set type tunnel
        set remote-ip 169.254.252.25
        set interface "wan1"
    next
end

もう1つのトンネルも同様に入れておく(PSKとIPアドレスの違いによく気をつけて)。
ここまで出来たら、対向のインターフェースまで通信が出来てないといけないので、

# execute ping 169.254.252.25
PING 169.254.252.25 (169.254.252.25): 56 data bytes
64 bytes from 169.254.252.25: icmp_seq=0 ttl=64 time=7.1 ms
64 bytes from 169.254.252.25: icmp_seq=1 ttl=64 time=6.1 ms
64 bytes from 169.254.252.25: icmp_seq=2 ttl=64 time=5.7 ms
64 bytes from 169.254.252.25: icmp_seq=3 ttl=64 time=5.4 ms

--- 169.254.252.25 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 5.4/6.0/7.1 ms

などとチェックしておく(ここでpingができない場合は、上記の設定を見直す)。

BGP設定

ここまで来たらあと一息。BGPルーティングの設定を行う。ここはGUIからやってしまいました。
ルータ>ダイナミックルーティング>BGPのメニューに移動し、ローカルのASN(65000等、Customer Gateway作成時に指定した物)とIPを入れる(192.168.1.99を指定した)。
次にネイバーとして、2つリモートのASN(10124)とIP(169.254.252.25と169.254.252.29)を指定して追加。
advertiseするネットワークとして192.168.1.0/24を追加(複数のcustomer gatewayをつながない場合には0.0.0.0/0でもよさそう)。
うまくBGPの通信が行われれば、モニタ>ルーティングモニタで、ゲートウェイから受信したVPC側のサブネット情報が表示されているはず。

VPC側の設定

あとはAmazon VPC側のルートテーブルに、LAN側の情報を追加してやる必要がある。
VPC>Route Tables>(対象サブネットで使用しているRoute Tableを選択)>Destinationに192.168.1.0/24と入力し、Targetをvgw-xxxxxxxxとし、Addする。
SecurityGroupで192.168.1.0/24からのICMPやsshなど必要な通信を通すようにしておく。

ファイアウォール設定その2

トンネルインターフェースとinternalの間で通信が行えるよう、
ファイアウォール>ポリシー>Create Newから、P1-Amazon1→internalとその逆、P1-Amazon2→internalとその逆、をACCEPTする4つのルールを追加

疎通確認

$ ping 172.21.0.4
PING 172.21.0.4 (172.21.0.4) 56(84) bytes of data.
64 bytes from 172.21.0.4: icmp_seq=0 ttl=61 time=7.17 ms
64 bytes from 172.21.0.4: icmp_seq=1 ttl=61 time=6.29 ms
64 bytes from 172.21.0.4: icmp_seq=2 ttl=61 time=5.72 ms

--- 172.21.0.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 5.725/6.397/7.176/0.604 ms, pipe 2
$ ssh -i keypair.pem ec2-user@172.21.0.4
Last login: Thu Oct 13 08:06:43 2011 from 192.168.1.249

       __|  __|_  )  Amazon Linux AMI
       _|  (     /     Beta
      ___|\___|___|

See /usr/share/doc/system-release-2011.02 for latest release notes. :-)

つながりました!

最後に

otto様、ありがとうございました!

追記

複数のAZにまたがってsubnetを構成している場合、

config system settings
    set asymroute enable
end

を入れていないと、片方のzoneとしか通信できなかったので、要注意。