我已經寫了一個網絡過濾模塊,檢查從Linux中傳入和傳出的數據包,一些特定的模式。在IF_NET模式POST_ROUTING鉤不會被調用
nfho1.owner = THIS_MODULE;
nfho1.hook = dhcp_hook_function;
nfho1.hooknum = NF_INET_POST_ROUTING;
nfho1.priority = NF_IP_PRI_FIRST;
if(use_bridge == 1)
{
nfho1.pf = PF_BRIDGE; // on bridge interface
}
else
{
nfho1.pf = PF_INET; // not on bridge interface
}
nfho2.owner = THIS_MODULE;
nfho2.hook = data_hook_function;
nfho2.hooknum = NF_INET_PRE_ROUTING;
nfho2.priority = NF_IP_PRI_FIRST;
if(use_bridge == 1)
{
nfho2.pf = PF_BRIDGE; // on bridge interface
}
else
{
nfho2.pf = PF_INET;
}
nf_register_hook(&nfho1);
nf_register_hook(&nfho2);
的use_bridge參數決定使用哪個協議族。
不過,我的問題是,IS THE PF_BRIDGE必要的。
測試用例: 案例1:BR0使用brctl
與PF_BRIDGE的POST_ROUTING鉤配置被調用。 沒有PF_BRIDGE的POST_ROUTING鉤不會被調用。
爲什麼沒有路由後鉤被調用。 AFAIK後路由掛鉤不能被繞過。
案例2:BR0不confugured但ip_forwarding爲ON。
沒有PF_BRIDGE兩個鉤子被調用。 我沒有爲這個測試用例配置PF_BRIDGE。
那麼,爲什麼需要PF_BRIDGE使POST路由鉤子被調用。
親愛的喬爾C, 我想出了答案,一些挖入網上PF_BRIDGE。 有一個參數的/ proc/SYS /網/橋樑/ nf_bridge_call_iptables。 – Haswell