Ketika menghubungkan PC saya ke hotspot Wi-Fi Android, ia menetapkan alamat 192.168.42.x
ke PC saya. Saya benar-benar perlu mengubah ini karena bertentangan dengan salah satu subnet kerja kami - apakah ini mungkin?
Sayangnya, tidak ada cara untuk mengubah rentang alamat IP untuk dukungan tethering bawaan, bahkan di CyanogenMod. IP hotspot Wi-Fi di-hardcode di android.net.wifi.WifiStateMachine.startTethering(); IP tethering USB di-hardcode di com.android.server.connectivity.Tethering.
Namun, jika ponsel Anda di-root, Anda dapat mencoba menggunakan aplikasi pihak ketiga untuk tethering yang memiliki opsi untuk mengubah rentang alamat IP. Misalnya, ketika USB tethering bawaan rusak di CyanogenMod alpha untuk Samsung Galaxy W, saya menggunakan Wired Tether for Root Users, yang memiliki opsi tersebut. Untuk penambatan Wi-Fi, Anda dapat mencoba aplikasi Wireless Tether for Root Users dari penulis yang sama, yang juga memiliki opsi untuk mengubah rentang alamat IP.
Karena Google Code ditutup, tautan di atas tidak lagi berfungsi. Beberapa orang mengekspor kode sumber dari repositori tersebut ke GitHub:
Namun, tidak ada aktivitas pengembangan lebih lanjut, dan aplikasi-aplikasi tersebut mungkin tidak lagi berfungsi pada versi Android terbaru.
Kalau-kalau ada yang ingin mencoba aplikasi-aplikasi usang itu, saya bisa menemukan beberapa file APK di Google Code Archive:
Penambatan wifi bawaan Android didesain untuk menggunakan 192.168.43.1/24 sebagai server, dengan netd
menangani penambatan, menggunakan dnsmasq
. Jangkauan DNS pertama adalah 192.168.42.1-254
dan dan jangkauan DNS kedua adalah 192.168.43.1-254
.
Netd tidak mudah untuk diubah. Netd membutuhkan soket untuk berkomunikasi dengannya, dan soket itu diambil ketika android mulai menambatkan. Tetapi melalui file sumber untuk Tethering.java
(saya menggunakan Froyo) kita melihat:
// 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";
Dan kemudian kita melihat rentang tersebut digunakan, Sebagai BACKUPS.
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;
}
Sumber utama untuk rentang dhcp bukanlah hardcoded 42 dan 43, tetapi dibaca dari array.config_tether_dhcp_range, sebuah array string internal. Tetapi saat ini kosong.
Anda dapat mengedit kerangka kerja android. Di ponsel saya, itu adalah /system/framework/framework-res.apk
. Ada banyak sekali tutorial online untuk mengedit framework-res.apk, mulai dari string sederhana hingga tematik lengkap. Temukan satu untuk ponsel dan versi android Anda.
Hal utama yang ingin Anda ubah adalah /res/values/arrays.xml
Cari <array name="config_tether_dhcp_range" />
Ubah ke:
<string-array name="config_tether_dhcp_range">
<item>192.168.x.y</item>
<item>192.168.x.z</item>
</string-array>
kompilasi/zip/sign sesuai kebutuhan (ikuti tutorial), lalu instal ulang.
Jika anda menginginkan lebih dari satu range, salin saja kedua item tersebut berulang-ulang. Anda harus selalu menyediakan awal dan akhir untuk setiap rentang. Usahakan agar tetap dalam /24 yang sama, yaitu 192.168.50.
5 dan 192.168.50.99
atau apa pun. Anda dapat mengkonfirmasikannya bekerja dengan busybox ps | grep dnsmasq
atau jika Anda tidak memiliki busybox ps dnsmasq
maka gunakan pid di cat /proc/pid/cmdline
. Anda akan mendapatkan (atau yang serupa):
/system/bin/dnsmasq --no-daemon --no-poll -no-resolv --dhcp-range=192.168.50.5,192.168.50.99,1h
FWIW, penambatan WIFI saya menggunakan rentang dnsmasq
default, namun komputer saya ditetapkan 192.168.43.147/24
dan gateway 192.168.43.1/24
. Tidak yakin mengapa komputer Anda secara default menggunakan alamat 42.x
.
Saya tahu ini adalah postingan lama, tapi saya pikir saya akan memberikan pembaruan. Tampaknya beberapa produsen dan versi Android sekarang MEMUNGKINKAN perubahan rentang subnet IP untuk server DHCP melalui UI saat menggunakan fitur hotspot WiFi. Di sinilah tempat untuk menemukannya pada HTC One M8 yang menjalankan Android 6.0. YMMV.
Dari layar Hotspot Seluler, klik ikon 3 titik (lebih), pergi ke Advanced, lalu pengaturan LAN. Di bawah "Local IP" ubah alamat IP ke IP yang Anda inginkan. Di bawah "Local DHCP" ubah IP awal agar sesuai dengan subnet alamat IP Anda.
Trent