2011-04-04 2 views
5

Я скомпилировал Linux для эмулятора android с полной функциональностью netfilter. И получил двоичный файл iptables после сборки андроида из источника.ошибка iptables в android: iptables-save и iptables-restore не работают

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

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

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 в андроиде или как можно безопасно сохранить текущие активные правила iptables и перезагрузить их при следующей перезагрузке.

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

+0

Я уверен, что 'Iptables-save' и' Iptables-restore' различные исполняемые файлы, следовательно, почему они не содержат пробелов (в отличие от 'IPTables -L', например, что делает) , – eldarerathis

+0

Фактически я хотел написать iptables-save или iptables-retore в качестве предложения. Прости. – Preetam

ответ

1

Это то, что я добавил к моему Android.mk, чтобы получить как Iptables сохранение и Iptables-retore. Он компилирует ok на 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) 

2

Бинарные файлы iptables-save и iptables-restore не созданы по умолчанию для андроидных систем 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) 
+0

Большое спасибо Дэвиду! но когда я делаю это, я получаю много ошибок: – Preetam

+0

извините, я не смог ввести вывод в комментарии, поэтому я положил это в ответ. – Preetam

+0

, если команда android изменила исходный код iptables, чтобы исключить iptables-save, чем они должны были изменить некоторые исходные файлы, которые вызывают функции в iptables-save (я думаю). Может быть, из-за этого возникает ошибка. – Preetam

 Смежные вопросы

  • Нет связанных вопросов^_^