SmartLiving.ru

Обсуждение проекта
 
Текущее время: Вт окт 24, 2017 5:01 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 74 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
СообщениеДобавлено: Чт окт 05, 2017 2:39 am 
Не в сети

Зарегистрирован: Чт авг 21, 2014 8:28 am
Сообщения: 561
Откуда: Киров, Россия
Благодарил (а): 140 раз.
Поблагодарили: 197 раз.
miIO - проприетарный шифрованный сетевой протокол Xiaomi, по которому взаимодействуют между собой wifi-устройства из экосистемы Xiaomi (Mi Home). Используется транспорт UDP и порт 54321. Ключ шифрования формируется на основе уникального токена, который есть у каждого устройства.

Использование этого протокола позволяет управлять теми устройствами, которые не имеют открытого api (режима разработчика). Например, Xiaomi Mi Robot Vacuum, Xiaomi Mi Smart WiFi Socket, Xiaomi Philips LED Ceiling Lamp и многие другие. Также позволяет расширить имеющиеся возможности открытого api у xiaomi-шлюза, в частности переводить его в режим сопряжения, привязывать и отвязывать к нему датчики, получать список датчиков и др.

Чтобы совместно с MajorDoMo не использовать дополнительные прокладки в виде python и nodejs, начал работу по реализации библиотеки на php. Основа уже написана и работает.

Функционал разделен и описан классами.
miio.class.php - класс для сетевого взаимодействия по протоколу miIO:
  • прием udp-пакетов из сокета
  • отправка udp-пакетов в сокет
  • процедура рукопожатия (handshake)
  • отправка сообщений устройству
  • прием ответов от устройства
  • поиск устройств (handshake-discovery)
mipacket.class.php - класс для работы с сетевыми udp-пакетами по протоколу miIO:
  • генерация ключа и вектора инициализации из токена
  • расшифровка
  • шифрование
  • парсинг udp-пакета
  • сборка udp-пакета

