У меня есть устройство tun / tap, которое используется для чтения входящих пакетов с одного интерфейса и отправки их в виде пакетов UDP через другой интерфейс.Я мог бы реализовать это и мог читать пакеты ICMP, отправленные в интерфейс tun / tap, а также получать их удаленно, используя UDP.Но проблема возникает, когда я пытаюсь изменить шлюз по умолчанию интерфейса ввода на устройство tun / tap, чтобы я мог прочитать все входящие данные из tun / tap.Когда это сделано, я не могу отправить UDP-пакеты, так как маршрутизация не является правильной.
Я также попытался использовать опцию «SO_BINDTODEVICE» в сокете comm, но все еще не работал.Обратите внимание, что я не использовал метод write () в tun / tap.Я просто использовал функцию read (), собирал данные и отправлял их через соединение через сокет UDP.
Пожалуйста, дайте мне знать, если мой подход неверен, или любой другой способ обойти это.Спасибо.
/********More Details********/
Спасибо, Роб.
Я пытаюсь добиться симуляции коммутации заголовков на основе IP (ROHC) в канале с высокой задержкой.
Дляэто у меня 4 виртуальные машины.VM1 - это обычный настольный компьютер.VM2 - это шлюз, который принимает пакеты с помощью tun / tap (из VM1) и осуществляет связь на основе UDP с VM4.VM3 - это канал, в котором можно установить такие параметры, как задержка, частота ошибок и т. Д.VM4 подключен к глобальной сети.Пользователь в VM1 должен иметь возможность просматривать WAN, как обычно.Пожалуйста, найдите схему ниже.
IP Packets
|
| +------------------+ +--------------+ +----------------+
'---|eth1..... | | | | |
| | | | | | |
| tun/tap | | eth0|___|UDP Sock eth0|___
| | | | | | | | | |
| ..UDP Sock|_____|eth1 | | | | | |
| | | | | +tun/tap+ | '
+------------------+ +--------------+ +----------------+ WAN
VM2 VM3(Channel) VM4
Обновление:
Спасибо, Томми.Ваше решение сработало.Я мог бы получить пакеты UDP одним способом до конечного шлюза NAT.Но я не мог получить обратный путь к работе до сих пор.Я попытался включить маскарад с помощью iptables, а также настроить маршрут хоста к tuntap на VM1, но он не работал.У меня есть несколько вопросов по этому поводу.1) В VM4 я получаю данные UDP и записываю в tun / tap.Это будет направлено в WAN ядром.Но для входящего пакета, мне снова нужно читать, используя tun / tap?В этом случае мне нужно сделать чтение и запись в разных потоках?Я спрашиваю об этом, потому что мне нужно транспортировать их также как данные UDP.Дайте мне знать, если я что-то здесь упускаю.Еще раз большое спасибо за вашу помощь.