4

我在有根设备上安装了支持 iptables 的 android。

我似乎得到了这个错误,有人知道为什么吗?

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
4

3 回答 3

6

您可以键入 6 而不是 tcp。

iptables -A INPUT -p 6(而不是 iptables -A INPUT -p tcp )

http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml

于 2012-08-13T20:58:46.497 回答
6

Android 使用 Bionic libc,这是一个非常小的 libc,缺少很多东西。该错误消息表示getprotobyname()未在 Bionic 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

于 2013-08-22T15:55:57.680 回答
1

On some devices this may be just a warning but the rule will be OK. Check that the rule appears using iptables -L INPUT -nv and then try it.

于 2012-08-13T21:30:36.190 回答