При подключении моего компьютера к точке доступа Wi-Fi на Android он назначил 192.168.42.x
адрес моему компьютеру. Мне действительно нужно изменить это, так как это конфликтует с одной из наших рабочих подсетей - возможно ли это?
27
Ответы:
К сожалению, нет способа изменить диапазон IP-адресов для встроенной поддержки модема, даже в CyanogenMod. IP-адрес точки доступа Wi-Fi жестко задан в android.net.wifi.WifiStateMachine.startTethering () ; IP-адрес USB-подключения жестко запрограммирован в com.android.server.connectivity.Tethering .
Однако, если ваш телефон рутирован, вы можете попробовать использовать сторонние приложения для модема, у которых есть возможность изменить диапазон IP-адресов. Например, когда встроенный USB-модем был нарушен в CyanogenMod alphas для Samsung Galaxy W, я использовал Wired Tether для корневых пользователей , у которого есть такая опция. Для подключения к Wi-Fi вы можете попробовать приложение Wireless Tether for Root Users от тех же авторов, у которого также есть возможность изменить диапазон IP-адресов.
Поскольку код Google был закрыт, вышеуказанные ссылки больше не работают. Некоторые люди экспортировали исходный код из этих репозиториев в GitHub:
Однако дальнейших разработок не было, и приложения, вероятно, больше не работают на последних версиях Android.
На тот случай, если кто-то захочет попробовать эти устаревшие приложения, я смог найти некоторые APK-файлы в архиве кода Google :
источник
Встроенный Wi-Fi-модем Android предназначен для использования 192.168.43.1/24 в качестве сервера с
netd
использованием модема-модемаdnsmasq
. Первый диапазон DNS192.168.42.1-254
и 2-й диапазон DNS192.168.43.1-254
.Netd не легко изменить. Для связи с ним требуется сокет, и этот разъем берется, когда андроид начинает подключаться. Но, просматривая исходные файлы для
Tethering.java
(я использовал Froyo), мы видим:И позже мы увидим эти диапазоны, как резервные копии .
Основным источником для диапазонов dhcp являются не жестко закодированные 42 и 43, а чтение из array.config_tether_dhcp_range, внутреннего строкового массива. Но это в настоящее время пусто.
Вы можете редактировать рамки Android. На моем телефоне это так
/system/framework/framework-res.apk
. Есть целая тонна учебников онлайн для редактирования рамки-res.apk, от простых строк до полной тематизации. Найти один для вашего телефона и Android-версии.Главное, что вы хотите изменить, это
/res/values/arrays.xml
Искать
<array name="config_tether_dhcp_range" />
Изменить на:
скомпилируйте / запакуйте / подпишите как необходимо (следуйте инструкциям), затем переустановите.
Если вы хотите более одного диапазона, просто скопируйте два элемента снова и снова. Вы всегда должны обеспечить старт и остановку для каждого диапазона. Старайтесь держать его в том же / 24, то есть
192.168.50.
5 и192.168.50.99
или что-то еще Вы можете подтвердить, что он работает,busybox ps | grep dnsmasq
или если у вас нет busybox,ps dnsmasq
используйте pidcat /proc/pid/cmdline
. Вы должны получить (или подобное):FWIW, мой WIFI-модем использует
dnsmasq
диапазоны по умолчанию , но мой компьютер был назначен192.168.43.147/24
и шлюз192.168.43.1/24
. Не уверен, почему ваш42.x
адрес по умолчанию .источник
Я знаю, что это старый пост, но думал, что предоставлю обновление. Похоже, некоторые производители и версии Android теперь позволяют изменять диапазон IP-подсетей для DHCP-сервера через пользовательский интерфейс при использовании функции точки доступа WiFi. Вот где его можно найти на HTC One M8 под управлением Android 6.0. YMMV.
На экране «Мобильная точка доступа» щелкните значок 3 точки (подробнее), перейдите в раздел «Дополнительно», а затем «Параметры локальной сети». В разделе «Локальный IP» измените IP-адрес на нужный вам IP. В разделе «Локальный DHCP» измените начальный IP-адрес, чтобы он соответствовал подсети вашего IP-адреса.
Трент
источник
ПРИМЕЧАНИЕ. Требуется рут.
Диапазон IP-адресов DHCP по умолчанию жестко задан ( 1 ) , вы не можете изменить его, не восстанавливая ПЗУ с измененным исходным кодом. Или использовать небольшой взломать.
Когда вы включаете модем, что происходит (по крайней мере):
hostapd
- демон, который управляет точками доступа - запущен.dnsmasq
- сервер DHCP / DNS (до Pie) - запускается с жестко закодированными аргументами командной строки ( 7 ) (в противном случае можно задать/etc/dnsmasq.conf
( 8 ) ).Таким образом, мы можем заменить
/system/bin/dnsmasq
пользовательский сценарий оболочки, взяв на себя управление процессом между ними. Переименуйте исходный бинарный файл в другое:Создать скрипт
/system/bin/dnsmasq
:Подтвердите название вашего интерфейса Wi-Fi (
wlan0
обычно). Проверьте с помощьюip link
илиls /sys/class/net/
.Кроме того, убедитесь ваша локальная таблица маршрутизации сети является
97
:grep local_network /data/misc/net/rt_tables
. Маршрутизация Android - беспорядок, усложняющийся с каждым новым выпуском. Так что я не уверен, было ли это постоянным или нет. Также, прежде чем вносить какие-либо изменения, проверьте свою политику маршрутизации и таблицы, чтобы выяснить, что вы должны добавить в свой скрипт:Правила SELinux также должны быть определены, если (все или некоторые) еще не определены, и если статус равен
enforcing
. Используйте Magisksuploicy
или другой подобный инструмент, напримерsepolicy-inject
:* не сохраняется при перезагрузке, используйте какой-либо
init.d
скрипт или замените/sepolicy
вramdisk
Установить права на файлы:
Наслаждайтесь!
Или вы можете настроить полную привязку из командной строки, запустив свои собственные процессы. Этот ответ включает в себя инструкции, хотя вопрос в другом.
СВЯЗАННЫЙ:
источник