本文介绍了getprotobyname错误的iptables的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经用的android iptables的支持植根设备上。

我似乎得到这个错误,任何人有任何想法,为什么?

 的iptables -A INPUT -p tcp的-i eth0的--dport 8000 -m状态--state NEW -j ACCEPT
 

 整我!实施getprotobyname()仿生/ libc中/仿生/ 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 NEW -j ACCEPT

I have android with iptables support on a rooted device.

I seem to get this error, anyone have any idea why?

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 uses Bionic libc, which is a really minimal libc that is missing lots of things. That error message is saying that getprotobyname() is not implemented in Bionic libc. iptables seems to run the command anyway when this error is triggered, but my guess is that its ignoring the -p tcp part and just setting the rule for all protocols.

Luckily that function is not essential to working with iptables. getprotobyname() just converts protocol names like tcp to a number (tcp == 6). You can find those numbers here: http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml

Use the protocol number instead -p 6 to eliminate the error message:

iptables -A INPUT -p 6 -i eth0 --dport 8000 -m state --state NEW -j ACCEPT

这篇关于getprotobyname错误的iptables的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-08 09:12