Android ऑपरेटिंग सिस्टम में मानक Linux नेटवर्किंग सुविधाएं शामिल हैं
जैसे कि ifconfig
, ip
, और ip6tables
.
ये सुविधाएं, सिस्टम इमेज पर रहती हैं और इनके कॉन्फ़िगरेशन को चालू करती हैं
पूरे Linux नेटवर्किंग स्टैक को. Android 7.x और इससे पहले के वर्शन वाले डिवाइसों पर,
वेंडर कोड को इन बाइनरी को सीधे कॉल करने की अनुमति है, जो
ये समस्याएं हल करना:
- नेटवर्क उपयोगिताएं, सिस्टम इमेज में अपडेट होती हैं, इसलिए वे एक स्थिर तरीके से लागू करें.
- नेटवर्किंग सुविधाओं का दायरा इतना व्यापक है कि उसे विकसित करना मुश्किल है उस दौरान सिस्टम की इमेज दिख जाएगी.
Android 8.0 और उसके बाद के वर्शन वाले डिवाइसों पर, वेंडर पार्टीशन पहले जैसा ही रहता है जब सिस्टम पार्टिशन को एक अपडेट मिलता है. इसे पाने के लिए, Android 8.0 इस टूल का इस्तेमाल करके, स्थिर और वर्शन-युक्त इंटरफ़ेस को परिभाषित किया जा सकता है. वेंडर और सिस्टम की इमेज की एक-दूसरे पर निर्भरता को बरकरार रखने के लिए, जाना-पहचाना अच्छा सेट है.
वेंडर, प्लैटफ़ॉर्म की दी गई नेटवर्क कॉन्फ़िगरेशन सुविधाओं का इस्तेमाल इन कामों के लिए कर सकते हैं
Linux नेटवर्किंग स्टैक को कॉन्फ़िगर कर सकता है, लेकिन इन उपयोगिताओं में अभी तक
HIDL इंटरफ़ेस रैपर. ऐसा इंटरफ़ेस तय करने के लिए, Android 8.0 में
netutils-wrapper-1.0
टूल.
नेट बिल्स रैपर
netutils
रैपर यूटिलिटी Linux का एक सबसेट उपलब्ध कराती है
नेटवर्क स्टैक कॉन्फ़िगरेशन, जिस पर सिस्टम पार्टिशन के अपडेट का कोई असर नहीं होता है.
Android 8.0 में रैपर का वर्शन 1.0 होता है, जिससे आप
रैप की गई यूटिलिटी के समान तर्क, जो कि इस पर सिस्टम पार्टीशन में इंस्टॉल किए गए
/system/bin
इस तरह से है:
u:object_r:system_file:s0 /system/bin/ip-wrapper-1.0 -> netutils-wrapper-1.0 u:object_r:system_file:s0 /system/bin/ip6tables-wrapper-1.0 -> netutils-wrapper-1.0 u:object_r:system_file:s0 /system/bin/iptables-wrapper-1.0 -> netutils-wrapper-1.0 u:object_r:system_file:s0 /system/bin/ndc-wrapper-1.0 -> netutils-wrapper-1.0 u:object_r:netutils_wrapper_exec:s0 /system/bin/netutils-wrapper-1.0 u:object_r:system_file:s0 /system/bin/tc-wrapper-1.0 -> netutils-wrapper-1.0
सिमलिंक, उन नेटवर्किंग उपयोगिताओं को दिखाते हैं जिन्हें netutils
ने रैप किया है
रैपर, जिसमें ये शामिल हैं:
ip
iptables
ip6tables
ndc
tc
Android 8.0 और इसके बाद के वर्शन में इन यूटिलिटी का इस्तेमाल करने के लिए, वेंडर को इस तरह से लागू करना ज़रूरी है इन नियमों का पालन करें:
- वेंडर की प्रोसेस पूरी नहीं होनी चाहिए
/system/bin/netutils-wrapper-1.0
सीधे; करने की कोशिश करता है में गड़बड़ी होती है. netutils-wrapper-1.0
में शामिल सभी यूटिलिटी लॉन्च कर दी जानी चाहिए अपने सिमलिंक का इस्तेमाल करके. उदाहरण के लिए, वह वेंडर कोड बदलें जिससे पहले ऐसा किया गया था (/system/bin/ip <FOO> <BAR>
) से/system/bin/ip-wrapper-1.0 <FOO> <BAR>
.- प्लैटफ़ॉर्म में, डोमेन ट्रांज़िशन के बिना रैपर एक्ज़ीक्यूट करने की अनुमति नहीं है SELinux नीति. इस नियम में बदलाव नहीं किया जाना चाहिए और इसकी जांच Android कंपैटबिलिटी टेस्ट सुइट (सीटीएस).
- यूटिलिटी को सीधे तौर पर एक्ज़ीक्यूट करना (उदाहरण के लिए,
/system/bin/ip <FOO> <BAR>
) वेंडर प्रोसेस से SELinux नीतियों में भी शामिल नहीं है. यह नियम नहीं होना चाहिए बदल दिया गया है और सीटीएस के हिसाब से इसकी जांच की जाती है. - किसी भी वेंडर डोमेन (प्रोसेस) को रैपर लॉन्च करने की ज़रूरत होती है.
SELinux नीति में नीचे दिए गए डोमेन ट्रांज़िशन नियम का पालन करें:
domain_auto_trans(VENDOR-DOMAIN-NAME, netutils_wrapper_exec, netutils_wrapper)
.
Netutils रैपर फ़िल्टर
रैप की गई यूटिलिटी का इस्तेमाल Linux के करीब-करीब किसी भी पहलू को कॉन्फ़िगर करने के लिए किया जा सकता है नेटवर्किंग स्टैक. हालांकि, यह पक्का करने के लिए कि हर साइट पर इंटरफ़ेस हो सकता है और सिस्टम पार्टीशन को सिर्फ़ कुछ कॉम्बिनेशन में अपडेट करने की अनुमति देता है के कमांड लाइन आर्ग्युमेंट की अनुमति है; अन्य निर्देश अस्वीकार कर दिए जाते हैं.
वेंडर इंटरफ़ेस और चेन
रैपर में वेंडर इंटरफ़ेस का कॉन्सेप्ट है. ये इंटरफ़ेस हैं आम तौर पर, इसे वेंडर कोड से मैनेज किया जाता है, जैसे कि मोबाइल डेटा इंटरफ़ेस. आम तौर पर, दूसरे टाइप के इंटरफ़ेस (जैसे कि वाई-फ़ाई) को HAL और फ़्रेमवर्क शामिल है. रैपर वेंडर इंटरफ़ेस की पहचान अपने नाम से करता है (सामान्य सर्च इंजन का इस्तेमाल करके एक्सप्रेशन) और वेंडर कोड को उन पर कई काम करने की अनुमति देता है. फ़िलहाल, वेंडर इंटरफ़ेस ये हैं:
- ऐसे इंटरफ़ेस जिनके नाम के आखिर में "oem" होता है उसके बाद एक संख्या, जैसे कि
oem0
याr_oem1234
. - ऐसे इंटरफ़ेस जिनका इस्तेमाल मौजूदा एसओसी और ओईएम को लागू करने के दौरान किया जाता है, जैसे कि
rmnet_data[0-9]
.
ऐसे इंटरफ़ेस के नाम जिन्हें आम तौर पर फ़्रेमवर्क मैनेज करता है (जैसे
wlan0
) कभी भी वेंडर इंटरफ़ेस नहीं होते हैं.
रैपर का भी ऐसा ही सिद्धांत है वेंडर चेन. इनका इस्तेमाल किया गया है
iptables
कमांड में और नाम से भी पहचाने जाते हैं. इस समय,
वेंडर चेन:
oem_
से शुरू करें.- इनका इस्तेमाल मौजूदा SOC और OEM लागू करने वालों के लिए किया जाता है. उदाहरण के लिए, ऐसी चेन जो इतने समय से शुरू होती है
nm_
याqcom_
.
अनुमति वाले निर्देश
फ़िलहाल, जिन निर्देशों को अनुमति दी गई है उनकी सूची यहां दी गई है. पाबंदियां इनके ज़रिए लागू की गई हैं
एक्ज़ीक्यूट की गई कमांड लाइन पर रेगुलर एक्सप्रेशन का सेट होता है. जानकारी के लिए, इसे देखें
system/netd/netutils_wrappers/NetUtilsWrapper-1.0.cpp
तक.
ip
ip
कमांड का इस्तेमाल आईपी पतों, रूटिंग, और आईपी सिक्योरिटी को कॉन्फ़िगर करने के लिए किया जाता है
और कई अन्य नेटवर्क पैरामीटर हैं. रैपर, आपको
ये कमांड इस्तेमाल करें:
- वेंडर से मैनेज किए जाने वाले इंटरफ़ेस में आईपी पते जोड़ें और हटाएं.
- आईपी सिक्योरिटी एन्क्रिप्शन कॉन्फ़िगर करें.
iptables और ip6tables
iptables
और ip6tables
निर्देशों का इस्तेमाल इन कामों के लिए किया जाता है
फ़ायरवॉल, पैकेट मैंगलिंग, NAT, और अन्य हर पैकेट की प्रोसेसिंग को कॉन्फ़िगर करें.
रैपर इन निर्देशों का इस्तेमाल करता है:
- वेंडर चेन जोड़ें और मिटाएं.
- ऐसी किसी भी चेन में नियम जोड़ें और मिटाएं जिसमें पैकेट की जानकारी शामिल होती है
(
-i
) या (-o
) वेंडर इंटरफ़ेस से बाहर. - किसी भी दूसरी चेन में कहीं से भी वेंडर चेन पर जाएं.
एनडीसी
ndc
का इस्तेमाल करके, netd
डीमन से यह पता लगाया जाता है कि
Android पर सबसे ज़्यादा नेटवर्क कॉन्फ़िगरेशन करती है. रैपर इन कामों को करने की अनुमति देता है
आदेश:
- OEM नेटवर्क (
oemXX
) बनाएं और उन्हें नष्ट करें. - OEM नेटवर्क में वेंडर की ओर से मैनेज किए जाने वाले इंटरफ़ेस जोड़ें.
- OEM नेटवर्क पर रूट जोड़ें.
- दुनिया भर में और वेंडर इंटरफ़ेस पर आईपी फ़ॉरवर्ड करने की सुविधा चालू या बंद करें.
टीसी
tc
निर्देश का इस्तेमाल, ट्रैफ़िक की सूची बनाने और उसके हिसाब से बदलाव करने के लिए किया जाता है
ज़्यादा जानकारी उपलब्ध कराता है.