Memcachedドライバーのフォールバック戦略をテストしたい(ポートがファイアウォールで保護されている場合)。 127.0.0.1で特定のポートへのアクセスを拒否するにはどうすればよいですか?
Mac OS X 10.6(Snow Leopard)の例
ローカルホストへの接続を拒否するには、ポートSSH(= 22、/etc/services
から読み取る):
Sudo ipfw add deny tcp from any to localhost ssh
pfctl
を使用できます。
OS X 10.7 "Lion"以降では、 OpenBSD PF (パケットフィルター)を使用します。 /dev/pf
と呼ばれる疑似デバイスを使用すると、ユーザースペースツールでパケットフィルターを構成できます。コマンドpfctl
は、ほとんどの機能を提供します。
ループバックインターフェイスでポート1234をフィルタリングするには、次のようなルールを使用できます。
block drop quick on lo0 proto tcp from any to any port = 1234
このルールは、ポート1234のlo0
上のすべてのインバウンド/アウトバウンドトラフィックをブロックします(このコンテキストでは、quick
は、このルールが一致する場合、それ以上のルールを適用しないことを意味します)。
ルールをPFにロードするコマンドは次のとおりです。
(Sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | Sudo pfctl -nf -
コマンドpfctl -sr 2>/dev/null
は、現在のすべてのルールを一覧表示します(そして、かなり迷惑なエラーメッセージNo ALTQ support in kernel ALTQ related functions disabled
を/dev/null
に送信します)。 echo
は、上記のルールを出力に追加します。出力はpfctl
にパイプされます。オプション-n
は、適用せず、チェックするだけであることを意味します。
エラーメッセージがない場合(前述のNo ALTQ support
メッセージと警告pfctl: Use of -f option, could result in flushing of rules present in the main ruleset added by the system at startup
を除く)、次のルールを適用できます。
(Sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | Sudo pfctl -f - 2>/dev/null
このコマンドは、-n
を削除したという点で前のコマンドとは異なります。パケットフィルターを有効にするには、オプション-e
を追加する必要がある場合があることに注意してください( コメント 、 ケーシー に感謝):(Sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | Sudo pfctl -e -f - 2>/dev/null
これで、ルールが正しく追加されたことを確認するためのルールを一覧表示できます。
Sudo pfctl -sr 2>/dev/null
(...)
block drop quick on lo0 proto tcp from any to any port = 1234
完了したら、ルールを削除できます:
元のルールセットをロードする:
Sudo pfctl -f /etc/pf.conf
または、ルールが追加されたのと同様の方法でルールを削除します。
(Sudo pfctl -sr 2>/dev/null | fgrep -v "block drop quick on lo0 proto tcp from any to any port = 1234") | Sudo pfctl -f -
(OS X 10.8.2「MountainLion」で手順全体をテストし、問題なく動作しました。)
この優れた紹介で詳細を見つけることができます: http://nomoa.com/bsd/gateway/pf/valid/pfctl.html 。
ipfw
はOSX 10.7および10.8に引き続き含まれていますが、非推奨です。
IPFW(8) BSD System Manager's Manual IPFW(8)
NAME
ipfw -- IP firewall and traffic shaper control program (DEPRECATED)
SYNOPSIS
(...)
DESCRIPTION
Note that use of this utility is DEPRECATED. Please use pfctl(8) instead.