Ağ Yığını Yapılandırma Araçları

Android işletim sistemi ifconfig , ip ve ip6tables gibi standart Linux ağ oluşturma yardımcı programlarını içerir. Bu yardımcı programlar sistem görüntüsünde bulunur ve tüm Linux ağ yığınının yapılandırılmasına olanak tanır. Android 7.x ve önceki sürümleri çalıştıran cihazlarda, satıcı kodunun bu ikili dosyaları doğrudan çağırmasına izin verilir; bu da aşağıdaki sorunları ortaya çıkarır:

  • Ağ yardımcı programları sistem görüntüsünde güncellendiğinden kararlı bir uygulama sağlamazlar.
  • Ağ araçlarının kapsamı o kadar geniştir ki, öngörülebilir davranışı garanti ederken sistem imajını geliştirmek zordur.

Android 8.0 ve üstünü çalıştıran cihazlarda, sistem bölümü bir güncelleme alırken satıcı bölümü aynı kalır. Bunu başarmak için Android 8.0, satıcı ve sistem imajının birbirine bağımlılığını bilinen iyi bir sette tutmak için SELinux kısıtlamalarını kullanırken aynı zamanda kararlı, versiyonlu bir arayüz tanımlama yeteneği sağlar.

Satıcılar, Linux ağ yığınını yapılandırmak için platform tarafından sağlanan ağ yapılandırma yardımcı programlarını kullanabilir, ancak bu yardımcı programlar henüz bir HIDL arabirim sarmalayıcısı içermemektedir. Böyle bir arayüzü tanımlamak için Android 8.0, netutils-wrapper-1.0 aracını içerir.

Netutils sarmalayıcı

netutils sarmalayıcı yardımcı programı, Linux ağ yığını yapılandırmasının sistem bölümü güncellemelerinden etkilenmeyen bir alt kümesini sağlar. Android 8.0, sarmalayıcıların 1.0 sürümünü içerir; bu, /system/bin konumundaki sistem bölümünde kurulu sarılmış yardımcı programlarla aynı argümanları aşağıdaki gibi aktarmanıza olanak tanır:

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

Sembolik bağlantılar, netutils sarmalayıcısı tarafından sarılmış ağ oluşturma yardımcı programlarını gösterir; bunlar arasında şunlar bulunur:

  • ip
  • iptables
  • ip6tables
  • ndc
  • tc

Bu yardımcı programları Android 8.0 ve sonraki sürümlerde kullanmak için satıcı uygulamalarının aşağıdaki kurallara uyması gerekir:

  • Satıcı işlemleri /system/bin/netutils-wrapper-1.0 doğrudan yürütmemelidir; bunu yapmaya çalışmak hatayla sonuçlanacaktır.
  • netutils-wrapper-1.0 tarafından sarılmış tüm yardımcı programlar kendi sembolik bağlantıları kullanılarak başlatılmalıdır. Örneğin, bunu daha önce yapan satıcı kodunu ( /system/bin/ip <FOO> <BAR> ) /system/bin/ip-wrapper-1.0 <FOO> <BAR> olarak değiştirin.
  • Platform SELinux politikasında sarmalayıcıların etki alanı geçişi olmadan çalıştırılması yasaktır. Bu kural değiştirilmemelidir ve Android Uyumluluk Test Paketi'nde (CTS) test edilmiştir.
  • Yardımcı programların (örneğin, /system/bin/ip <FOO> <BAR> ) satıcı süreçlerinden doğrudan çalıştırılması da platform SELinux politikalarında yasaktır. Bu kural değiştirilmemelidir ve CTS'de test edilmiştir.
  • Bir sarmalayıcı başlatması gereken herhangi bir satıcı etki alanı (işlem), SELinux politikasına aşağıdaki etki alanı geçiş kuralını eklemelidir: domain_auto_trans( VENDOR-DOMAIN-NAME , netutils_wrapper_exec, netutils_wrapper) .

Netutils sarma filtreleri

Sarılmış yardımcı programlar, Linux ağ yığınının hemen hemen her yönünü yapılandırmak için kullanılabilir. Bununla birlikte, kararlı bir arayüz sağlamanın ve sistem bölümündeki güncellemelere izin vermenin mümkün olduğundan emin olmak için, yalnızca belirli komut satırı argümanı kombinasyonlarına izin verilir; diğer komutlar reddedilecektir.

Satıcı arayüzleri ve zincirleri

Paketleyicinin satıcı arayüzleri konsepti vardır. Bunlar, hücresel veri arayüzleri gibi genellikle satıcı kodu tarafından yönetilen arayüzlerdir. Tipik olarak diğer arayüz türleri (Wi-Fi gibi) HAL'ler ve çerçeve tarafından yönetilir. Sarmalayıcı, satıcı arayüzlerini ada göre tanır (normal bir ifade kullanarak) ve satıcı kodunun bunlar üzerinde birçok işlem gerçekleştirmesine olanak tanır. Şu anda satıcı arayüzleri şunlardır:

  • Adları "oem" ile biten ve ardından oem0 veya r_oem1234 gibi bir sayı gelen arayüzler.
  • Mevcut SOC ve OEM uygulamaları tarafından kullanılan rmnet_data[0-9] gibi arayüzler.

Genellikle çerçeve tarafından yönetilen arayüzlerin adları ( wlan0 gibi) hiçbir zaman satıcı arayüzleri değildir.

Ambalaj kağıdı da benzer bir satıcı zinciri konseptine sahiptir. Bunlar iptables komutlarında kullanılır ve aynı zamanda isimle de tanınır. Şu anda satıcı zincirleri:

  • oem_ ile başlayın.
  • Mevcut SOC ve OEM uygulamaları tarafından kullanılır; örneğin nm_ veya qcom_ ile başlayan zincirler.

İ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 ifade aracılığıyla uygulanır. Ayrıntılar için system/netd/netutils_wrappers/NetUtilsWrapper-1.0.cpp adresine bakın.

ip

ip komutu IP adreslerini, yönlendirmeyi, IPsec şifrelemesini ve bir dizi başka ağ parametresini yapılandırmak için kullanılır. Sarmalayıcı aşağıdaki komutlara izin verir:

  • Satıcı tarafından yönetilen arayüzlere IP adresleri ekleyin ve kaldırın.
  • IPsec şifrelemesini yapılandırın.

iptables/ip6tables

iptables ve ip6tables komutları güvenlik duvarı, paket yönetimi, NAT ve diğer paket başına işlemleri yapılandırmak için kullanılır. Sarmalayıcı aşağıdaki komutlara izin verir:

  • Satıcı zincirlerini ekleyin ve silin.
  • Bir satıcı arayüzüne giren ( -i ) veya çıkan ( -o ) paketlere atıfta bulunan herhangi bir zincire kurallar ekleyin ve silin.
  • Başka bir zincirin herhangi bir noktasından bir satıcı zincirine atlayın.

ndc

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

  • OEM ağları ( oemXX ) oluşturun ve yok edin.
  • OEM ağlarına satıcı tarafından yönetilen arayüzler ekleyin.
  • OEM ağlarına rota ekleyin.
  • IP iletmeyi genel olarak ve satıcı arayüzlerinde etkinleştirin veya devre dışı bırakın.

TC

tc komutu, satıcı arayüzlerinde trafik sıralamasını ve şekillendirmeyi yapılandırmak için kullanılır.