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ファイルでシュガーフロスティングが有効になっていますか?