5

我已经为 android 模拟器编译了 Linux,并启用了完整的 netfilter 功能。在从源代码构建 android 后得到了一个 iptables 二进制文件。

当我将此二进制文件推送到模拟器时

我可以成功执行如下命令。

iptables -L
iptables -F
iptables -A INPUT -s www.google.com -j DROP 

出现此错误:

# # iptables -L
getsockopt for multiport failed strangely: No such file or directory
getsockopt for multiport failed strangely: No such file or directory
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
# 

# iptables -A INPUT -s www.google.com -j DROP
getsockopt for multiport failed strangely: No such file or directory
getsockopt for multiport failed strangely: No such file or directory
FIX ME! implement getgrnam() bionic/libc/bionic/stubs.c:344

但至少上面的命令他们工作!

但是当我尝试

iptables-save     or
iptables-restore

我得到错误说

iptables-save: not found

在我的配置文件中

CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m

问题是什么..??以及如何在 android 中启用完整的 iptables 功能,或者如何安全地保存当前活动的 iptables 规则并在下次重新启动时重新加载它们。

请帮忙。谢谢你!

4

2 回答 2

2

iptables-saveiptables-restore二进制文件不是由默认的 Android 系统 makefile 构建的。

您需要将规则添加到Android.mk文件中$mydroid/external/iptables/以构建它们。源文件,iptables-save.c并且iptables-restore.c已经在该目录中。

未经测试,但要构建iptables-save,在Android.mk. 冲洗并重复iptables-restore

#
# Build iptables-save
#

include $(CLEAR_VARS)

LOCAL_C_INCLUDES:= \
    $(LOCAL_PATH)/include/ \
    $(KERNEL_HEADERS)

LOCAL_CFLAGS:=-DNO_SHARED_LIBS
LOCAL_CFLAGS+=-DIPTABLES_VERSION=\"1.3.7\"

LOCAL_SRC_FILES:= \
    iptables-save.c 

LOCAL_MODULE_TAGS:=debug
LOCAL_MODULE:=iptables-save

LOCAL_STATIC_LIBRARIES := \
    libiptc \
    libext

include $(BUILD_EXECUTABLE)
于 2011-04-05T01:00:43.397 回答
1

这是我添加到我的 Android.mk 中的内容,以便同时获得 iptables-save 和 iptables-retore。它可以在 android 4.0.3 上编译。


#------------------------------------------------ ---------------
# iptables-保存


包括 $(CLEAR_VARS)

LOCAL_C_INCLUDES:= \
    $(LOCAL_PATH)/../include/

LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
LOCAL_CFLAGS+=-DALL_INCLUSIVE
LOCAL_CFLAGS+=-DXTABLES_INTERNAL
# 容纳没有设置__ANDROID__的arm-eabi-4.4.3工具
LOCAL_CFLAGS+=-D__ANDROID__

LOCAL_SRC_FILES:= \
    iptables-save.c iptables.c xshared.c

LOCAL_MODULE_TAGS := 可选
LOCAL_MODULE:=iptables-保存

LOCAL_STATIC_LIBRARIES := \
    自由扩展\
    libext4\
    libip4tc\
    库表

包括 $(BUILD_EXECUTABLE)


#------------------------------------------------ ---------------
# iptables-恢复


包括 $(CLEAR_VARS)

LOCAL_C_INCLUDES:= \
    $(LOCAL_PATH)/../include/

LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
LOCAL_CFLAGS+=-DALL_INCLUSIVE
LOCAL_CFLAGS+=-DXTABLES_INTERNAL
# 容纳没有设置__ANDROID__的arm-eabi-4.4.3工具
LOCAL_CFLAGS+=-D__ANDROID__

LOCAL_SRC_FILES:= \
    iptables-restore.c iptables.c xshared.c

LOCAL_MODULE_TAGS := 可选
LOCAL_MODULE:=iptables-restore

LOCAL_STATIC_LIBRARIES := \
    自由扩展\
    libext4\
    libip4tc\
    库表

包括 $(BUILD_EXECUTABLE)

于 2012-09-30T10:33:00.497 回答