我有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