Ошибка iptables в Android: iptables-save и iptables-restore не работает - PullRequest
5 голосов
/ 04 апреля 2011

Я скомпилировал Linux для эмулятора Android с включенной полной функциональностью netfilter. И получил бинарный файл iptables после сборки Android из исходного кода.

Когда я отправляю этот двоичный файл в эмулятор

я могу успешно выполнять команды, как показано ниже.

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

в чем проблема .. ?? и как я могу включить полную функциональность iptables в Android или как мне безопасно сохранить текущие активные правила iptables и перезагрузить их при следующей перезагрузке.

пожалуйста, помогите. спасибо!

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Двоичные файлы iptables-save и iptables-restore не создаются стандартными системными make-файлами Android.

Вам понадобится добавить правила в файл 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)
1 голос
/ 30 сентября 2012

Это то, что я добавил в свой Android.mk, чтобы получить iptables-save и iptables-retore. Компилируется нормально на Android 4.0.3.



#----------------------------------------------------------------
# iptables-save


include $(CLEAR_VARS)

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

LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
LOCAL_CFLAGS+=-DALL_INCLUSIVE
LOCAL_CFLAGS+=-DXTABLES_INTERNAL
# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
LOCAL_CFLAGS+=-D__ANDROID__

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

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE:=iptables-save

LOCAL_STATIC_LIBRARIES := \
    libext \
    libext4 \
    libip4tc \
    libxtables

include $(BUILD_EXECUTABLE)


#----------------------------------------------------------------
# iptables-restore


include $(CLEAR_VARS)

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

LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
LOCAL_CFLAGS+=-DALL_INCLUSIVE
LOCAL_CFLAGS+=-DXTABLES_INTERNAL
# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
LOCAL_CFLAGS+=-D__ANDROID__

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

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE:=iptables-restore

LOCAL_STATIC_LIBRARIES := \
    libext \
    libext4 \
    libip4tc \
    libxtables

include $(BUILD_EXECUTABLE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...