Давайте рассмотрим две сети: 1) домашняя сеть и 2) офисная сеть.

У меня есть приложение, которое при запуске приложения получит системный IP-адрес и MAC-адрес установленного компьютера.

Поскольку оба (дом / офис) являются частными сетями, при запуске приложения оно получит IP-адрес в пределах одного из следующих диапазонов частных IP-адресов.

10.0.0.0 through 10.255.255.255
172.16.0.0 through 172.31.255.255
192.168.0.0 through 192.168.255.255

У меня вопрос, есть ли способ отличить домашнюю сеть от офисной при запуске приложения.

Например, если я запускаю приложение внутри офисной сети, мой IP попадает в диапазон

172.16.0.0 through 172.31.255.255

И если я запускаю приложение в домашней сети, мой IP попадает в диапазон.

192.168.0.0 through 192.168.255.255

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

Но есть возможности, что пользователь может изменить свой IP-адрес на свой офисный диапазон, не выходя из домашней сети.

Если это так, как можно определить, из какой сети пришел системный IP-адрес пользователя?

Любая помощь будет оценена ...

2 ответа2

1

Самый простой способ - проверить MAC-адрес DHCP-серверов (когда вы получите от него ответ).

Если вам необходимо учитывать статические IP-адреса, вы можете проверить MAC-адрес шлюза по умолчанию.

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

0

В зависимости от доступных вам сетевых информационных инструментов и от того, как они настроены.

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

C:\>ipconfig
[ .. extra info deleted for brevity .. ]
Default Gateway . . . . . . . . . : 192.168.2.1

(Вы можете также использовать IP-адрес DHCP-сервера (если есть) вместо шлюза, но они часто совпадают ..) Из этого я могу найти MAC-адрес шлюза с:

c:\> arp -a 192.168.2.1
[ .. extra info deleted for brevity .. ]
Internet Address      Physical Address      Type
192.168.2.1           08-86-3b-06-ef-bd     dynamic

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

Конечно, я предполагаю, что вы хотите иметь возможность извлекать эту информацию автоматически, без необходимости вручную вводить команды при каждом подключении. Но это, опять же, будет зависеть от доступных вам инструментов (версия ОС и т.д.). Вы также можете поискать в Интернете инструменты командной строки, которые написали другие, которые выполняют все вышеперечисленное за один шаг и выплевывают только MAC-адрес шлюза (я мог бы даже написать его сам, если его там уже нет, а другие проявляют интерес).)

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