LINUX.ORG.RU
решено ФорумAdmin

Почему сетевой интерфейс «вайргардовского» сервера не имеет «эзернетовского» адреса?

 


0

2

Привет, ребята! Кто-нибудь знает почему сетевой интерфейс «вайргардовского» сервера не имеет «эзернетовского» МАК-адреса?

admin@localhost:~$ ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.37  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::fae0:4d0f:3317:b21d  prefixlen 64  scopeid 0x20<link>
        ether 16:09:01:13:4e:f4  txqueuelen 1000  (Ethernet)
        RX packets 45917  bytes 32758547 (32.7 MB)
        RX errors 0  dropped 222  overruns 0  frame 0
        TX packets 11749  bytes 1823773 (1.8 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1001  bytes 97946 (97.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1001  bytes 97946 (97.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet 172.16.0.1  netmask 255.255.255.0  destination 172.16.0.1
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 198  bytes 42644 (42.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 193  bytes 91484 (91.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Сам «вайргардовский» сервер работает отлично. Загвоздка в том, что при чтении данных из «сырого» сокета на сетевом интерфейсе «wg0» вычитывается сетевой пакет с IP-уровня, а «эзернетовские» МАК-адреса получателя и отправителя сетевого пакета отсутствуют в принятых данных. Сетевой отображатель «Вайршарк» тоже не показывает данные на уровне «Эзернета» на интерфейсе «wg0».

Возможно ли настроить сетевой интерфейс «Вайргарда» так, чтобы он начал выдавать весь сетевой пакет с самого нижнего «эзернетовского» уровня, а не только с уровня IP?

Ответ на: комментарий от cobold

MAC это часть протокола ethernet. Wg это не протокол ethernet, поэтому у него и нет mac.

Я вижу эти же «вайргардовские» сетевые пакеты, но на интерфейсе «eno1» в виде вложенных друг в друга пакетов «Ethernet/IP/UDP/Wireguard».

Похоже на то, что неосязаемые сетевые интерфейсы не имеют «эзернетовского» адреса по замыслу Линуса Торвальдса. Тогда мне придётся читать и записывать данные на «вайргардовском» интерфейсе «wg0» с IP-уровня минуя нижний уровень «Эзернета».

Enthusiast ★★★
() автор топика
Ответ на: комментарий от Enthusiast

Мне кажется ты не совсем понимаешь что такое туннель. У туннеля есть внешняя сторона, та, где происходит физическая реализация его транспортных нужд с помощью какие-то других технологий (в твоём случае - тот самый IP/UDP, в который вложены пакеты wireguard), и внутренняя - та, где туннель для своих потребителей изображает независимый сетевой интерфейс, пряча от них все подробности внешнего транспорта. Так вот, снаружи он конечно использует какую-то физическую сетевую карту, но суть туннеля в том, что на работу потребителей туннеля эти подробности влиять не должны. Возможно, изнутри можно приклеить какой-то фейковый мак-адрес (конкретно про wg - не знаю, есть ли у него такое, но вообще в линуксе есть два вида туннелей - один имитирует виртуальную ip-связность, а другой - виртуальный ethernet), но к адресу реальной сетевой карты он в любом случае отношения никакого иметь не будет.

Лучше напиши зачем тебе это всё.

firkax ★★★★★
()
Ответ на: комментарий от Enthusiast

Похоже на то, что неосязаемые сетевые интерфейсы не имеют «эзернетовского» адреса по замыслу Линуса Торвальдса.

Линус тут не при делах. Курите модель OSI и будет вам понимание.

anc ★★★★★
()
Ответ на: комментарий от firkax

Лучше напиши зачем тебе это всё.

Мой замысел состоит в том, чтобы забирать все сетевые пакеты с домашнего «вайргардовского» сервера, вкладывать их в сетевой пакет другого вида и отправлять его через границу. Из-за рубежа принимаем этот обернутый пакет, разворачиваем его и отправляем в «вайргардовский» домашний сервер.

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

Enthusiast ★★★
() автор топика
Ответ на: комментарий от Enthusiast

Может не переусложнять?, и просто нарисовать правильные политики маршрутизации? когда на «домашнем» сервере трафик пришедший из wg декапсулируется, и бежит себе дальше, шифруясь, в нужных направлениях, или не шифруясь в ненужных? зачем вот это вот «энкапсулировать wg в чототам и отправить его дальше, где его еще два раза декапсулируют и два раза расшифруют»?

конечная цель - увеличение энтропии, повышение вычислительной сложности, уменьшение скорости или приближение тепловой смерти вселенной?

anonymous
()
Ответ на: комментарий от anonymous

Может не переусложнять?

Постараюсь сделать попроще, конечно.

конечная цель - увеличение энтропии, повышение вычислительной сложности, уменьшение скорости или приближение тепловой смерти вселенной?

Я воспринимаю преодоление информационных «заборов» как брошенную в лицо перчатку, то есть вызов для настоящего программиста. Посмотрим кто кого одолеет в итоге.

Enthusiast ★★★
() автор топика

man уровни OSI

Wireguard работает на уровне IP. Это значит, что он получает IP пакеты не обернутые в Ethernet фреймы и делает с ними ЧТО-ТО. Для приложения это чёрный ящик. Может они потом печатаются на принтере и отправляются почтовыми голубями, а у них MAC адресов нет, а Ethernet фреймы лишь утяжелят бумагу и могут превзойти грузоподьемность голубя.

На самом деле IP пакеты как-то шифруются и кодируются кладутся в UDP, которые в другие IP, а они уже в ethernet, но об этом никто, кроме нас не знает.

Для ядра и для всех приложений IP пакеты просто исчезают внутри Wireguard и по чистому совпаданию его процесс почему-то отправляет какие-то UDP пакеты. И наоборот принимает какие-то UDP пакеты и изниоткуда пихает новые IP пакеты на интерфейсе Wireguard. Связь между первыми и вторыми пакетами существует только в нашем понимании, для ядра и wireshark её нет.

А так как Wireguard хавает IP пакеты не обернутые в Ethernet, то mac адресов нет. Некоторые другие VPN работают на более низком уровне и хавают Ethernet фреймы уже, но всё равно на виртуальном интерфейсе и mac там будет сгенерированный.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

man уровни OSI

Еще один. Нет никаких «уровней OSI». Open Systems Interconnection model (ISO/IEC 7498) - это изначально мертворожденный страндарт. Интернет так не работает. Все эти 7 уровней используются в учебниках исключительно для того, чтобы не было мешанины в голове на начальном этапе знакомства с сетями.

adn ★★★★
()
Ответ на: комментарий от adn

Ты перепутал модель OSI (которая есть и применяется везде) со стеком OSI (реализация этой модели, которая предлагалась как эталонная, но была слишком тяжелой и никуда не пошла)

Вместо стека OSI применяется стек TCP/IP

Модель OSI актуальна и применяется как есть

Забирайте зачетку и на пересдачу

router ★★★★★
()
Ответ на: комментарий от anc

Там табличка тащето присутствует.

табличка хорошо. там еще буквы и слова есть. рекомендую ознакомиться.

еще раз: «Все эти 7 уровней используются в учебниках исключительно для того, чтобы не было мешанины в голове на начальном этапе знакомства с сетями.» - поэтому и табличка.

adn ★★★★
()
Ответ на: комментарий от adn

OSI плохо работает на высоком уровне, где приложение, представление и т. д. Так как там бывает больше уровней вложенности или наоборот меньше и дискусионно какой пропущен. Но до уровня TCP/UDP он хорошо описывает матрёшку протоколов. А у ТС вопрос про VPN.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

Но до уровня TCP/UDP он хорошо описывает матрёшку протоколов

Правда? Ну где по-твоему в OSI arp протокол находится?

А у ТС вопрос про VPN.

А он в твоей модели OSI где находится?

Блин, ну серьезно.

adn ★★★★
()
Ответ на: комментарий от vel

NOARP - без MAC

POINTOPOINT - без МАС

Труба имеет 2 конца. Зачем ей МАС-адреса?

Ты совершенно прав: для обмена полезными данными через «трубу» протокол ARP совершенно не требуется, то есть нужны только сетевые пакеты IP-уровня и выше. На IP-уровне данные с неосязаемого «вайргардовского» сетевого интерфейса через «сырой» сокет вычитываются отлично. Вопрос решился сам собой.

Enthusiast ★★★
() автор топика

Почему сетевой интерфейс «вайргардовского» сервера не имеет «эзернетовского» адреса?

Потому что создатели wg поленились запилить режим бриджа. Что, кстати, сильно уменьшило применимость сего в общем-то неплохого решения.

Возможно ли настроить сетевой интерфейс «Вайргарда» так, чтобы он начал выдавать весь сетевой пакет с самого нижнего «эзернетовского» уровня, а не только с уровня IP?

Нет. Но можно через него установить соединение например openvpn в режиме tap (мост) и получить полноценный ethernet интерфейс c MAC адресом и всеми причитающимися плюшками.

Stanson ★★★★★
()