В чем разница между /dev/ppp и /dev/net/tun?

в чем разница между PPP и tun/tap? Оба, похоже, предназначены для реализации сетей над пользовательскими космическими программами.

с PPP ядро создает ppp%d для использования и позволяет программе userspace предоставлять для нее бэкэнд.
С помощью tun/tap ядро создает tun%d для использования и позволяет программе userspace предоставлять для нее бэкэнд...

как трудно изменить программу с помощью tun / tap (которые, похоже, недоступны на моем устройстве Android) в ППС?

1 ответов


они оба обеспечивают некую форму доступа к сети, почему существуют две разные вещи, которые, кажется, делают то же самое? Ответ заключается в том, что они не совсем то же самое.

протокол точка-точка (ppp), конструировано вокруг обеспечивать сетевое подключение ИП над серийным соединением. Наиболее распространенной вещью, предоставляющей последовательную ссылку, является модем, и они присутствуют в мобильных телефонах и были вездесущими несколько лет назад, когда вы набрали до вашего поставщика услуг, чтобы подключение к интернету. Ваш ppp соединение идет от вашего ПК к приемнику который преобразовывает серийный сигнал назад в пакеты ИП которые направлены через интернет.

в настоящее время, когда вы получаете кабельный модем или ADSL-модем от поставщика услуг, он обеспечивает IP-подключение к сети через ethernet или WiFi. Модем фактически выполняет работу по обеспечению соединения с вашим поставщиком услуг, что можно рассматривать как то же самое, что и ppp подключения; это просто ваш компьютер больше не выполняет работу по переводу с IP-пакетов на сигналы по линии ADSL или кабельному соединению. Отдельный модем обеспечивает уровень вдали от сложности разговора с провайдером, вы просто говорите "простой" Ethernet/WiFi.

механизм Tun/Tap должен позволить вам получить доступ к виртуальной частной сети (vpn) в слое над стандартным сетевым подключением; так, например, если вы подключаетесь к кабельному модему через Ethernet, то это обеспечивает доступ к vpn через подключение ethernet. Если вы получаете доступ к интернету через модем, который был подключен непосредственно к компьютеру, то вы будете получать доступ к vpn через ppp. По своему усмотрению интерфейс tun/tap не обеспечивает доступ в интернет, он полагается на ранее существующее соединение. Это пример расслоения сети.

спрашивает, насколько сложно преобразовать программу из сетевого подключения tun/tap для использования ppp-соединения неправильно понимает, где два интерфейса сидят в предоставлении доступа к сети - tun / tap будет сидеть поверх ppp. незашифрованные пакеты входят в интерфейс tun/tap, шифруются, а затем отправляются как IP-пакеты в интерфейс ppp, который преобразует их в последовательные сигналы, которые отправляются на удаленный конец, который превращает их обратно в IP-пакеты и пересылает их на vpn цель, которая расшифровывает их и направляет их через собственную частную сеть.

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

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

единственный способ удалить соединение tun / tap - это если ppp подключение к собственной системе. Вам нужно будет использовать что-то похожее на GSM-данные (это 9600 бит/секунда, и это фактический телефонный звонок), и даже тогда вы не шифруете, и вы идете по сотовой сети, что вроде как побеждает все намерение частной сети.

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

чтобы понять, почему различные протоколы vpn используют разные интерфейсы для выполнения своей работы, вы должны понять, как они были разработаны. TAP, L2TP и PPTP являются примерами протокола уровня 2. TUN является примером протокола уровня 3.

чтобы понять разницу, я буду использовать почтовую аналогию. Слой 2 (также известный как слой ссылок), является эквивалентом курьера. Вы вручаете ему письмо, и он физически передает его получателю. Этот курьер знает все потенциальные пункты назначения в своем районе, любое сообщение для этого района может быть обработано им.

если мы растянем эту аналогию, почтовый ящик также можно рассматривать как допустимую конечную точку слоя 2. Если вы хотите получить письма по всей стране, вы кладете их в почтовый ящик. Это analagous для L2TP, PPTP и TAP, обертывающих свои пакеты для передачи по сети.

Layer 3-это адрес на письме - его можно использовать для перемещения письма из почты офис на почту, где он, наконец, попадает в руки почтальона. Ths-это то, где обернутый пакет маршрутизируется через сеть.

он возвращается к слою 2 в тот момент, когда почтальон знает место назначения в пределах своей области доставки и передает письмо предполагаемому получателю. Здесь обернутый пакет разворачивается, а затем обрабатывается L2TP, PPTP или TAP end point

для TUN это немного проще. Ваши письма идут прямо к вам местное почтовое отделение, доставляется в массовом порядке в почтовое отделение назначения, где вы их собираете. Могут быть некоторые детали о получении писем на почту или из почтового отделения на адрес назначения, но это на самом деле не является частью протокола.

затем приходят неудобные детали того, как они реализованы. И L2TP, и PPTP определяются в терминах ppp, хорошо установленный механизм для установления прямой связи между двумя конечными точками, поэтому в чтобы говорить через такого рода систему, как источник, так и пункт назначения должны будут говорить протокол точка-точка. Туннелирование обеспечивает виртуальный слой, через который эти ppp сообщения путешествуют (это туннелирование-то, что дает им T на свое имя).

интерфейс крана определяется с точки зрения туннелирования сеть Ethernet пакеты - это пакеты, которые вы увидите, проносясь по вашему WiFi-соединению. Он устанавливает простой мост между двумя сетями, по которым передаются эти пакеты ethernet. Пакеты Ethernet типично заключают пакеты IP, позволяя вам поместить их прямо на провод в месте назначения без необходимости повторно инкапсулировать их.

интерфейс TUN определяется в терминах туннелирования IP пакеты-это пакеты до того, как они были преобразованы, чтобы они могли перемещаться по физическому соединению, такому как Ethernet/WiFi. Это означает, что вы устанавливаете маршрутизация виртуальной IP-сети между компьютером и целевой сетью. IP-пакеты, которые имеют назначение, определенное маршрутами, предоставляемыми этим интерфейсом, отправляются этому интерфейсу.

конечный продукт другое сетевой интерфейс в их системе, куда можно отправлять IP-пакеты. Этот интерфейс обертывает пакет (в пакете ppp для PPTP/L2TP; в пакете ethernet для TAP; внутри другого пакета IP для TUN). Шифрование может быть задействовано перед упаковкой, или после упаковки или в обеих точках (зависит от протокола). Программа, которая понимает L2TP будет хорошо разбираться в talking PPP, но не смог бы говорить о других протоколах без значительной перезаписи.