Как использовать туннель БОЧКИ/TAP из пользовательской программы?

Установите каждую программу в специализированном дереве каталогов, и использование Убирает или XStow, чтобы заставить все программы появиться в общей иерархии. Уберите создает символьные ссылки от определенного для программы каталога до общего дерева.

Более подробно выберите каталог верхнего уровня, например /usr/local/stow. Установите каждую программу под /usr/local/stow/PROGRAM_NAME. Например, примите меры, чтобы его исполняемые файлы были установлены в /usr/local/stow/PROGRAM_NAME/bin, его страницы справочника в /usr/local/stow/man/man1 и так далее. Если программа использует autoconf, то выполненный ./configure --prefix /usr/local/stow/PROGRAM_NAME. После выполнения make install, выполненный stow:

./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME

И теперь у Вас будут символьные ссылки как они:

/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo

Можно легко отслеживать, каких программ Вы установили путем списка содержания stow каталог, и Вы всегда знаете, какая программа файл принадлежит тому, потому что это - символьная ссылка на местоположение в соответствии с каталогом той программы. Удалите программу путем выполнения stow -D PROGRAM_NAME затем удаляя каталог программы. Можно сделать программу временно недоступной путем выполнения stow -D PROGRAM_NAME (выполненный stow PROGRAM_NAME сделать это доступным снова).

Если Вы хотите смочь быстро переключиться между различными версиями той же программы, использовать /usr/local/stow/PROGRAM_NAME-VERSION как каталог программы. Для обновления от версии 3 до версии 4, версии 4 установки, затем работают stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4.

Более старые версии Убирают, не идет очень далеко вне основ, которые я описал в этом ответе. Более новые версии, а также XStow (который не сохранялся в последнее время) имеют больше расширенных функций, как способность проигнорировать определенные файлы, лучше справиться с существующими символьными ссылками вне убирать каталога (такой как man -> share/man), обработайте некоторые конфликты автоматически (когда две программы обеспечат тот же файл), и т.д.

Если Вы не имеете или не хотите использовать корневой доступ, можно выбрать каталог в соответствии с корневым каталогом, например. ~/software/stow. В этом случае добавить ~/software/bin к Вашему PATH. Если man автоматически не находит страницы справочника, добавляют ~/software/man к Вашему MANPATH. Добавить ~/software/info к Вашему INFOPATH, ~/software/lib/python к Вашему PYTHONPATH, и так далее как применимый.

9
28.03.2011, 21:49
1 ответ

Это не, всегда "туннелируют". БОЧКА/TAP является просто определенными драйверами NIC. С точки зрения сетевого стека они действуют как любые другие сетевые интерфейсы: у них могут быть IP-адреса, могут быть или широковещательные интерфейсы точка-точка. Правила маршрутизации также относятся к ним. Но весь трафик, который записан, к одному из которого сетевые интерфейсы переходят к некоторой программе пространства пользователя для обработки и всем данным, записанным программой пространства пользователя непосредственно к /dev/tunX похож на входящие пакеты для сетевого стека.

В обычном туннелирующем сервере установки и клиенте имеют устройства БОЧКИ с присвоенными адресами. Таблицы маршрутизации, настроенные на них обоих, направляют необходимый трафик к этой БОЧКЕ устройства. Когда пакет направляется к tun0, ядро отправляет его в программу пространства пользователя (клиент), который отправляет этот пакет в другую программу на удаленной машине (сервер) через, например, соединение TCP. На удаленной машине другая программа (сервер) получает пакет от клиента и пишет это в свой собственный /dev/tunX устройство, "вводя" тот пакет в сетевой стек. И туннелировал, пакет обрабатывается как любой другой.

6
27.01.2020, 20:07
  • 1
    Так ответ (в моих целях) должен настроить таблицу маршрутизации к прямому трафику к этим интерфейсам. Это было сутью, которую я упускаю, но теперь я должен смочь найти решение. Кроме того, я ценю объяснение, поскольку оно разрешает вещи.Спасибо! –  Mr. Shickadance 28.03.2011, 22:33
  • 2
    я закончил тем, что использовал "маршрут, добавляет <IP БОЧКИ ADDR> dev gr0". Это позволило мне перенаправлять трафик через новый интерфейс. Еще раз спасибо! –  Mr. Shickadance 29.03.2011, 15:47

Теги

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