Как создать виртуальный сетевой интерфейс, управляющийся программой?
======================================================================

 Всем привет.  
  

Появилась идея, которая лежит в концепции Internet-over-Radio.  
  

В двух словах, идея самого концепта такова: машина имеет некий радиоинтерфейс (приемопередатчик, и нет, это не Wi-Fi :) ) и программу к нему, которая может управлять им. Допустим, таких машин две. Тогда они могут по радиоканалу обмениваться информацией, задавая любой формат пакетов, заданный программой управления. Ну значит, мы можем передовать по радио и сетевые пакеты.  

В ОСах, в Линуксе, в частнотси, есть понятие сетевых интерфейсов, которые взаимодействуют с приложением и с ethernet-адаптером, обрабатывая пакеты в соотв. с разными уровнями модели OSI. Таким образом, ethernet-адаптер передает готовые ethrnet-кадры либо в сеть, либо выше по модели, а приложение, также просто либо принимает, либо передает данные в интерфейс.   

Так вот, вопрос в том, что можно ли как-бы заменить ethernet-адаптер программой? Т.е. чтобы то, что нужно передать наружу в сеть, система передала некой программе, и, соответственно, то, что передать приложению, программа могла передать системе. По сути, я просто хочу заменить физический уровень моедли OSI, но только не эзернетом или Wi-Fi, а просто программой.  

Среди того, что я гуглил, находил информацию про виртуальные TUN/TAP интерфейсы, но, кажется, это не совсем то, что мне поможет.  

Как быть? 

 Вот tun\tap вам и нужен. 

 Да, это называется драйвер или ядреный модуль к вашему радиосвистку. 

 Может [это чтиво](https://m.habr.com/ru/post/372177/) поможет разобраться?