Ağ yığını yapılandırma araçları

Android işletim sistemi standart Linux ağ iletişim yardımcı programlarını içerir ifconfig, ip ve ip6tables gibi. Bu yardımcı programlar sistem görüntüsünde bulunur ve tüm Linux ağ iletişimi yığınıdır. Android 7.x ve önceki sürümleri çalıştıran cihazlarda Bu ikili programların doğrudan çağrılmasına izin verilir. Bu da şu sorunları çözer:

  • Ağ yardımcı programları sistem görüntüsünde güncellendiğinden kararlı bir uygulamadır.
  • Ağ iletişimi yardımcı programların kapsamı o kadar geniş ki evrilmeleri zor sistem görüntüsü sağlar.

Android 8.0 ve sonraki sürümleri çalıştıran cihazlarda satıcı bölümü aynı kalır ancak sistem bölümü bir güncelleme alır. Bunu başarmak için Android 8.0 bir yandan sabit, sürümlü bir arayüz tanımlarken diğer yandan da Tedarikçi firma ve sistem görüntüsünün birbirlerine bağımlılığını iyi bir set.

Tedarikçiler, platform tarafından sağlanan ağ yapılandırma yardımcı programlarını kullanarak yapılandıramazsınız, ancak bu yardımcı programlar henüz HIDL arayüz sarmalayıcı. Android 8.0, böyle bir arayüzü tanımlamak için netutils-wrapper-1.0 aracı.

Netutils sarmalayıcı

netutils sarmalayıcı yardımcı programı, Linux'un bir alt kümesini sağlar sistem bölümü güncellemelerinden etkilenmeyen ağ yığını yapılandırması. Android 8.0, sarmalayıcıların Bu yardımcı programlarla aynı bağımsız değişkenler, /system/bin şöyle:

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

Sembol bağlantılar, netutils ile sarmalanmış ağ yardımcı programlarını gösterir. sarmalayıcı içerir:

  • ip
  • iptables
  • ip6tables
  • ndc
  • tc

Bu yardımcı programları Android 8.0 ve sonraki sürümlerde kullanmak için satıcının uygulamaları şu kurallara uymanız gerekir:

  • Tedarikçi süreçleri yürütülmemelidir /system/bin/netutils-wrapper-1.0 doğrudan; şunları yapmaya çalışır: hata ile sonuçlanır.
  • netutils-wrapper-1.0 tarafından sarmalanan tüm yardımcı programlar başlatılmalıdır alerjik reaksiyona neden olabilir. Örneğin, bunu daha önce yapan tedarikçi kodunu (/system/bin/ip <FOO> <BAR>) - /system/bin/ip-wrapper-1.0 <FOO> <BAR>.
  • Platformda, alan geçişi olmadan sarmalayıcıların yürütülmesi yasaktır. SELinux politikası. Bu kural değiştirilmemelidir ve Android Uyumluluk Test Paketi (CTS)
  • Yardımcı programları doğrudan yürütme (ör. /system/bin/ip <FOO> <BAR>) platform SELinux politikalarında da yasaklanmıştır. Bu kural, CTS'de karşılaştırılarak test edilir.
  • Sarmalayıcı başlatması gereken herhangi bir tedarikçi firma alanı (işlem), SELinux politikasında aşağıdaki alan geçiş kuralını uygulayın: domain_auto_trans(VENDOR-DOMAIN-NAME, netutils_wrapper_exec, netutils_wrapper)

Netutils sarmalayıcı filtreleri

Sarmalanmış yardımcı programlar, Linux'un neredeyse tüm özelliklerini yapılandırmak için kullanılabilir. ağ iletişimi yığını. Ancak, istikrarlı bir tutarlılığı korumak mümkün olduğundan arayüze sahip olduğunu ve sistem bölümünün güncellenmesine izin verdiğini, yalnızca belirli kombinasyonların komut satırı bağımsız değişkenine izin veriliyor; diğer komutlar reddedilir.

Tedarikçi arayüzleri ve zincirler

Sarmalayıcı, bir tedarikçi firma arayüzü kavramına sahiptir. Bunlar, genellikle hücresel veri arayüzleri gibi tedarikçi firma kodu tarafından yönetilir. Genellikle, Wi-Fi gibi diğer arayüz türleri de HAL'ler ve bahsedeceğim. Sarmalayıcı, tedarikçi arayüzlerini ada göre tanır (normalde ifade) sağlar ve tedarikçi kodunun üzerinde birçok işlem yapmasına olanak tanır. Şu anda tedarikçi arayüzleri şunlardır:

  • Adları "oem" ile biten arayüzler ve ardından şuna benzer bir sayı gelir: oem0 veya r_oem1234.
  • Mevcut SOC ve OEM uygulamaları tarafından kullanılan arayüzler; ör. rmnet_data[0-9]

Genellikle çerçeve tarafından yönetilen arayüzlerin adları (ör. wlan0) hiçbir zaman tedarikçi firma arayüzü değildir.

Sarmalayıcı da benzer bir tedarikçi firma zincirleri kavramına sahiptir. Bunlar kullanılır iptables komutlarında kullanılır ve adlarıyla da tanınır. Şu anda, tedarikçi zincirleri:

  • oem_ ile başlayın.
  • Mevcut SOC ve OEM uygulamaları tarafından kullanılır (ör. nm_ veya qcom_.

İzin verilen komutlar

Şu anda izin verilen komutlar aşağıda listelenmiştir. Kısıtlamalar yürütülen komut satırlarında bir dizi normal ifadedir. Ayrıntılı bilgi için system/netd/netutils_wrappers/NetUtilsWrapper-1.0.cpp numaralı telefona.

IP

ip komutu; IP adreslerini, yönlendirmeyi ve IPsec'i yapılandırmak için kullanılır. şifreleme ve bir dizi başka ağ parametresi içerir. Sarmalayıcı, şu komutları kullanın:

  • Tedarikçi firma tarafından yönetilen arayüzlerde IP adresleri ekleme ve kaldırma.
  • IPsec şifrelemesini yapılandırın.

iptables ve ip6tables

iptables ve ip6tables komutları şu amaçlarla kullanılır: Güvenlik duvarı, paket yönetme, NAT ve diğer paket başına işlemleri yapılandırma. Sarmalayıcı aşağıdaki komutlara izin verir:

  • Tedarikçi zincirlerini ekleyin ve silin.
  • Şuraya giden paketlere işaret eden herhangi bir zincirde kurallar ekleyin ve silin: (-i) veya (-o) tedarikçi arayüzü arasından.
  • Başka bir zincirdeki herhangi bir noktadan tedarikçi zincirine atlayın.

ND

ndc, netd arka plan programıyla iletişim kurmak için kullanılır. Android'de çoğu ağ yapılandırmasını gerçekleştirir. Sarmalayıcı aşağıdakilere izin verir: komutları:

  • OEM ağları oluşturun ve kaldırın (oemXX).
  • OEM ağlarına tedarikçi firma tarafından yönetilen arayüzler ekleme.
  • OEM ağlarına rota ekleyin.
  • IP yönlendirmeyi global olarak ve tedarikçi arayüzlerinde etkinleştirin veya devre dışı bırakın.

tc

tc komutu, trafiği sıraya alma ve şekillendirmeyi yapılandırmak için kullanılır. çok faydalı oluyor.