我有Android的iptables支持根設備上。getprotobyname錯誤iptables
我似乎得到這個錯誤,任何人有任何想法爲什麼?
iptables -A INPUT -p tcp -i eth0 --dport 8000 -m state --state NEW -j ACCEPT
FIX ME! implement getprotobyname() bionic/libc/bionic/stubs.c:378
我有Android的iptables支持根設備上。getprotobyname錯誤iptables
我似乎得到這個錯誤,任何人有任何想法爲什麼?
iptables -A INPUT -p tcp -i eth0 --dport 8000 -m state --state NEW -j ACCEPT
FIX ME! implement getprotobyname() bionic/libc/bionic/stubs.c:378
Android使用仿生libc,這是一個非常小的libc,它缺少很多東西。該錯誤消息說getprotobyname()
未在仿生libc中實現。 iptables
似乎無論如何運行命令,當這個錯誤被觸發,但我的猜測是,它忽略了-p tcp
部分,只是設置所有協議的規則。
幸運的是,這個函數對於使用iptables來說並不重要。 getprotobyname()
只是將協議名稱(如tcp)轉換爲數字(tcp == 6)。你可以在這裏找到這些數字:http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml
使用協議號,而不是-p 6
消除錯誤信息:
iptables -A INPUT -p 6 -i eth0 --dport 8000 -m state --state NEW -j ACCEPT
試過這個,現在我得到了「FIX ME!實現getprotobynumber()bionic/libc/bionic/stubs.c:384」 – Dakkaron 2014-04-28 11:49:27
@Dakkaron也許你正在使用一個甚至沒有'getprotobynumber()'實現的舊版Android版本?在這種情況下,似乎你唯一的選擇是省略'-p'併爲所有協議設置規則。 – 2014-07-09 13:36:02
我也在Android 4.1.2上遇到'getprotobynumber'錯誤 – user276648 2016-11-28 02:59:41
您可以輸入6,而不是TCP的。
的iptables -A INPUT -p 6(而不是iptables的INPUT -A -p TCP)
http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml
在某些設備上,這可能只是一個警告,但該規則將被確定。 檢查規則是否使用iptables -L INPUT -nv 出現,然後嘗試使用。
當這個錯誤被觸發時,'iptables'似乎可以運行命令,但我的猜測是它忽略了'-p tcp'部分,並且只是爲所有協議設置規則。如果在規則中包括協議,則使用協議號碼是必需的。 – 2013-08-22 15:51:15
這是一個已知的問題,因爲你會發現,如果你做了網頁搜索在iptables和錯誤消息之前問這裏。如果這實際上是關鍵而不是切線,那麼你需要用不支持的函數來修補iptables或者以避免需要的方式來使用它。 – 2012-04-27 15:28:36