Arhn - архитектура программирования

tun device: сообщение не получено серверным процессом

Я установил два устройства tun. Данные, которые записываются на каждое tun-устройство, пересылаются через UDP-сокет на другое tun-устройство с помощью простого цикла:

// the tuntap device is created using these flags
ifr.ifr_flags = IFF_TUN | IFF_NO_PI;
[...]

fd_set fd_list;


FD_ZERO(&fd_list);
FD_SET(fd1, &fd_list); // fd1 is the tun device
FD_SET(fd2, &fd_list); // fd2 is the udp socket

int fds[] = {fd1, fd2};
while(select(max(fd1, fd2)+1, &fd_list, NULL, NULL, NULL) > -1) {
    for(i = 0; i < 2; ++i)
        if(FD_ISSET(fds[i], &fd_list)) {
            nread = read(fds[i], buf, sizeof(buf));
            assert(nread > 0);

            ret = write(fds[(i+1)%2], buf, nread);
            if(ret == -1)
                perror("write():");
        }
}

После настройки интерфейсов с помощью

ifconfig tun0 10.0.0.1
ifconfig tun1 10.0.0.2

Я отправляю пинг с одного устройства на другое

ping -I tun1 10.0.0.1

Я вижу, что пакет IPv4 получен сокетом UDP для tun0, и этот пакет правильно записан в tun0. Также наблюдение за трафиком на tun0 с помощью wireshark показывает, что пакет получен tun0. Однако ответный пакет проверки связи не создается.

Я думал, что это может быть особый случай для пакетов ICMP, но когда я использую

socat -d -d -d - TCP-LISTEN:2000,so-bindtodevice=tun0 &
sleep 1
echo 2 | socat -d -d -d - TCP:10.0.0.1:2000,so-bindtodevice=tun1

снова не устанавливается соединение. процесс подключения (второй вызов socat) продолжает запускать только пакеты TCP-SYN и в конечном итоге истекает. Опять же, наблюдение за трафиком на tun0 с помощью wireshark показывает, что пакет TCP-SYN доставлен на устройство tun0.

Почему этот пакет не передается процессу socat TCP-LISTEN, чтобы он мог установить соединение??

02.10.2013

Ответы:


1

Похоже, это ошибка маршрутизации. Когда я запускаю программу на двух разных машинах, пакеты маршрутизируются через устройство tun0 на каждой машине соответственно и http://backreference.org/wp-content/uploads/2010/03/simpletun.tar.bz2 работает нормально. Запуск программы на одной машине дважды не работает!

05.10.2013
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..