Проблемы связи во вторичном интерфейсе tap0

Какое распределение? В моей системе RHEL 5 usleep является частью initscripts об/мин.

0
задан 21 December 2011 в 21:00
1 ответ

Похоже, вы немного запутались в том, как работает IPv6.

Давайте сначала проясним несколько вещей: вы не запускаете клиент или сервер » на "сетевой интерфейс, это сбивает с толку, особенно когда вы говорите об устройствах tun или tap, которые нарушают некоторые из наших соглашений. Кроме того, вы не « открываете » устройство ответвления (кроме случаев, когда вы пишете помощник tun / tap, что, похоже, здесь не так), вместо этого вы связываете адрес в сокет , и операционная система позже определит, как направлять ваши исходящие пакеты на сетевые интерфейсы и как доставлять входящие пакеты от них в ваш локальный процесс. Имейте в виду, что это делает операционная система, а не ваша программа.

Когда ваш процесс привязывает сокет к локальному адресу IPv6, он просто сообщает ОС, с какого адреса будут отправляться пакеты, и что пакеты из сети будут захвачены и ретранслированы вашему процессу. Суффикс ...% tap0 локального адреса ссылки является частью адреса, это всего лишь подсказка для ОС, поскольку все локальные адреса ссылки совместно используют единое глобальное адресное пространство во всех сетях, это не означает, что процесс каким-либо образом привязан или заблокирован к этому конкретному устройству.

Если вы отправляете пакеты на свой компьютер, убедитесь, что они вообще не будут проходить через интерфейс Tap. Возможно, это ваш ответ: единственные пакеты, которые должны проходить через интерфейс Tap, - это те, которые идут к тому, что находится на другой стороне вашего туннеля, но это не так. Нет смысла отправлять туда что-нибудь, что собирается на вашу собственную машину. Вместо этого эти пакеты доставляются через интерфейс lo . Подключите wirehark к интерфейсу lo , и вы должны увидеть пропущенные пакеты.

Когда вы назначаете адрес интерфейсу, операционная система знает, что этот адрес теперь принадлежит вашему компьютеру и что все, что отправлено на этот адрес (включая все, что отправлено самим локальным процессом), должно быть направлено на этот компьютер. Все, что выходит из физических или логических интерфейсов, таких как eth0 или tap0 , действительно отправляется с вашего компьютера, если что-то должно остаться в системе, он должен выполнить разворот на интерфейсе lo , чтобы пакет вернулся в нижнюю часть стека и до принимающих процессов.

Где ОС отслеживает это? В таблице маршрутизации. Попробуйте следующее:

ip -6 route list table all root fe80::/10

Вы должны увидеть один или несколько маршрутов к fe80 :: / 64, по одному для каждого физического или логического сетевого интерфейса с поддержкой IPv6 в вашей системе, а также несколько локальных локальных адресов для каждого из назначенных адресов IPv6. . Вы заметите, что локальные адреса настроены на использование dev lo , поэтому ОС знает, что все, что идет по этим адресам, не должно отправляться.

а также несколько локальных локальных адресов для каждого из назначенных адресов IPv6. Вы заметите, что локальные адреса настроены на использование dev lo , поэтому ОС знает, что все, что идет по этим адресам, не должно отправляться.

а также несколько локальных локальных адресов для каждого из назначенных адресов IPv6. Вы заметите, что локальные адреса настроены на использование dev lo , поэтому ОС знает, что все, что идет по этим адресам, не должно отправляться.

1
ответ дан 4 December 2019 в 22:00

Теги

Похожие вопросы