解決iptables參數-m physdev出現iptables: No chain/target/match by that name.錯誤

事情是這樣的,我使用iptables命令出現錯誤(match錯誤):

iptables -A INPUT -m physdev --physdev-in ap1_0 -j DROP
報錯:iptables: No chain/target/match by that name.

解決辦法:

1.iptables的match匹配是需要內核支持的,可以內核目錄下make menuconfig查看選項,重點是xtables是否選擇了physdev選項:

 

2.把編譯出來的xt_physdev.ko拷貝到目標開發板上進行inmod xt_physdev.ko

然後再次執行剛纔的命令就不會報錯了

另外加個感嘆,內核給的-m physdev 工具配合brctl使用,簡直就是絕配啊!太好用了啦!

3.physdev

該模塊在橋端口輸入和輸出設備上匹配,這些輸入和輸出設備被奴役到橋接設備上。此模塊是支持透明橋接IP防火牆的基礎結構的一部分,僅適用於2.5.44版本以上的內核版本。

[!] --physdev-in name ,接收數據包的橋端口的名稱(僅用於INPUT、FORWARD和PREROUTING鏈的數據包)。如果接口名以“+“結尾,則以此名稱開頭的任何接口都將匹配。如果數據包沒有通過橋接設備到達,則此數據包將與此選項不匹配,除非“!”被利用了。

[!] --physdev-out name ,要發送數據包的橋接端口的名稱(用於FORWARD、OUTPUT和POSTROUTING鏈的數據包)。如果接口名以“+“結尾,則以此名稱開頭的任何接口都將匹配。注意,在NAT和Magle輸出鏈中,不能在橋輸出端口上匹配,但是在過濾器輸出鏈中可以匹配。如果數據包不會由網橋設備離開,或者如果它還不知道輸出設備將是什麼,那麼該數據包將與此選項不匹配,除非‘!’使用。

[!] --physdev-is-in ,如果數據包已通過網橋接口輸入,則匹配。

[!] --physdev-is-out ,如果數據包將通過網橋接口離開,則匹配。。

[!] --physdev-is-bridged ,如果數據包正在橋接,因此不被路由,則匹配。這僅在FORWARD鏈和POSTROUTING鏈中有用。

iptables -A FORWARD -m physdev --physdev-in ap1_+ -j DROP //禁止匹配ap1_*的接口轉發
iptables -I FORWARD -m physdev --physdev-in ap1_+ -s 192.168.4.1/32  -j ACCEPT //允許轉發源地址192.168.4.1/32 
iptables -I FORWARD -m physdev --physdev-in ap1_+ -d 192.168.4.1/32  -j ACCEPT//允許轉發目標地址192.168.4.1/32 

iptables -D FORWARD -m physdev --physdev-in ap1_+ -j DROP
iptables -D FORWARD -m physdev --physdev-in ap1_+ -s 192.168.4.1/32  -j ACCEPT
iptables -D FORWARD -m physdev --physdev-in ap1_+ -d 192.168.4.1/32  -j ACCEPT

 

備註:

我是看了這篇博客解決的這個問題:https://blog.csdn.net/yangyang031213/article/details/103791996

關於更多match(iptables -m)使用推薦這個文章:http://blog.itpub.net/29270124/viewspace-2611838/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章