В качестве примера взаимодействия с устройствами написан скрипт для командной строки miio-cli.php.
Принимаемые параметры:
    --discover all поиск устройств в локальной сети и вывод информации о них
    --discover IP проверка доступности конкретного устройства и вывод информации о нем
    --info получить информацию об устройстве (аналог --discover IP)
    --sendcmd отправить команду (д.б. заключена в одинарные кавычки
    --ip IP-адрес устройства
    --token токен устройства (не обязательно)
    --debug включает вывод отладочной информации
    --help справка по командам
Примеры:
Код:
php miio-cli.php --discover all
php miio
-cli.php --discover 192.168.1.45 --debug
php miio
-cli.php --ip 192.168.1.45 --info
php miio
-cli.php --ip 192.168.1.45 --sendcmd '{"method":"toggle",,"params":[],"id":1}'
php miio-cli.php --ip 192.168.1.47 --sendcmd '{"id":1,"method":"get_prop","params":["power"]}'

Команды управления конкретными устройствами можно узнать в проектах python-miio, nodejs-miio, которые я брал за основу. В них уже реализована поддержка многих популярных девайсов. Либо из дампа трафика, захваченного Wireshark-ом.

Актуальный код брать на гитхабе.
Проект в Connect.

С уважением, skysilver.

_________________
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 3:43 am 
Не в сети

Зарегистрирован: Чт авг 21, 2014 8:28 am
Сообщения: 561
Откуда: Киров, Россия
Благодарил (а): 140 раз.
Поблагодарили: 197 раз.
Описание протокола miIO

1. Общие положения
miIO - проприетарный шифрованный сетевой протокол Xiaomi, по которому взаимодействуют wifi-устройства из экосистемы Xiaomi и приложение Mihome на смартфоне. В качествет транспорта используется UDP и порт 54321. Содержимое пакетов шифруется. Для контроля корректности принимаемых пакетов используется контрольная сумма на основе алгоритма MD5.

Данный протокол используется только при взаимодействии в пределах локальной сети! Взаимодействие между устройствами, приложением Mihome и облаком Xiaomi осуществляется по другому протоколу, расшифровать который пока никому не удалось.

2. Структура пакета
В протоколе miIO различают два типа пакетов - основной и hello-пакет. Hello-пакет применяется для поиска устройств в сети путем его широковещательной рассылки, либо для начала сессии с конкретным устройством. Для отправки устройству непосредственно команд используется основной пакет.

Пакет формируется из данных в hex-формате, состоит из заголовка (header) и полезной нагрузки (data).

Структура полей пакета приведена на схеме:
Вложение:
miIO_пакет.png
miIO_пакет.png [ 25.52 КБ | Просмотров: 257 ]

    Magic - "магическое" число, всегда равно 0х2131 (2 байта).
    Length - длина пакета в байтах(заголовок+данные) (2 байта).
    Unknown - поле неизвестного назначения. Всегда заполнено нулями 0х00000000, а у hello-пакета 0хFFFFFFFF (4 байта).
    Device type - тип устройства (2 байта).
    Device ID - идентификатор устройства (2 байта).
    Time stamp - временная отметка, время работы устройства в секундах (4 байта).
    Checksum - контрольная сумма всего пакета по алгоритму MD5. Перед расчетом КС это поле временно заполняется нулями (16 байт).
    Data - полезная нагрузка произвольной длины - зашифрованные данные, отправляемые устройству. В hello-пакете это поле отсутствует.

В hello-пакете все поля, кроме Magic и Length, принимают значение 0хFF.
Вложение:
miIO_hello.png
miIO_hello.png [ 15.8 КБ | Просмотров: 257 ]

В особом случае, при ответе на hello-пакет, поле Checksum будет содержать 128-битное уникальное значение токена устройства. Это правило всегда актуально для новых, еще не привязанных к wifi устройств. В остальных случаях все зависит от прошивки устройства.

3. Сессия
Любое взаимодействие клиента и устройства начинается с "рукопожатия" (handshake). Клиент отправляет hello-пакет устройству и ждет от него ответ. Устройство в ответном пакете (длиной также 32 байта) отправляет свой тип, идентификатор, время работы в секундах и токен (либо нули вместо него). На основе полученных данных клиент формирует основной пакет с зашифрованной командой и отправляет устройству. Получив и выполнив команду от клиента, устройство отправляет ответный пакет с результатом выполнения принятой команды либо с ошибкой ее выполнения.

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

4. Шифрование
Для шифрования отправляемых данных используется симметричный алгоритм шифрование AES128 в режиме CBC. 128-битные ключ шифрования (Key) и вектор инициализации (IV) формируются из уникального токена устройства по следующим формулам:
    Key = MD5(Token);
    IV = MD5(Token+IV);
Перед шифрованием необходимо выполнить процедуру дополнения данных PKCS#7 padding, а после расшифровки - обратную процедуру.

5. Формат команд (api)
Команды, отправляемые устройству и принимаемые от него, представлены в формате JSON.
    Запрос --> {"id":1,"method":"get_prop","params":["power"]}
    Ответ <-- {"id":1,"result":["ok"]}

Основные поля - это:
    id - идентификатор запроса. Его значение не является обязательным, поэтому можно всегда выставлять равным 1. Но может быть полезен, когда одному и тому же устройству одновременно отправляются команды с разных клиентов.
    method - метод, действие. Возможные варианты зависят от конкретного устройства, но есть и общие для всех.
    params - массив свойств, параметров. Возможные варианты зависят от конкретного устройства.

_________________
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.


Последний раз редактировалось skysilver Вт окт 17, 2017 5:47 pm, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 3:44 am 
Не в сети

Зарегистрирован: Чт авг 21, 2014 8:28 am
Сообщения: 561
Откуда: Киров, Россия
Благодарил (а): 140 раз.
Поблагодарили: 197 раз.
Токен miIO-устройства

Токен - это уникальная 32-ухзначная последовательность символов, используемая для формирования ключа шифрования.
Наличие и знание токена - это обязательное условие успешного управления miIO-устройством (далее устройство).

В целом процедура добавления нового устройства в приложение Mihome выглядит так:
    1. Включаем новое устройство в сеть. Оно создает свою открытую точку доступа.
    2. Приложение Mihome производит поиск новых wifi-сетей, и если находит, то предлагает добавить устройство.
    3. При добавлении телефон подключается к точке доступа, созданной устройством.
    4. Mihome посылает hello-пакет устройству.
    5. Устройство, получив hello-пакет, отправляет ответ на него, в котором содержится токен.
    6. Mihome получает ответ, сохраняет токен в свою базу данных и отправляет устройству команду на подключение к wifi-сети и пароль от нее.
    7. Устройство перезагружается и цепляется к целевой wifi-сети. Телефон также переключается обратно на основную точку доступа.
    8. Mihome и устройство обмениваются пакетами по протоколу miIO, зашифрованного на основе полученного ранее токена.

После привязки устройства к Mihome устройства в большинтсве случаев перестают транслировать свой токен в ответ на hello-пакеты. Это зависит от логики, зашитой в прошивку устройства, и версии этой прошивки. Одни устройства всегда, на любой версии прошивки, открыто отдают свой токен. Вторые отдают токен только до определенной версии прошивки, а после обновления перестают. Ну а третьи сообщают свой токен только в режиме инициализации, т.е. до привязки к Mihome и подключения к wifi-сети.

Исходя из вышеуказанной процедуры, можно рассмотреть несколько вариантов получения токена устройства.
    1. Произвести поиск устройств в сети с помощью handshake discover.
    2. Извлечь токены из базы данных или кеш-файлов приложения Mihome на смартфоне.
    3. Сбросить устройство (или удалить из Mihome) и получить токен в режиме инициализации устройства.

Рассмотрим эти варианты подробнее.

1. Поиск устройств в сети (handshake discover)
Для поиска miIO-устройств необходимо на компьютере с установленным PHP и подключенном к локальной сети выполнить в консоли команду:
Код:
php miio-cli.php --discover all
Результатом команды будет список найденных устройств и в случае успеха их токенов. Если устройство не транслирует свой токен, то значение будет заполнено нулями, и в таком случае выяснять токен придется другими способами.
Вложение:
discoverall.png
discoverall.png [ 8.5 КБ | Просмотров: 203 ]

Можно не опрашивать все устройства в сети, а отправить запрос адресно на конкретный IP:
Код:
php miio-cli.php --discover 192.168.1.47 --debug
Помимо консольной утилиты miio-cli.php можно воспользоваться кросс-платформенным приложением Packet Sender или аналогичными утилитами для смартфонов (например Packet Handler для андроида). В качестве отправляемого сообщения указать "21310020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF". Остальные настройки наглядно представлены на скриншотах.
Вложение:
packsender1.png
packsender1.png [ 208.63 КБ | Просмотров: 203 ]
Вложение:
packethandler1.png
packethandler1.png [ 78.24 КБ | Просмотров: 203 ]
Вложение:
packethandler2.png
packethandler2.png [ 85.8 КБ | Просмотров: 203 ]

2. База данных и кеш-файлы Mihome
На андроид смартфоне с рутом в папке /data/data/com.xiaomi.smarthome/databases/ нужно найти файл базы данных приложения miio2.db и скопировать его в любую пользовательскую папку. Затем с помощью приложения aSQLiteManager открыть эту базу и в таблице devicerecord найти столбец token. В нем и будут токены всех устройств.

Чтобы скопировать файл базы данных на нерутованных смартфонах, нужно включить режим USB-отладки и подключиться по ADB. Затем в консоли ADB сделать резервную копию приложения Mihome командой
Код:
adb backup -noapk com.xiaomi.smarthome -f backup.ab
Полученный архив распаковывается java-утилитой ADB Backup Extractor
Код:
java.exe -jar abe.jar unpack backup.ab backup.tar
Файл backup.tar открываем обычным архиватором (7-zip) и ищем там базу miio2.db. Для просмотра базы на ПК можно воспользоваться SQLite browser.
Вложение:
miio2db.png
miio2db.png [ 52.83 КБ | Просмотров: 203 ]
Вложение:
sqlite.png
sqlite.png [ 97.96 КБ | Просмотров: 203 ]

На рутованных смартфонах токены также можно найти в файлах кеша /data/data/com.xiaomi.smarthome/cache/smrc4-cache. Например, через тот же ADB это выглядит так:
Код:
adb root
adb shell
cd 
/data/data/com.xiaomi.smarthome/cache/smrc4-cache
grep 
-nr token .

3. Сброс устройства и последующая инициализация
Здесь все то же самое, что и в первом варианте. За исключением того, что предварительно нужно подключиться к открытой точке доступа, которую создает не настроенное miIO-устройство, и выяснить какие IP-адреса выданы.
Вложение:
wifi_ap.png
wifi_ap.png [ 43.9 КБ | Просмотров: 203 ]

_________________
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.


Последний раз редактировалось skysilver Ср окт 18, 2017 12:56 am, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 6:13 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 3423
Откуда: Екатеринбург
Благодарил (а): 91 раз.
Поблагодарили: 689 раз.
Надо модуль бы оформить =D удобнее ведь будет.

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен | Код Arduino/esp


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 8:48 am 
Не в сети

Зарегистрирован: Сб мар 12, 2016 6:33 pm
Сообщения: 147
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Хороший проект, откуда исходная информация о протоколе?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 8:53 am 
Не в сети

Зарегистрирован: Сб мар 12, 2016 6:33 pm
Сообщения: 147
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Код:
j1800 /usr/src/miio/php-miio-master # php miio-cli.php --discover all
array(1) {
  [
"discover"]=>
  
string(3"all"
}
Поиск всех
Поиск выполнен
Устройств не найдено.
j1800 /usr/src/miio/php-miio-master # php miio-cli.php --discover 172.16.1.1
array(1) {
  [
"discover"]=>
  
string(10"172.16.1.1"
}
Поиск 172.16.1.1
Поиск выполнен
Устройств не найдено.
j1800 /usr/src/miio/php-miio-master # php miio-cli.php --discover 172.16.1.11
array(1) {
  [
"discover"]=>
  
string(11"172.16.1.11"
}
Поиск 172.16.1.11
Поиск выполнен
Устройств не найдено.
j1800 /usr/src/miio/php-miio-master # php miio-cli.php --discover 172.16.1.11 debug
array(1) {
  [
"discover"]=>
  
string(11"172.16.1.11"
}
Поиск 172.16.1.11
Поиск выполнен
Устройств не найдено.
j1800 /usr/src/miio/php-miio-master # php miio-cli.php --ip 172.16.1.11 --info
array(2) {
  [
"ip"]=>
  
string(11"172.16.1.11"
  
["info"]=>
  
bool(false)
}
Устройств не отвечает.
Необходимо указать команду
        php miio
-cli.php --ip 192.168.1.45 --sendcmd '{'method': 'get_status', 'id': 1}' 


Что-то не работает, ни поиск, ни получение информации по IP.
Мультикаст сообщения при этом от шлюза (172.16.1.11) я принимаю нормально.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 9:15 am 
Не в сети

Зарегистрирован: Чт авг 21, 2014 8:28 am
Сообщения: 561
Откуда: Киров, Россия
Благодарил (а): 140 раз.
Поблагодарили: 197 раз.
Aven писал(а):
Хороший проект, откуда исходная информация о протоколе?
Первоисточник https://github.com/OpenMiHome/mihome-binary-protocol

_________________
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 9:16 am 
Не в сети

Зарегистрирован: Чт авг 21, 2014 8:28 am
Сообщения: 561
Откуда: Киров, Россия
Благодарил (а): 140 раз.
Поблагодарили: 197 раз.
nick7zmail писал(а):
Надо модуль бы оформить =D удобнее ведь будет.
Аха, модуль напрашивается. Надо сначала основные вопросы решить, а потом уж попробую модулем заняться, если толку хватит у меня. ))

_________________
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 9:24 am 
Не в сети

Зарегистрирован: Чт авг 21, 2014 8:28 am
Сообщения: 561
Откуда: Киров, Россия
Благодарил (а): 140 раз.
Поблагодарили: 197 раз.
Aven писал(а):
Что-то не работает, ни поиск, ни получение информации по IP.
Мультикаст сообщения при этом от шлюза (172.16.1.11) я принимаю нормально.
Попробуй такие команды:
Код:
php miio-cli.php --discover 172.16.1.11 --debug
php miio
-cli.php --discover all --debug
Сколько сетевых интерфейсов на компе? В логе апача есть какие-то варнинги и ошибки?

У себя тестил на PHP 5.4.45, Debian 7, один сетевой интерфейс.

В шатном режиме выглядит так:
[Показать] Скрытый текст:
Код:
skysilver@ihome:~$ php miio-cli.php --discover all
array(1) {
  'discover' =>
  string(3) "all"
}
Поиск всех
Поиск выполнен
.
Найдено 2 устройств.
 IP 192.168.1.47 DevType 035a Serial fe8e Token b31c928032e6a4afc898c5c8768a518f
{"result":{"life":400724,"cfg_time":0,"token":"b31c928032e6a4afc898c5c8768a518f","mac":"34:CE:00:81:21:2F","fw_ver":"1.4.1_48","hw_ver":"MW300","model":"yeelink.light.mono1","wifi_fw_ver":"SD878x-14.76.36.p84-702.1.0-WM","ap":{"rssi":-58,"ssid":"wifipoint","bssid":"EC:43:F6:04:48:10"},"netif":{"localIp":"192.168.1.47","mask":"255.255.255.0","gw":"192.168.1.1","gw_mac":"EC:43:F6:04:48:10"},"mmfree":233856,"ot":"otu","otu_stat":[434,352,397,4,381,783],"ott_stat":[0, 0, 0, 0]},"id":1}
 IP 192.168.1.45 DevType 035f Serial 8589 Token c3d059d8e949382cef2c2f31c7f27799
{"result":{"life":1391574,"cfg_time":0,"token":"c3d059d8e949382cef2c2f31c7f27799","mac":"34:CE:00:85:A8:2A","fw_ver":"1.4.1_147","hw_ver":"MW300","model":"lumi.gateway.v3","mcu_fw_ver":"0143","wifi_fw_ver":"SD878x-14.76.36.p84-702.1.0-WM","ap":{"rssi":-49,"ssid":"wifipoint","bssid":"EC:43:F6:04:48:10"},"netif":{"localIp":"192.168.1.45","mask":"255.255.255.0","gw":"192.168.1.1","gw_mac":"EC:43:F6:04:48:10"},"mmfree":168520,"ot":"otu","otu_stat":[579,523,44092,52,43479,393],"ott_stat":[9, 0, 212, 1515]},"id":1}

skysilver@ihome:~$ php miio-cli.php --ip 192.168.1.47 --info
array(2) {
  'ip' =>
  string(12) "192.168.1.47"
  'info' =>
  bool(false)
}
Информация об устройстве:
{
"result":{"life":400764,"cfg_time":0,"token":"b31c928032e6a4afc898c5c8768a518f","mac":"34:CE:00:81:21:2F","fw_ver":"1.4.1_48","hw_ver":"MW300","model":"yeelink.light.mono1","wifi_fw_ver":"SD878x-14.76.36.p84-702.1.0-WM","ap":{"rssi":-57,"ssid":"wifipoint","bssid":"EC:43:F6:04:48:10"},"netif":{"localIp":"192.168.1.47","mask":"255.255.255.0","gw":"192.168.1.1","gw_mac":"EC:43:F6:04:48:10"},"mmfree":233848,"ot":"otu","otu_stat":[434,352,398,4,382,783],"ott_stat":[0, 0, 0, 0]},"id":1}
192.168.1.45 - шлюз
192.168.1.47 - белая лампочка yeelight

_________________
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.


Последний раз редактировалось skysilver Чт окт 05, 2017 9:39 am, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 05, 2017 9:38 am 
Не в сети

Зарегистрирован: Сб мар 12, 2016 6:33 pm
Сообщения: 147
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Код:
# php miio-cli.php --discover all --debug
array(2) {
  ["discover"]=>
  string(3) "all"
  ["debug"]=>
  bool(false)
}
Поиск всех
Поиск устройств
Статус отладки 
[1]

Поиск доступных устройств в локальной сети (handshake discovery)
Сокет успешно создан
Отправляем hello
-пакет на 255.255.255.255 с таймаутом 2
Поиск выполнен
. Устройств не найдено.
j1800 /usr/src/miio/php-miio-master # php miio-cli.php --discover 172.16.1.11 --debug
array(2) {
  ["discover"]=>
  string(11) "172.16.1.11"
  ["debug"]=>
  bool(false)
}
Поиск 172.16.1.11
Взаимодействие с устройством IP 172.16.1.11
Статус отладки 
[1]

Проверяем доступность устройства 172.16.1.11
Сокет успешно создан
Отправляем hello
-пакет на 172.16.1.11 с таймаутом 2
Ошибка чтения из сокета 
[11] Resource temporarily unavailable
Поиск выполнен
. Устройств не найдено.
j1800 /usr/src/miio/php-miio-master # php -v
PHP 7.0.21 (cli) (built: Aug  2 2017 15:03:05) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0
, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.21
, Copyright (c) 1999-2017, by Zend Technologies
j1800 
/usr/src/miio/php-miio-master # uname -a
Linux j1800 4.9.34-gentoo #1 SMP Thu Aug 3 20:26:33 MSK 2017 i686 Intel(R) Celeron(R) CPU J1800 @ 2.41GHz GenuineIntel GNU/Linux
j1800 /usr/src/miio/php-miio-master # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link
/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2
: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link
/ether 0a:e8:4c:68:19:f3 brd ff:ff:ff:ff:ff:ff
3
: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link
/ether 0a:e8:4c:68:19:f4 brd ff:ff:ff:ff:ff:ff
4
: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link
/ether 0a:e8:4c:68:19:f5 brd ff:ff:ff:ff:ff:ff
5
: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link
/ether 00:19:db:3c:f3:8d brd ff:ff:ff:ff:ff:ff


апач тут нипричем, т.к. запускаю из командной строки...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 74 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB