2011-04-04 8 views
5

Ho compilato Linux per emulatore Android con funzionalità full netfilter abilitata. E ho ottenuto un binario iptables dopo aver creato Android dalla fonte.errore iptables in android: iptables-save e iptables-restore non funzionanti

quando spingo questo binario per l'emulatore

posso eseguire comandi come qui di seguito con successo.

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

con questo errore:

# # 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   
# 

e

# 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 

ma atleast i comandi precedenti funzionano!

ma quando provo

iptables-save  or 
iptables-restore 

ottengo l'errore dicendo

iptables-save: not found 

Nel mio file di configurazione

CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 

qual è il problema .. ?? e come posso abilitare la piena funzionalità di iptables in Android o come posso salvare le attuali regole attive di iptables in modo sicuro e ricaricarle al prossimo riavvio.

per favore aiuto. grazie!

+0

Sono abbastanza sicuro che 'iptables-save' e' iptables-restore' sono diversi binari, quindi, perché non contengono spazi (in contrapposizione a 'iptables -l', per esempio, che lo fa) . – eldarerathis

+0

in realtà intendevo scrivere iptables-save o iptables-retore come una frase. scusa. – Preetam

risposta

1

Questo è quello che ho aggiunto al mio Android.mk al fine di ottenere sia iptables-save e iptables-retore. Compila ok su 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

I file binari iptables-save e iptables-restore non sono creati dai makefile di sistema Android predefiniti.

È necessario aggiungere regole al file Android.mk in $mydroid/external/iptables/ per crearle. I file di origine, iptables-save.c e iptables-restore.c sono già in quella directory.

Non testato, ma per creare iptables-save, aggiungere qualcosa come questo alla fine di Android.mk. Sciacquare e ripetere per 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

Grazie mille David! ma quando faccio questo ottengo molti errori come: – Preetam

+0

scusa, non ero in grado di inserire l'output nei commenti, quindi ho messo in risposta. – Preetam

+0

se il team di android ha modificato l'origine di iptables, per escludere iptables-save che devono aver modificato alcuni file sorgente che chiamano funzioni in iptables-save (credo). Forse a causa di ciò, arriva l'errore. – Preetam