Рассмотрим ситуацию, когда устройство под управлением операционной системы Android подключено к некой беспроводной сети Wi-Fi. Пользователь знает имя беспроводной сети (SSID) и пароль для этой сети (если используется безопасный доступ к сети Wi-Fi), но не знает более никаких параметров (IP-адрес основного шлюза, маску подсети, IP-адрес DHCP- и DNS-сервера).
IP-адрес на устройство присваивается автоматически по DHCP. Средствами операционной системы Android возможно узнать следующую информацию о сети, к которой подключено устройство:
Пользователю доступно:
- состояние подключения
- уровень сигнала
- скорость синхронизации (подключения)
- алгоритм безопасности
- IP-адрес, который получило устройство от маршрутизатора (точки доступа)
Для того чтобы узнать IP-адрес основного шлюза и остальную информацию о сетевых интерфейсах устройства, в операционной системе Android существует несколько способов.
1. Более простой способ узнать основную информацию о сетевом интерфейсе предоставляет утилита ifconfig (https://play.google.com/store/apps/details?id=au.wsit.ifconfig.app)
Запущенная утилита сразу показывает:
- IP-адрес, который получило устройство от маршрутизатора
- Маску подcети
- IP-адрес шлюза по умолчанию (т.е. адрес маршрутизатора)
- IP-адрес DHCP-сервера
- IP-адреса DNS-серверов
- Время аренды выданного IP-адреса
- MAC-адрес действующего сетевого интерфейса
2. Можно использовать утилиту Android Terminal Emulator, которая, по сути, выполняет функции командной строки (https://play.google.com/store/apps/details?id=jackpal.androidterm).
Установив данное приложение с Google Play, нужно запустить его и ввести команду ip route show
Данная команда выводит маршрут по умолчанию. Из примера видно, что IP-адрес основного шлюза в текущий момент 192.168.4.1 и трафик идет через интерфейс wlan0.
То есть 192.168.4.1 – это и есть адрес маршрутизатора (точки доступа), к которому подключено устройство и через которое оно выходит в Интернет.
В Android Terminal Emulator можно использовать множество команд, которые актуальны для UNIX-систем.
Так, например, команда netcfg показывает список сетевых интерфейсов на устройстве и их состояние.
Также с помощью команды ip addr show можно узнать более подробную информацию о настройках сетевых интерфейсов, например размер MTU, установленный на каждом из них.
Если есть root-доступ на устройство, команда su позволяет получить права администратора для терминала.
Приведем еще несколько команд, которые могут быть полезны.
Показать информацию о DNS-серверах:
getprop net.dns1
getprop net.dns2
Изменить IP-адреса DNS-серверов (при наличии прав root):
setprop net.dns1 8.8.8.8
setprop net.dns2 8.8.4.4
где 8.8.8.8 и 8.8.4.4 — новые IP-адреса DNS-серверов
Полный список команд можно посмотреть здесь: https://github.com/jackpal/Android-Terminal-Emulator/wiki/Android-Shell-Command-Reference