При подключении моего ПК к точке доступа Android Wi-Fi он присвоил 192.168.42.x
адрес моему ПК. Мне действительно нужно изменить это, так как это конфликтует с одной из наших рабочих подсетей - возможно ли это?
К сожалению, нет возможности изменить диапазон IP-адресов для встроенной поддержки модема даже в CyanogenMod. IP-адрес точки доступа Wi-Fi жестко запрограммирован в android.net.wifi.WifiStateMachine.startTethering() ; IP-адрес USB-модема жестко запрограммирован в com.android.server.connectivity.Tethering .
Однако, если ваш телефон рутирован, вы можете попробовать использовать сторонние приложения для модема, которые имеют возможность изменить диапазон IP-адресов. Например, когда встроенный USB-модем был сломан в альфа-версиях CyanogenMod для Samsung Galaxy W, я использовал Wired Tether для Root Users , у которого есть такая опция. Для модема Wi-Fi вы можете попробовать приложение Wireless Tether для корневых пользователей от тех же авторов, в котором также есть возможность изменить диапазон IP-адресов.
Поскольку код Google был закрыт, приведенные выше ссылки больше не работают. Некоторые люди экспортировали исходный код из этих репозиториев на GitHub:
Однако дальнейшая разработка не велась, и приложения, вероятно, больше не работают на последних версиях Android.
На всякий случай, если кто-то захочет попробовать эти устаревшие приложения, я смог найти несколько файлов APK в архиве кода Google :
Встроенный Wi-Fi-модем Android предназначен для использования 192.168.43.1/24 в качестве сервера с netd
обработкой модема с использованием dnsmasq
. Первый диапазон DNS равен 192.168.42.1-254
и , а второй диапазон DNS равен 192.168.43.1-254
.
Netd не легко изменить. Для связи с ним требуется сокет, и этот сокет используется, когда андроид начинает привязку. Но просматривая исходные файлы для Tethering.java
(я использовал Froyo) мы видим:
// 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";
И позже мы видим, что эти диапазоны используются, КАК РЕЗЕРВНЫЕ КОПИИ .
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 являются не жестко заданные 42 и 43, а чтение из array.config_tether_dhcp_range, внутреннего массива строк. Но в настоящее время он пуст.
Вы можете редактировать структуру Android. На моем телефоне так /system/framework/framework-res.apk
. В Интернете есть множество руководств по редактированию framework- res.apk , от простых строк до полной тематики. Найдите один для вашего телефона и версии Android.
Главное, что вы хотите изменить, это/res/values/arrays.xml
Искать<array name="config_tether_dhcp_range" />
Изменить на:
<string-array name="config_tether_dhcp_range">
<item>192.168.x.y</item>
<item>192.168.x.z</item>
</string-array>
скомпилируйте/заархивируйте/подпишите по мере необходимости (следуйте инструкциям), затем переустановите.
Если вам нужно более одного диапазона, просто скопируйте два элемента снова и снова. Вам всегда нужно указать начало и конец для каждого диапазона. Старайтесь, чтобы он был таким же /24, т.е. 192.168.50.
5 192.168.50.99
или сколько угодно. Вы можете подтвердить, что он работает, busybox ps | grep dnsmasq
или, если у вас нет busybox, ps dnsmasq
используйте pid в cat /proc/pid/cmdline
. Вы должны получить (или аналогичный):
/system/bin/dnsmasq --no-daemon --no-poll -no-resolv --dhcp-range=192.168.50.5,192.168.50.99,1h
FWIW, мой модем WIFI использует dnsmasq
диапазоны по умолчанию, но мой компьютер был назначен 192.168.43.147/24
и шлюз 192.168.43.1/24
. Не знаю, почему у вас по умолчанию указан 42.x
адрес.
Я знаю, что это старый пост, но решил предоставить обновление. Похоже, что некоторые производители и версии Android теперь позволяют изменять диапазон IP-подсети для DHCP-сервера через пользовательский интерфейс при использовании функции точки доступа Wi-Fi. Вот где его найти на HTC One M8 под управлением Android 6.0. YMMV.
На экране «Мобильная точка доступа» щелкните значок с тремя точками (больше), перейдите в «Дополнительно», затем в «Настройки локальной сети». В разделе «Локальный IP» измените IP-адрес на желаемый IP-адрес. В разделе «Локальный DHCP» измените начальный IP-адрес, чтобы он соответствовал подсети вашего IP-адреса.
Трент
Диапазон IP-адресов DHCP по умолчанию жестко запрограммирован, поэтому вы не можете изменить его без перестройки ПЗУ с измененным исходным кодом. Или используйте небольшой лайфхак. Замените /system/bin/dnsmasq
(сервер DHCP/DNS до Android 9) пользовательским сценарием оболочки, который заменяет старую подсеть новой перед выполнением фактического dnsmasq
двоичного файла.
Подробные инструкции см. в разделе Как изменить диапазон IP-адресов DHCP по умолчанию?
dnsmasq
.Теперь они динамичны. У меня есть устройство, которое при подключении к точке доступа телефона получает адрес 192.168.XXX.85, где ХХХ постоянно меняется, возможно, ежедневно или при каждой перезагрузке.
ВВК
Джим Климов
Ирфан Латиф