L2スイッチのAccess Control List(ACL)で嵌った話

概要

  • 同一ネットワークのサーバ間の通信がpingしか通らないという事象に遭遇した
  • iptableやらnetstatやらいろいろしたのだが結局OSのレベルでは切り分けられず、NW屋さんに聞いたところL2スイッチにもAccess Control List(ACL)なる仕組みがあるそうで、それによって通信が制限されていた。
  • 広い視野をもたないといけないと思ったので、簡単なメモ書き

どんな事象だったのか?

  • サーバAとサーバBの間でping(ICMP)以外の通信が通らない。

  • traceroute-U-Tもだめで、-Iだけが通る。

  • iptables(OSのファイアウォール)でポートやIPアドレスが制限されているわけでもない。

といった状況でOSレベルではどうしようもないな、ということでNW屋さんにヘルプ要請

原因はなんだったのか?

サーバが接続されているL2スイッチのAccess Control List(ACL)が適切に設定されていなかったため、サーバ同士(IPアドレス)の通信ができなかったとのこと。

そして恥ずかしながらL2スイッチにおけるACLというものの存在を初めて知った。

Access Control List(ACL)とはなにか?

いろいろ調べたのだが、結局日本語ではスイッチレベルでもパケットの制限をできるという以上のことをすっきりとわかる説明は見当たらなかった。 スイッチのACLであればインターフェース単位での制御になるとか、多層防御の考えに立てば両方やるべきという理屈はたつとか、いろいろあるのだと思うがどうもすっきりしない。

で、たどり着いたのが以下のページ

Cisco Routers and Firewalls - Differences Between an ACL and Firewalls

とても雑に要約すると以下のような感じ。ひとまず理解できた気になれる程度の情報はある。

  • 機能はよく似ている面もあるけど実際には重要な違いがある

  • ACLはインターフェース単位で制御をかけるのでパケットのフィルタリング以外にもいろいろ使える

  • ACLはパケット単体でしかフィルタリングできない(ステートレス)だが、ファイアウォールはステートフルに通信を監視できる

実際のNW屋さんはもっといろいろ考えて設計しているのだと思うのだが、ひとまずはここまで。