The OpenNET Project / Index page

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

Прозрачное соединение двух удаленных локальных сетей (linux tunnel bridge proxy route vpn)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, tunnel, bridge, proxy, route, vpn,  (найти похожие документы)
From: Alexey N. Kovyrin <kovyrin (at) kremenchug.net> Newsgroups: email Date: Mon, 30 Jun 2004 14:31:37 +0000 (UTC) Subject: Прозрачное соединение двух удаленных локальных сетей ПРОЗРАЧНОЕ СОЕДИНЕНИЕ (REMOTE BRIDGING) ДВУХ УДАЛЕННЫХ ЛОКАЛЬНЫХ СЕТЕЙ ЧЕРЕЗ Internet (ИЛИ ЛЮБУЮ ДРУГУЮ ПУБЛИЧНУЮ СЕТЬ) Автор: Alexey N. Kovyrin <kovyrin (at) kremenchug.net> Часто возникает потребность в соединении нескольких географически разрозненных сетей (ethernet) в единый broadcast domain. Такая потребность, например, может возникнуть при соединении нескольких отделений одной компании, в которой используется smb-протокол (частично основанный на широковещательных сообщениях). Также одним из вариантов использования описываемой схемы являются игровые клубы (несколько клубов одной игровой сети, будучи объединенными в единое пространство для широковещательных запросов могут обеспечить пользователям возможность сетевой игры без наличия выделенного сервера). В каждой из рассматриваемых сетей должен присутствовать один сервер, предназначенный для организации бриджинга. Две наших сети могут быть соединены друг с другом любыми средствами, которые позволяют передачу IP-трафика между шлюзовыми машинами данных сетей. Технические детали: В описываемой конфигурации мы соединяем две локальных сети в одну с адресным пространством 192.168.1.0/24 (хотя физически наличие мостов предполагает полную прозрачность для протокола IP и ограничений на адресацию в полученной сети нет). На шлюзовых машинах имеется по 2 сетевых интерфейса: один (у нас - eth0) направлен в локальную сеть, и второй (eth1), используемый как транспортный для соединения сетей. После поднятия ethernet-тунеля между шлюзами обоих сетей, тунельные интерфейсы соединяются c соответствующими сетевыми интерфейсами для локальной сети при помощи мостов (bridge-interfaces). Схематически эту конфигурацию можно изобразить следующим образом: +-------+ +-------+ | br0 | | br0 | +-------+ +-------+ | | | | Network 1 | | | | Network 2 ----------eth0 tap0---eth1........eth1---tap0 eth0--------------- НАСТРОЙКА ШЛЮЗОВЫХ МАШИН ------------------------ Примечание: В данной статье рассматривается настройка серверов под управлением ОС GNU/Linux (дистрибутив Debian Unstable). В случае использования другого дистрибутива возможно понадобятся небольшие изменения в описанной конфигурации (чаще всего в отношении сетевых настроек и системы управления пакетами). Для начала нужно убедиться в наличии модулей tun и bridge для текущего ядра. Если их нет - пересобрать ядро с их поддержкой (опции CONFIG_TUN и CONFIG_BRIDGE). Далее требуется создание файла устройства для поднятия тунеля: # cd /dev # ./MAKEDEV tun # mkdir misc # ln -s /dev/net /dev/misc/net Примечание: последняя команда нужна для того, чтобы vtun в авторской сборке смог получить доступ к устройству /dev/misc/net/tun (объективную причину, по которой он ищет этот файл именно там мне выяснить не удалось). Для поднятия ethernet-тунеля между машинами мы будем использовать программу vtun. Пакет для Debian (а также исходные тексты или пакеты для других дистрибутивов или ОС) можно скачать с сайта производителей: http://vtun.sourceforge.net/download.html После скачивания файла пакета vtun_X.Y-Z_i386.deb нужно установить его и все требуемые для дальнейшей работы пакеты: # apt-get install bridge-utils ebtables iptables libssl0.9.6 ... # dpkg -i vtun_X.Y-Z_i386.deb После установки vtun требуется определиться с тем, какая из сторон соединения будет ведущей (сервер), а какая ведомой (клиент). Затем на сервере и на клиенте нужно внести изменения в файлы vtund-start.conf и vtund.conf в каталоге /etc/. Ниже приведены конечные результаты редактирования файлов конфигурации на сервере. /etc/vtund-start.conf ----cut-here------------------------------------ --server-- 5000 ----cut-here------------------------------------ /etc/vtund.conf ----cut-here------------------------------------ options { port 5000; # Listen on this port. # Syslog facility syslog daemon; # Path to various programs ifconfig /sbin/ifconfig; route /sbin/route; firewall /sbin/iptables; ip /sbin/ip; } default { compress no; encrypt no; speed 0; } rembridge { passwd Pa$$Wd; type ether; proto udp; keepalive yes; compress no; encrypt yes; up { # Connection is Up ifconfig "%% up"; program "brctl addif br0 %%"; }; down { # Connection is Down ifconfig "%% down"; }; } ----cut-here------------------------------------ Файлы конфигурации для клиента: /etc/vtund-start.conf ----cut-here------------------------------------ rembridge 10.1.1.1 -p ----cut-here------------------------------------ Примечание: В данном случае 10.1.1.1 - это транспортный адрес сервера, к которому подключается данный клиент. /etc/vtund.conf ----cut-here------------------------------------ options { # Path to various programs ifconfig /sbin/ifconfig; route /sbin/route; firewall /sbin/iptables; } korsar { pass Pa$$Wd; # Password type ether; # Ethernet tunnel up { # Connection is Up ifconfig "%% up"; program "brctl addif br0 %%" }; down { # Connection is Down ifconfig "%% down"; }; } ----cut-here------------------------------------ Для поднятия моста между сетевым интерфейсом, направленным в локальную сеть, и поднятым тунелем необходимо создать bridge-интерфейс. Для этого нужно добавить описание интерфейса br0 в файл /etc/network/interfaces: auto br0 iface br0 inet static address 192.168.1.199 netmask 255.255.255.0 bridge_ports eth0 Примечание: IP-адреса и маска подсети на обоих сторонах выбирается в соответствии с соглашениями в вашей локальной сети. Главное требование - уникальность этих адресов в пределах обоих соединяемых сетей. eth0 - интерфейс, направленный в локальную сеть. Далее необходимо поднять этот интерфейс: # ifup br0 После поднятия bridge-интерфейса можно запускать сервер и клиент vtun. # /etc/init.d/vtund restart В случае правильной настройки всей конструкции мы получим на обоих шлюзах интерфейсы tap0 и br0: # ifconfig tap0 tap0 Link encap:Ethernet HWaddr 00:FF:B2:91:CA:DE UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:701818 errors:0 dropped:0 overruns:0 frame:0 TX packets:405939 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:975889241 (930.6 MiB) TX bytes:44704104 (42.6 MiB) # ifconfig br0 br0 Link encap:Ethernet HWaddr 00:02:44:2A:03:30 inet addr:192.168.1.199 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2660 errors:0 dropped:0 overruns:0 frame:0 TX packets:42 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:239368 (233.7 KiB) TX bytes:2338 (2.2 KiB) # Команда brctl позволяет нам посмотреть на статус bridge-интерфейсов: # brctl show br0 bridge name bridge id STP enabled interfaces br0 8000.0002442a0330 no eth0 tap0 # После выполнения все описанных выше действий машины, находящиеся в обоих соединяемых локальных сетях смогут прозрачно общаться друг с другом. Для диагностики соединения могут служить IP-адреса на обоих bribge-интерфейсах шлюзовых машин. Также, в случае надобности возможно включение/выключение шифрования и сжатия данных, проходящих через созданный тунель.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, HanProg (??), 09:46, 05/07/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А не проще это сделать с помощью iptables с помощью filter
    цепочек, или например направить цепочку по умолчанию на
    другую сетку? И к тому же для этого не надо столько программ
    достаточно отредактировать /etc/sysconfig/iptables
     
  • 1.2, qwe (??), 11:23, 16/07/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ты сам понял че сказал.
     
  • 1.3, Bardak. (?), 14:01, 16/07/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Возможно ли такая реализация на FreeBSD?
     
     
  • 2.4, Аноним (4), 02:10, 17/07/2004 [^] [^^] [^^^] [ответить]  
  • +/
    > Возможно ли такая реализация на FreeBSD?

    Я так понимаю, что через gif это тоже будет работать.

     

  • 1.5, Nobody (?), 19:54, 12/08/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    device gifN vannot be added in bridge
     
     
  • 2.6, Kid (?), 15:00, 14/02/2005 [^] [^^] [^^^] [ответить]  
  • +/
    все верно. level 3 протоколы не могут быть добавлены в мост
     

  • 1.7, Leonid (??), 11:45, 08/06/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А чем отличается бридж от arp-Проксирования ?
     
  • 1.8, Gregory (?), 04:14, 23/06/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А вот пакеты которые направляются ИМЕННО одной из машин (например она ещё инет шлюз) будут так же отправляться в туннель. По крайне мере у меня такое было, и я обошёл жёстким извратом.
     
  • 1.9, Привет Пупсики (?), 22:22, 23/07/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а у меня и под фрей и под линуксом работает - как сервер - фря, клиент линукс, все ок
     
  • 1.13, bzmn (?), 00:23, 18/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    я правильно понимаю, что по данной схеме прекрасно будут работать и DHCP, и PXE, IPX (в т.ч. - всякие новеллы) - в общем, эдакий "свич" через "тоннельный мост"?
     

    игнорирование участников | лог модерирования

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




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

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