ACE: FTP inspection

ドキュメント

2010/07/30 - 03:43
7月 27th, 2010
User Badges:
  • Cisco Employee,

    ACE FTP 通信を負荷分散する場合、inspect ftp の設定を policy-map に設定するだけで実現可能です。


    # 構成

    inspect_ftp_01.png

    # ACE 設定


    ACE20/Admin#    sh run

    Generating    configuration....


    hostname    ACE20

    boot system    image:c6ace-t1k9-mz.A2_3_1.bin


    access-list    all line 8 extended permit ip any any


    rserver host    sv1

      ip address 192.168.72.11

      inservice

    rserver host    sv2

      ip address 192.168.72.12

      inservice


    serverfarm    host sf

      rserver sv1

        inservice

      rserver sv2

        inservice


    class-map    match-all vip-ftp

      2 match virtual-address 192.168.71.100 tcp    eq ftp


    policy-map    type loadbalance first-match lb

      class class-default

        serverfarm sf


    policy-map    multi-match client-vips

      class vip-ftp

        loadbalance vip inservice

        loadbalance policy lb

        loadbalance vip icmp-reply

        inspect ftp

    access-group    input all


    interface    vlan 771

      ip address 192.168.71.250 255.255.255.0

      service-policy input client-vips

      no shutdown

    interface    vlan 772

      ip address 192.168.72.250 255.255.255.0

      no shutdown


    設定自体は簡単なのですが、この 1 行があるとないとでは動作が大きく異なります。

    以下、設定の有無でどのように違うのかを見ていきます。


    ## inspect ftp なし

    #  control connection

    inspect_ftp_02.png

    # data  connection (active mode)

    inspect_ftp_03.png

    # client log


    ftp> get tempfile

    local:    tempfile remote: tempfile

    200 PORT    command successful.

    425 Can't    build data connection: Connection refused.

    ftp>


    # data  connection (passive mode)

    inspect_ftp_04.png

    # client log


    ftp> passive

    Passive mode    on.

    ftp> get tempfile

    local:    tempfile remote: tempfile

    227 Entering    Passive Mode (192,168,72,11,215,196)

    ftp: connect:    Network is unreachable

    ftp>


    inspect ftp の設定を行わずに ftp command を実行しても、control connection を張ることは可能です。

    しかし、file download しようとすると、active/passive mode どちらを使用しても、error が発生し download に失敗してしまいます。 (active/passive mode については、FTP: active mode と passive mode について をご参照ください。)


    ただし、error の内容と、capture の結果が active/passive mode で異なります。


    active mode の場合、capture から syn/ack がなく RST されている (98行目 - 114行目) ことが確認できます。

    passive mode の場合、syn packet すら送信されていません。


    active mode が正常に動作しないのは、server から client に対して直接 data connection を張ろうとしているためです。 client server から直接 syn packet を受信しても、routing table server network 情報がないため、server syn/ack を返すことができません。 そのため、正常に connection を張れず、download に失敗しています。


    passive mode が正常に動作しないのは、232 行目の 227 response address server address が入っているためです。 active mode 同様、client routing table server network 情報がないため、syn を送信できませんでした。




    client:/# netstat -rn

    Kernel IP    routing table

    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

    192.168.71.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1

    !___ 192.168.71.0/24 network しか知らない。

    client:/#



    つまり、ftp data  connection を張る場合、loadbalancer において

    - server から張られる data-connection src address vip address に変換

    - 227      response 中の、server address vip address に変換

    という処理が必要になりますが、inspect ftp command を設定するだけで、data  connection を監視し、この両方の処理を行ってくれます。

    ftp inspection ACE: Hardware architecture から見た L3/L4  と L7 の違 にも記載されているように、Xscale が処理を担当しています。



    ## inspect ftp あり

    #  control connection

    inspect_ftp_05.png

    control connection inspect ftp  command の有無にかかわらず動作するため、inspect ftp command がない場合と同様の capture 結果となります。

    # data  connection (active mode)

    inspect_ftp_06.png

    96 行目では、server(192.168.72.12) であった src address 97 行目で vip address(192.168.71.100) に変換されています。

    # data  connection (passive mode)

    inspect_ftp_07.png

    inspect_ftp_08.png


    136 行目の response arg では 192,168,72,12 であったものが 137 行目の response arg 192,168,71,100 に変換されています。



Loading.

アクション

このドキュメントについて

Related Content