The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Ethernet через UDP туннель между 2-мя FreeBSD машинами, используя ng_ksocket (netgraph freebsd udp tunnel)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: netgraph, freebsd, udp, tunnel,  (найти похожие документы)
From: Eugene Mychlo <http://forum.bestcom.ru/index.php?showuser=8>; Newsgroups: http://forum.bestcom.ru Date: Mon, 29 Jan 2006 18:21:07 +0000 (UTC) Subject: Ethernet через UDP туннель между 2-мя FreeBSD машинами, используя ng_ksocket Оригинал: http://forum.bestcom.ru/index.php?showtopic=22 Простенький пример UDP-туннеля между 2-мя freebsd-шными машинами. (Взято из /usr/share/examples/netgraph/udp.tunnel) 1-я машина: IP: 192.168.0.1 #!/bin/sh ngctl mkpeer iface hook inet ngctl mkpeer ng0: ksocket inet inet/dgram/udp ngctl msg ng0:inet bind inet/192.168.0.1:45600 ngctl msg ng0:inet connect inet/172.16.32.4:45600 ifconfig ng0 10.0.0.1 10.0.0.2 Теперь краткое описание Вначале создаем интерфейс ng0. К нему крепим udp-сокет 192.168.0.1:45600. Все пакеты входящие в ng0 упаковываем в udp пакет и отправляем на адрес 172.16.32.4:45600 Осталось только назначить адрес интерфейсу ng0. ( ng0 - интерфейс точка-точка поэтому указываем адреса двух сторон ) 2-я машина: IP: 172.16.32.4 Здесь все с точностью до наоборот. #!/bin/sh ngctl mkpeer iface hook inet ngctl mkpeer ng0: ksocket inet inet/dgram/udp ngctl msg ng0:inet bind inet/172.16.32.4:45600 ngctl msg ng0:inet connect inet/192.168.0.1:45600 ifconfig ng0 10.0.0.2 10.0.0.1 Усложним задачу. Создадим l2-туннель между машинами A и B поверх UDP. Т.е. будем прозрачно гонять ethernet-фрэймы через этот туннел. Машина A: интерфейс em0 - 192.168.0.5/24 интерфейс em1 - без IP-адреса #!/bin/sh kldload ng_ether ngctl mkpeer em1: ksocket lower inet/dgram/udp ngctl msg em1:lower bind inet/192.168.0.5:2515 ngctl msg em1:lower connect inet/172.16.0.4:2515 ifconfig em1 up ngctl msg em1: setpromisc 1 ngctl msg em1: setautosrc 0 Машина B: интерфейс em0 - 172.16.0.4/24 интерфейс em1 - без IP-адреса #!/bin/sh kldload ng_ether ngctl mkpeer em1: ksocket lower inet/dgram/udp ngctl msg em1:lower bind inet/172.16.0.4:2515 ngctl msg em1:lower connect inet/192.168.0.5:2515 ifconfig em1 up ngctl msg em1: setpromisc 1 ngctl msg em1: setautosrc 0 Описание: Грузим ng_ether. ( если его нет в ядре) Остальное подобно предыдущему примеру, но вместо узла iface используем ether. Сокет крепим непосредственно к хуку lower. Все что приходит с физического уровня запакоывается в IP-UDP пакет и отправляется к другому концу туннеля. Входящие UDP пакеты распаковываются и направляются непосредственно на физический интерфейс. См. man 4 ng_ether

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру