Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  начальная настройка
  Установка FreeBSD
  DUMMYNET
  Сборка ядра
  IPFW
  обновление
  portsnap
  CP1251 на FreeBSD
  loader.conf
  defaults/rc.conf
  jail
  Ntpdate/Ntpd
  diskless
  Обновление мира ("world")
  PBR & PF
  bsnmpd
  newsyslog
  if_bridge
  make.conf
  PBR & IPFW
  Работа с HDD
  sshd & AD
  Удаленное разбиение HDD
  Заметки об IPFW
  FreeBSD на VDS
  CVSUP и софт через Proxy
  i386=>amd64
  ALTQ в IPFW
  Виртуальный свитч
  VPN сервер по средствам mpd5.
  NTP
  sysupdate
  mpd5 L2TP
  freebsd + webcamera
  IPFW policy (PBR)
  RAID1 via LAN
  зеркальный RAID1 на ОС FreeBSD
  4.x => 7.x
  portdowngrade
  Быстрое обновление портов
  ipfw nat
  Использование csup
  UTF-8 console
  dump/restore
  hast carp zfs ucarp cluster
  ng_nat
  Wi-FI роутер + DHCP + DNS
  backup/restore & ZFS
  Обновление ОС и портов через SVN.
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> настройка —> Виртуальный свитч

Проброс ethernet через интернет по udp или виртуальныйы свитч на FreeBSD netgraph.

Автор: LMik.


Проброс ethernet через интернет по udp или виртуальныйы свитч на FreeBSD.

Соединяем две ethernet сетки чтобы они видели друг друга
как будто находятся в одному коммутаторе.

Делать будем на основе ядерного netgraph,
в частности модули ng_ether и ng_bridge.

Добавляем в /boot/loader.conf
netgraph_load="YES"
ng_ether_load="YES"
ng_bridge_load="YES"

Есть 2 варианта работы системы

1. Без модуля ng_bridge.
Мы получим как бы объединение сетевых интерфейсов в один невидимый.
Сами сервера с этими интерфейсами не будут видеть трафик на них.
Получается прозрачное соединение как будто между сетями
протянули физический кабель.
Весь трафик приходящий на интерфейс одного из серверов
будет прозрачно проходить на другой.

2. С модулем ng_bridge.
Мы получим как бы включение интерфейсов на обоих серверах в один свитч.
Сервера будут видеть трафик на интерфейсах.
Трафик не предназначеный для соседней
сети не пойдет по каналу (реализация обычного свитча).


Конфигурация:

Имеем два типичных роутера.

1.
Два сетевых интерфейса
fxp0 - белый интернет адрес для примера 1.1.1.1
fxp1 - серый локальный адрес 192.168.0.1

2.
Два сетевых интерфейса
fxp0 - белый интернет адрес для примера 1.1.1.2
fxp1 - серый локальный адрес 192.168.0.2

При загрузке модуля ng_ether на обоих роутерах в netgraph
атоматически были созданы узлы с названием сетевых карт.
lmik# ngctl list
There are 3 total nodes:
  Name: ngctl3178       Type: socket          ID: 00000009   Num hooks: 0
  Name: fxp0            Type: ether           ID: 00000001   Num hooks: 0
  Name: fxp1            Type: ether           ID: 00000002   Num hooks

Вариант №1 непрактичный и рассматривать его не будем,
просто напишу конфигурацию графов вдруг кому-то понадобится.
ngctl mkpeer fxp0 ksocket lower inet/dgram/udp
ngctl msg switch:link1 bind inet/1.1.1.1:1234
ngctl msg switch:link1 connect inet/1.1.1.2:1234
ngctl msg fxp1: setpromisc 1
ngctl msg fxp1: setautosrc 0

Вариант №2

На первом сервере конфигурация нетграфов будет выглядеть так:
#Создаем узел bridge и подключаем к его хуку link0 физический (нижний) уровень fxp1
ngctl mkpeer fxp1: bridge lower link0
#назовем этот узел switch
ngctl name fxp1:lower switch
#создадим узел ksocket и подсоединим его хуком inet/dgram/udp к хуку link1 нашего switch
ngctl mkpeer switch: ksocket link1 inet/dgram/udp
#Отправляем сообщение узлу switch:link1 (туда подключен узел ksocket) 
#чтобы тот забиндил сокет для входящего трафика на нашем внешнем IP
ngctl msg switch:link1 bind inet/1.1.1.1:1234
#Отправляем команду узлу switch:link1 (туда подключен узел ksocket) 
#чтобы тот соединился со вторым сервером 
ngctl msg switch:link1 connect inet/1.1.1.2:1234
#Соединяем хук link2 нашего switch с верхним уровнем интерфейса fxp1
#т.е подключаем наш сервер в наш виртуальный свитч.
ngctl connect switch: fxp1: link2 upper
#включаем на сетевой карте прослушку всех пакетов,
#а не только тех что предназначаются ей.
ngctl msg fxp1: setpromisc 1
ngctl msg fxp1: setautosrc 0

На втором нужно изменить строчки:

ngctl msg switch:link1 bind inet/1.1.1.2:1234
ngctl msg switch:link1 connect inet/1.1.1.1:1234

Просто поменять местами адреса.

Для красоты оформляем запуск нашего виртуалсвитча в скрипт
и при желании кладем в /usr/local/etc/rc.d
#!/bin/sh

