2011-04-04 22 views
5

मैंने पूर्ण नेटफिल्टर कार्यक्षमता सक्षम के साथ एंड्रॉइड एमुलेटर के लिए लिनक्स संकलित किया है। और स्रोत से एंड्रॉइड के निर्माण के बाद एक iptables बाइनरी मिला।आईपॉडबल्स में iptables त्रुटि: iptables-save और 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: not found 

मेरी कॉन्फ़िग फ़ाइल

CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 

समस्या क्या है .. में कह पाने जब मैं

iptables-save  or 
iptables-restore 

कोशिश ?? और मैं एंड्रॉइड में पूर्ण iptables कार्यक्षमता कैसे सक्षम कर सकता हूं या मैं वर्तमान सक्रिय iptables नियमों को सुरक्षित रूप से कैसे सहेज सकता हूं और अगली रीबूट के समय उन्हें पुनः लोड कर सकता हूं।

कृपया मदद करें। धन्यवाद!

+0

मैं यकीन है कि 'iptables-save' और' iptables-restore' अलग binaries कर रहे हैं, कर रहा हूँ इसलिए क्यों वे रिक्त स्थान (, के रूप में विरोध किया, उदाहरण के लिए करने के लिए 'iptables -L', जो करता है) शामिल नहीं है । – eldarerathis

+0

असल में मैं iptables-save या iptables-वाक्य को एक वाक्य के रूप में लिखना चाहता था। माफ़ कीजिये। – Preetam

उत्तर

1

यह है कि मैं क्या आदेश दोनों iptables-बचाने के लिए और iptables-retore प्राप्त करने के लिए मेरी Android.mk को जोड़ दिया है। यह एंड्रॉइड 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 द्विआधारी डिफ़ॉल्ट एंड्रॉइड सिस्टम मेकफ़ाइल द्वारा निर्मित नहीं हैं।

आपको फ़ाइल को $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

यदि एंड्रॉइड टीम ने आईपीटीबल्स-स्रोत को संशोधित करने के लिए iptables स्रोत को संशोधित किया है, तो उन्होंने कुछ स्रोत फ़ाइलों को संशोधित किया होगा जो iptables-save (मुझे लगता है) में फ़ंक्शन कॉल करते हैं। इसके कारण हो सकता है, त्रुटि आती है। – Preetam