我已经编译了Linux for android模拟器,并启用了完整的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规则并在下次重新启动时重新加载它们。
请帮帮忙。谢谢!
发布于 2011-04-05 09:00:43
iptables-save和iptables-restore二进制文件不是由默认的Android系统makefile构建的。
您需要将规则添加到$mydroid/external/iptables/中的Android.mk文件中才能构建它们。源文件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)https://stackoverflow.com/questions/5541983
复制相似问题