Найти активное подключение к Интернету с помощью libpcap Mac

Я пытаюсь отслеживать пакеты для текущего активного интернет-соединения, используя pcaplib. Но я не уверен, как я могу найти текущее активное интернет-соединение. Я знаю, что pcap_findalldevs() вернет список доступных сетевых устройств. но пользователь может использовать en0, en1 или даже VPN-соединение поверх них. Мне было интересно, как я могу найти текущее подключение к Интернету и как я могу получать уведомления об его изменении?


person Abcd Efg    schedule 27.09.2012    source источник


Ответы (1)


В OS X (или во многих других операционных системах) нет ничего, что явно указывало бы на то, какой интерфейс является «текущим подключением к Интернету».

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

Несколько более простой способ, который, вероятно, даст правильный ответ в большинстве, если не во всех случаях, состоит в том, чтобы взять вывод pcap_findalldevs() и найти первый интерфейс с адресом AF_INET или AF_INET6 (не ищите просто первый интерфейс с адресом AF_INET6). любой адрес, как в OS X и *BSD, который может включать адреса канального уровня) и не имеет установленного PCAP_IF_LOOPBACK.

person Community    schedule 28.09.2012