Я могу редактировать все важные аспекты моей точки доступа/маршрутизатора в параметрах настройки конфигурации точки доступа/маршрутизатора.
Я не понимаю, как работает DHCP при использовании телефона Android в качестве беспроводной точки доступа/маршрутизатора, и хотел выяснить это .
Одна из моих попыток получить эту информацию для себя заключалась в том, чтобы попытаться перейти 192.168.6.1
через веб-браузер — это, конечно же, IP-адрес телефона. Я надеялся увидеть какую-то страницу настройки маршрутизатора, которую вы обычно видите при настройке обычного проводного/беспроводного маршрутизатора Ethernet через веб-браузер, но, к сожалению, такой страницы не было.
Я провел небольшое исследование и обнаружил, что вы можете получить некоторую базовую информацию о конфигурации IP телефона, загрузив эмулятор терминала и выполнив несколько основных команд *nix.
Я искал что-то большее - графический интерфейс был бы отличным, но я приму любые предложения о том, как получить доступ к спецификациям конфигурации маршрутизации телефона.
Есть ли какая-либо «страница настройки маршрутизатора», к которой я могу получить доступ, когда я включаю беспроводную точку доступа на своем телефоне Android?
Встроенный 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.
FWIW, используя «Ethernet Tethering» на моем Samsung S20, мое подключенное устройство получает адрес 192.168.13.200/24 и шлюз 192.168.13.25.
Интересно, что мое приложение «Net Analyzer» показывает внешний IP-адрес моего телефона как 172.58.200.200 и внутренний IP-адрес 33.15.32.108/28.
Сколько роутеров в моем телефоне...?
Сергей Власов
Ирфан Латиф
dnsmasq
— это DHCP/DNS-сервер Android. Вы можете настроить его,dnsmasq.conf
например, для постоянного назначения статического IP-адреса привязанным клиентам или с помощью некоторых хаков, например, для постоянного изменения IP-адреса точки доступа или для изменения диапазона IP-адресов DHCP точки доступа по умолчанию .