2012-05-10 3 views
4

Я не понимаю, как работает интерфейс tun/tap. Из Википедии, я получил это:связь с интерфейсом tun/tap с физическим устройством

Пакеты, отправляемые операционной системой через TUN/TAP устройства поставляются в пространстве пользователя, который привязывается к устройству. Программа пользовательского пространства также может передавать пакеты в устройство TUN/TAP. В этом случае устройство TUN/TAP передает (или «внедряет») эти пакеты в сетевой стек операционной системы, тем самым эмулируя их прием от внешнего источника.

Теперь предположим, что создаю tun с IP 12.12.12.1. Если на этой машине у меня два сетевых адаптера, смогу ли я связаться с этим tun (12.12.12.1 IP) с внешней машины (скажем, 12.12.12.2), независимо от того, какое устройство NIC подключено к второй машине (скажем, eth0 или eth1)?

Другими словами, являются tun и сетевые адаптеры независимыми друг от друга, или вам необходимо связаться с tun через конкретную сетевую карту?

N.B. Ссылки по теме приветствуются!

ответ

4

Если вы настроили виртуальную сеть, например. 12.12.12.0/24, доступный через ваш виртуальный интерфейс, и вы отправляете пакет в эту сеть с вашего компьютера, модуль ядра, реализующий tun/tap, отправит этот пакет из ядра через персональное устройство в ваше приложение. Это зависит от вашего приложения, что он делает с этим пакетом. Он может быть передан в другое приложение (например, VPN-сервер). Ваше приложение также может передавать пакеты обратно через это символьное устройство, а сетевой стек ОС будет видеть эти пакеты как входящий сетевой трафик.

Если устройство работает как маршрутизатор, он может просто использовать виртуальный интерфейс tun/tap как обычный и прямой трафик через него, но всегда это приложение обрабатывает устройство, которое управляет пакетами. Исходящий трафик через виртуальный интерфейс всегда доставляется в ваше приложение, а входящий трафик через виртуальный интерфейс всегда исходит из вашего приложения.

+0

@Idx, что делать, если я хочу перенаправить трафик интерфейса доступа к физическому ethernet и наоборот, как это сделать? (не перекрывая их вместе) –

+0

Это зависит от того, что вы подразумеваете под «перенаправлением». Вы можете выполнить маршрутизацию на своем поле, но тогда вам нужно включить переадресацию IP, настроить необходимые маршруты, и у пакетов должен быть адрес назначения, который достигается через маршрут через ваш интерфейс Ethernet. Но, опять же, это зависит от того, что вы подразумеваете под «перенаправлением». – ldx

+0

@Idx, значит, вы имеете в виду виртуальный интерфейс, который я рассматриваю IP-адрес, шлюз которого должен быть физическим интерфейсом IP, а затем использовать исходящую политику маршрутизации для этого? –

Смежные вопросы