Android'de WIFI Tethering (Hotspot) DHCP ayarları nasıl yapılandırılır?

Bilgisayarımı Android Wi-Fi hotspot'a bağlarken, bilgisayarıma 192.168.42.x adresi atadı. İş alt ağlarımızdan biriyle çakıştığı için bunu gerçekten değiştirmem gerekiyor - bu mümkün mü?

Ne yazık ki, CyanogenMod'da bile yerleşik tethering desteği için IP adresi aralığını değiştirmenin bir yolu yoktur. Wi-Fi hotspot IP'si android.net.wifi.WifiStateMachine.startTethering() içinde sabit kodlanmıştır; USB tethering IP'si com.android.server.connectivity.Tethering içinde sabit kodlanmıştır.

Ancak, telefonunuz root edilmişse, IP adresi aralığını değiştirme seçeneğine sahip üçüncü taraf tethering uygulamalarını kullanmayı deneyebilirsiniz. Örneğin, Samsung Galaxy W için CyanogenMod alfalarında yerleşik USB tethering bozulduğunda, böyle bir seçeneği olan Wired Tether for Root Users uygulamasını kullandım. Wi-Fi tethering için aynı yazarların Wireless Tether for Root Users uygulamasını deneyebilirsiniz, bu da IP adresi aralığını değiştirme seçeneğine sahiptir.


Google Code kapatıldığı için yukarıdaki bağlantılar artık çalışmıyor. Bazı kişiler kaynak kodunu bu depolardan GitHub'a aktarmıştır:

Ancak, daha fazla geliştirme faaliyeti olmadı ve uygulamalar muhtemelen artık son Android sürümlerinde çalışmıyor.

Birisi bu eski uygulamaları denemek isterse diye, Google Code Archive'te bazı APK dosyaları bulabildim:

Yorumlar (4)

Android yerleşik wifi tethering, sunucu olarak 192.168.43.1/24 kullanmak üzere tasarlanmıştır ve netd, dnsmasq kullanarak tethering işlemini gerçekleştirir. İlk DNS aralığı 192.168.42.1-254 ve 2. DNS aralığı 192.168.43.1-254tür.

Netd'yi değiştirmek kolay değildir. Onunla iletişim kurmak için bir soket gerekir ve android tethering'i başlattığında bu soket alınır. Ancak Tethering.java (Froyo kullandım) için kaynak dosyalarına baktığımızda şunu görüyoruz:

// usb client will be provided 192.168.42.129
private static final String USB_NEAR_IFACE_ADDR      = "192.168.42.129";
private static final String USB_NETMASK              = "255.255.255.0";

// FYI - the default wifi is 192.168.43.1 and 255.255.255.0

private String[] mDhcpRange;
private static final String DHCP_DEFAULT_RANGE1_START = "192.168.42.2";
private static final String DHCP_DEFAULT_RANGE1_STOP  = "192.168.42.254";
private static final String DHCP_DEFAULT_RANGE2_START = "192.168.43.2";
private static final String DHCP_DEFAULT_RANGE2_STOP  = "192.168.43.254";

Ve daha sonra bu aralıkların YEDEKLEME olarak kullanıldığını görüyoruz.

    mDhcpRange = context.getResources().getStringArray(
            com.android.internal.R.array.config_tether_dhcp_range);
    if ((mDhcpRange.length == 0) || (mDhcpRange.length % 2 ==1)) {
        mDhcpRange = new String[4];
        mDhcpRange[0] = DHCP_DEFAULT_RANGE1_START;
        mDhcpRange[1] = DHCP_DEFAULT_RANGE1_STOP;
        mDhcpRange[2] = DHCP_DEFAULT_RANGE2_START;
        mDhcpRange[3] = DHCP_DEFAULT_RANGE2_STOP;
    }

Dhcp aralıkları için ana kaynak sabit kodlanmış 42 ve 43 değil, dahili bir dize dizisi olan array.config_tether_dhcp_range'den okunur. Ancak şu anda boştur.

Android çerçevesini düzenleyebilirsiniz. Benim telefonumda bu /system/framework/framework-res.apk. Framework-res.apk dosyasını düzenlemek için internette basit dizelerden tam temaya kadar bir ton öğretici var. Telefonunuz ve android sürümünüz için bir tane bulun.

Değiştirmek istediğiniz ana şey /res/values/arrays.xml

Look for ``

Değiştir:


     192.168.x.y
     192.168.x.z

gerektiği gibi derleyin/zipleyin/imzalayın (bir öğreticiyi izleyin), ardından yeniden yükleyin.

Birden fazla aralık istiyorsanız, iki öğeyi tekrar tekrar kopyalamanız yeterlidir. Her aralık için her zaman bir başlangıç ve bir bitiş sağlamanız gerekir. Aynı /24 içinde tutmaya çalışın, yani 192.168.50.5 ve 192.168.50.99 ya da her neyse. Çalıştığını busybox ps | grep dnsmasq ile doğrulayabilirsiniz veya busybox ps dnsmasq yoksa cat /proc/pid/cmdline içindeki pid`i kullanabilirsiniz. Şunu almalısınız (veya benzeri):

/system/bin/dnsmasq --no-daemon --no-poll -no-resolv --dhcp-range=192.168.50.5,192.168.50.99,1h

FWIW, WIFI bağlantım varsayılan dnsmasq aralıklarını kullanıyor, ancak bilgisayarıma 192.168.43.147/24 ve ağ geçidi 192.168.43.1/24 atandı. Sizinkinin neden varsayılan olarak 42.x adresine atandığından emin değilim.

Yorumlar (3)

Bunun eski bir gönderi olduğunu biliyorum, ancak bir güncelleme yapabileceğimi düşündüm. Görünüşe göre bazı üreticiler ve Android sürümleri artık WiFi hotspot özelliğini kullanırken kullanıcı arayüzü aracılığıyla DHCP sunucusu için IP alt ağ aralığının değiştirilmesine izin veriyor. İşte Android 6.0 çalıştıran bir HTC One M8'de bunu nerede bulacağınız. YMMV.

Mobil Erişim Noktası ekranından 3 nokta simgesine (daha fazla) tıklayın, Gelişmiş'e ve ardından LAN ayarlarına gidin. Yerel IP" altında IP adresini istediğiniz IP olarak değiştirin. Yerel DHCP" altında başlangıç IP'sini IP adresinizin alt ağıyla eşleşecek şekilde değiştirin.

Trent

Yorumlar (1)