Twice-NAT の透過リダイレクション

  • IN,OUT,BACKの3つのネットワークがあり, IN から OUT への任意サーバへのWeb接続をBACKのWebサーバへリダイレクトする場合
    • network-any を subnet 0.0.0.0 0.0.0.0 と定義して任意のサーバを宛先変換する. any キーワードは受け付けられない.
    • service-web は tcp destination 80 のサービスオブジェクト
  • nat (IN,BACK) source static network-in network-back destination static network-any webserver-back service service-web service-web とした場合.
  • static NAT の結果 proxy-arp により応えることになるかは送信者のNAT変換先アドレスnetwork-backが宛先インターフェースBACKのネットワークに属するアドレスかによる.
    • 所属している場合が多いので, BACK側の変換先アドレスへBACK側から接続させるようにするかどうかを決めるno-proxy-arpオプションがある.
    • network-backから来たパケットをwebserver-backがBACKインターフェースに返すようなルーティングがあるなら, network-back アドレスをBACKのネットワークにしないことも可能
  • 逆に帰り道の変換である, 送信先のNAT前アドレス network-any がインターフェースINのネットワークに属するアドレスの場合 IN側でも proxy-arp 応答が返される.
    • IN側送信者の場合は送信先が送信者であるIN側のアドレスになることはないはずだが, 任意のアドレス net_any を指定した場合にはIN側ネットワークも含まれてしまうため, IN側の全てのアドレスにARPを返答するようになる.
    • 逆変換には no-proxy-arpオプションも効果がなく, destinationは必ずstaticでARP発信を行わないdynamic変換はないため, proxy-arpを止める方法がない.
    • このページの方法は機能しないのでは? http://networkengineering.stackexchange.com/questions/5970/asa-as-dns-transparent-proxy
  • IN 側で no-proxy-arp を有効にさせるため, 出入りを逆にした構文にする.
    • service-web オブジェクトも逆向きになるため destination でなく, tcp source 80 に修正が必要.
  • nat (BACK,IN) source static webserver-back network-any destination static network-back network-in service service-web service-web no-proxy-arp
    • 実際にはBACK側が発信者になることはできず, source アドレスが1:多の変換になっているようにみえるなど不自然な構文になる.