По разным причинам у меня дома есть 3 широкополосных маршрутизатора WiFi (или, скажем, моя личная лаборатория по хобби). На стороне WAN один - FTTH, другой - ADSL, а третий - 4G-LTE. На стороне WLAN им назначены подсети 192.1.xx, 192.2.xx, 192.3.xx, и все они настроены на назначение IP-адреса DHCP запрашивающим устройствам в диапазоне 192.x.1.0 - 192.x.200.0, и выше 192.x.200.0 диапазон зарезервирован для статического IP-адреса.

У домашнего хозяйства (как и многие в наши дни) есть полдюжины телефонов / планшетов на базе Android и несколько компьютеров. Все устройства используют DHCP для назначения IP-адресов. Однако, как можно предположить, устройство может быть подключено к любому из 3-х WiFi-роутеров, и в результате может иметь любой IP-адрес (в диапазоне 192.x.1 ~ 192.x.200, где x = 1, 2, 3).

Я пытаюсь разработать приложение для Android, которое должно использовать TCP/IP для связи с конкретным сервером. Сервер представляет собой приложение Linux, работающее внутри виртуальной машины (32-разрядный гостевой Ubuntu, работающий на гипервизоре VMWare Workstation Pro 14) на ноутбуке с Windows 10. Ноутбуку также назначается IP-адрес динамически (DHCP). Виртуальная машина Linux использует виртуальный сетевой адаптер в режиме NAT.

Вот схема, чтобы объяснить настройку:

Проблема в том, что из-за использования динамического IP-адреса и использования явного IP-адреса (частный класс, таким образом, не управляемый через DNS), мне приходится часто перенастраивать IP-адрес сервера в клиентском приложении Android. Простым решением было бы перейти на использование статического IP-адреса для серверов - однако мне интересно, есть ли альтернативный подход, который является простым и элегантным?

2 ответа2

2

Попробуйте зарезервировать DHCP, если это поддерживается микропрограммой вашего маршрутизатора. Для DHCPv4 все, что вам нужно, это MAC-адрес и желаемый IP-адрес; резервирование гарантирует, что DHCP всегда будет предоставлять зарезервированный IP-адрес устройству с данным MAC-адресом.

Клиентам всегда будет присвоен один и тот же адрес, но имейте в виду, что они по-прежнему являются клиентами DHCP. Если DHCP переходит в автономный режим на срок, превышающий срок аренды DHCP, он потеряет адрес и вернется к адресу APIPA. Кроме того, приложения, которым требуется статический IP-адрес, могут не удовлетворяться резервированием, поскольку IP-адрес все еще арендован (например, ADDS).

Надеюсь, это поможет.

1

Этот вопрос состоит из двух частей. Первая часть - как работать с 3-мя WAN-соединениями, вторая - как искать назначенные IP-адреса.

Вторая часть на самом деле не так сложна: у вас должен быть один сегмент ЛВС для всего вашего дома, при необходимости используя маршрутизаторы в качестве повторителей Wi-Fi. В этом сегменте локальной сети вам нужен один DHCP-сервер в сочетании с одним DNS-сервером. DHCP-сервер запомнит имена клиентов в запросе DHCP и предоставит их DNS-серверу (или вы можете назначить имена на основе MAC-адреса).

Таким образом, вы сможете получить доступ ко всем устройствам в вашей домашней сети по имени. Есть маршрутизаторы, которые уже предлагают такую функциональность по умолчанию.

Сложная часть - это 3 WAN соединения. Традиционные IP-протоколы не допускают множественную адресацию, поэтому вы не можете использовать несколько интернет-соединений одновременно. Я не знаю, почему у вас есть 3 WAN-соединения, может быть, вам нужна какая-то схема аварийного переключения, или, может быть, вы хотите принять решение на основе клиентских устройств.

Если вам не нужно унифицированное решение, и вы настаиваете на использовании 3-х маршрутизаторов для 3-х подсетей, вы все равно можете попытаться настроить один DNS-сервер для всех трех, но предоставить текущую информацию этому DNS-серверу будет сложнее.

Назначение статических IP-адресов, конечно же, тоже решение, хотя вам придется редактировать файлы конфигурации каждый раз, когда что-то меняется, что может быть хлопотно. Поэтому я предпочитаю единое центральное решение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .