NFS が FreeBSD PF ファイアウォールを通過できるようにする

NFS が FreeBSD PF ファイアウォールを通過できるようにする

NFSトラフィックを許可するようにFreeBSDでファイアウォール(PF)を設定しようとしています。 NFS は、クライアントに接続するために任意のポート番号を使用する複数のデーモンとともに TCP および UDP を使用することを認識しています。 NFSサーバーとクライアントはどちらもUbuntu 10.04です。ポート番号を使用してフィルタリングするのではなく、クライアントとサーバーのIPアドレスを使用して接続を許可しました。 NFSに関するルールはpf.conf次のとおりです。

pass in log quick  from external to NFS
pass out log quick from NFS to external

ご覧のとおり、外部名はクライアントで、NFSはサーバーです。どちらも対応するIPアドレスで解決されます。問題は、次のエラーによって一部のパケットがPFによって停止されることです。

11:38:52.440123 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
NFS-lan0.sunrpc > External-lan1.38390:  tcp 40 [bad hdr length 0 - too short, < 20]

What do I need to change to let these packets through?

答え1

NFSはUNIX暗闇の古い悪魔です。 ;-)

あなたの質問は、NFS(v2とv3 - v4についてはわかりません)のファイアウォール固有の設定に関するものです。 RPCとportmapperデーモンを使用してください。

秘密は、NFSサーバーのportmapperを特定のポートまたはポート範囲に強制することです。

答え2

PFはパケットをブロックする理由を伝えます。

[bad hdr length 0 - too short, < 20]

pf.confファイルでシュガーフロスティングが有効になっていますか?

関連情報