Запись данных в интерфейс linux tun
Я создал интерфейс linux tun, установил ipaddr, широковещательную рассылку и т. д., используя open/ioctl apis Вот так выглядит интерфейс Tun,
TEST_TUN: mtu 1500 qdisc pfifo_fast состояние UNKNOWN группа по умолчанию qlen 500 ссылка / нет inet 45.45.45.1/24 глобальная область действия TEST_TUN valid_lft forever предпочитаемый_lft forever
Tun_fd получает любое сообщение, написанное виртуальным хостом (привязанное к адресу 45.45.45.1:udp=7070) (fd возвращается при создании устройства tun).
Если tun_fd пишет msg ( IP-адрес (dst=45.45.45.1)+ транспорт (udp_dst=7070)+ полезная нагрузка) не получен на виртуальном хосте. Захват Wireshark показывает, что пакет принимается на стороне ядра, но виртуальный хост не получил ни одного пакета.
что может быть причиной того, что ядро не пересылает пакет на виртуальный хост?
1 ответ
Включили ли ваше тюн-устройство?
в противном случае вы можете просто сделать это с помощью ..
$sudo ifconfig tun0 up
и вы также можете сделать это с помощью команд ioctle ..
если ваше устройство уже находится в рабочем состоянии, то у вас linux destro должен иметь пересылку .. вы можете сделать это через ..
#echo "1" > /proc/sys/net/ipv4/ip_forwarding
или же
$sudo sysctl net.ipv4.ip_forward=1
$sudo sysctl -p
затем дело доходит до правил маршрутизации ... вы должны установить правило маршрутизации, чтобы весь трафик захватывался через ваш виртуальный интерфейс ..
$sudo ip route 128/1 dev tun
эта команда добавит маршрут в вашу таблицу маршрутизации ядра, и весь трафик будет проходить через ваш виртуальный интерфейс.
Если я вас правильно понял, может быть, это будет вам полезно ..