#тут указываем наш белый адрес
self=1.1.1.1
peer=1.1.1.2
#тут порт по которому будет бегать трафик
port=1234
#интерфейс который включаем в свитч
if=fxp1
case "$1" in
        start)
            echo "Starting netgraph switch."
		ngctl mkpeer ${if}: bridge lower link0
		ngctl name ${if}:lower switch
		ngctl mkpeer switch: ksocket link1 inet/dgram/udp
		ngctl msg switch:link1 bind inet/${self}:${port}
		ngctl msg switch:link1 connect inet/${peer}:${port}
		ngctl connect switch: ${if}: link2 upper
		ngctl msg ${if}: setpromisc 1
		ngctl msg ${if}: setautosrc 0
            echo "Ok."
            exit 0
            ;;
        stop)
            echo "Stopping netgraph switch."
            /usr/sbin/ngctl shutdown ${if}:
            /usr/sbin/ngctl shutdown switch:
            echo "Ok."

            exit 0
            ;;
        restart)
            sh $0 stop
            sh $0 start
            ;;
        *)
            echo "Usage: `basename $0` { start | stop | restart }"
            exit 64
            ;;
esac

Красота какая, никаких впн крутить не надо, просто запустить скрипт :),
никаких реконектов и т.п...

Возможно попробую в ближайшее время привернуть возможность фильтрования
трафика через ipfw и шифрование если это возможно :)



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=9136.

размещено: 2008-06-12,
последнее обновление: 2008-06-18,
автор: LMik

оценить статью:

Dushes, 2008-06-12 в 22:01:03

хм ... а как это может пригодиться в реальных условиях ?

void, 2008-06-13 в 2:06:12

Информация по netgraph - оч. полезная штука, даже если даный случай никому не пригодится. По нетграфу инфы минимум в сети. Аффтару полюбе зочод, респект и уважуха!

LMik, 2008-06-13 в 10:15:46

Езернет с работы домой себе прокинуть например... Мультикаст например по такому тунелю побежит без проблем.

max, 2008-06-13 в 14:02:26

use openvpn

xatop, 2008-06-15 в 22:49:16

Добавьте кнопку: отправить страницу или линк по e-mail

Gruber, 2008-06-16 в 13:44:55

Прошу прощения....
Тут в хендбуке наткнулся http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/ipsec.html
Вроде бы аналогичное вполне штатное решение?? Интересно по производительности есть ли разница?

LMik, 2008-06-16 в 16:00:04

IPSEC немного не то, это впн.

unknownDaemon, 2008-06-18 в 4:19:02

И все-таки тема шифрования не раскрыта... заманчиво, но весь кайф VPN в том, что есть возможность шифровать траф, чтобы банально кидисы не снифали влегкую... И потом насколько шустрым и надежным будет это шифрование - вопрос... Впрочем успехов ;-)

berkleysuperdaemon, 2008-06-25 в 17:43:59

если надо шифрование, то, возможно, надо сначала поднять шифрованный туннель а по нему уже пустить наш ng_bridge?

wanderer, 2008-07-18 в 15:43:35

ммм... я может чего не понимаю, а что с безопасностью? трафик как-нибудь шифруется, проходя по инету?

Elight, 2008-08-21 в 22:17:21

wanderer: траффик в описанном случае не защищён практически ничем, так что организовать man-in-the-middle атаку - проще простого ("физические" аспекты я не принимаю во внимание).
Но! Никто ведь не мешает организовать шифрование получившегося UDP-траффика средствами VPN (IPSEC, OpenVPN и т.п.).
Сам так и сделал - весьма доволен результатом.
Автору - большое спасибо за статью.

Elight, 2008-08-25 в 23:26:58

Да, и ещё один момент выяснился в ходе эксплуатации - возникают трудности с использованием firewall (в частности, PF) во "внутренней" сети.
И утилиты tcpdump/iftop показывают только исходящий траффик...

jafff, 2008-12-03 в 11:56:28

Поставил, все работает, но как сделать запуск при запуске системы? netgraph_enable="YES" не запускает :( скрипт лежит тут /usr/local/etc/rc.d

buryanov, 2009-01-06 в 21:46:34

по поводу, где это может пригодится - Фирма собирается переезжать в новый офис, но переезд всех и за 1 раз не получается, на фирме есть сервера и сервисы, переподъём которых невозможен(невозможного ничего нет!!!), в обоих офисах должно быть одно адресно пространство, плюс ко всему фирма работает с другими фирмами по ipsec. Вот тут то и пригодится это решение поднятое поверх vpn. думаю к конц месяца будет очень полезным...

FreeBSP, 2009-12-15 в 20:54:43

первый вариант(который без ng_bridge)
[code]
ngctl mkpeer fxp0 ksocket lower inet/dgram/udp
ngctl msg switch:link1 bind inet/1.1.1.1:1234
ngctl msg switch:link1 connect inet/1.1.1.2:1234
ngctl msg fxp1: setpromisc 1
ngctl msg fxp1: setautosrc 0
[/code]

Помоему тут забыли строчку типа ngctl name fxp:lower switch
кстати о втором варианте об этой стрчке не забыли))

abibas, 2010-10-05 в 10:17:24

Elight, для pf юзай pftop.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 19 чел.
За последние 30 мин было: 122 человек
За сегодня было
13551 показов,
874 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0403 секунд
Из них PHP: 30%; SQL: 70%; Число SQL-запросов: 77 шт.
Исходный размер: 127330; Сжатая: 22603