2012-04-26 9 views
4

私はrootデバイス上でiptablesをサポートするアンドロイドを持っています。getprotobyname error 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 
+0

これはあなたのウェブ検索がなかった場合、あなたが見つけると同じように、既知の問題、ここで質問する前にiptablesとエラーメッセージを確認してください。これが実際に接線ではなく重大である場合は、サポートされていない関数でiptablesを修正するか、必要がないようにiptablesを使用する必要があります。 –

答えて

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

+0

これを試してみましたが、今度はgetprotobynumber()bionic/libc/bionic/stubs.c:384を実装しようとしていますか? – Dakkaron

+0

@Dakkaronおそらくあなたは 'getprotobynumber()'を実装していない古いAndroidバージョンを使用していますか?その場合、あなたの唯一のオプションは、 '-p'を省略し、すべてのプロトコルのルールを設定するように思えます。 –

+0

Android 4.1.2でも 'getprotobynumber'エラーが表示されます – user276648

1

は、一部のデバイスでは、これは単なる警告かもしれないが、ルールがOKになります。 iptables -L INPUT -nv を使用してルールが表示されていることを確認してから、試してみてください。

+1

'iptables'はこのエラーが発生したときにコマンドを実行しているようですが、私の推測では' -p tcp'の部分を無視してすべてのプロトコルのルールを設定するだけです。ルール内のプロトコルを含めることが必須である場合は、プロトコル番号を使用します。 –