Страница 1 из 1

Перенаправление пакетов в другую сеть из Jail

Добавлено: 2009-01-21 15:02:58
Bionicman
Hi All!

Возникла небольшая проблема, может кто сталкивался...

Есть ряд серверов, каждый с двумя сетевыми интерфейсами (em0 и em1). Топология сети следующаа: em0 каждого сервера подключен 100Мбитным линком к провайдеру, на каждый сервер выделен один реальный опорный IP и n-ное кол-во алиасов (как правило 4). em1 каждого сервера подключен 1000Мбитным линком к локальному общему свичу для перегона между серверами всякого объемного и/или секурного трафика, каждому серверу присваивается один фейковый IP.

На серверах ОС FreeBSD:

Код: Выделить всё

FreeBSD xxx.ru 7.0-RELEASE-p5 FreeBSD 7.0-RELEASE-p5 #0: Thu Dec  4 16:31:57 MSK 2008
Пример типового ifconfig одного из серверов:

Код: Выделить всё

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
        ether 00:30:48:c4:1d:4e
        inet 217.23.xxx.xxx netmask 0xffffffc0 broadcast 217.23.xxx.yyy
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
        ether 00:30:48:c4:1d:4f
        inet 10.0.0.6 netmask 0xffffff00 broadcast 10.0.0.255
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        inet 212.158.xxx.xx1 netmask 0xffffffff
        inet 212.158.xxx.xx2 netmask 0xffffffff
        inet 212.158.xxx.xx3 netmask 0xffffffff
        inet 212.158.xxx.xx4 netmask 0xffffffff
Решили внедрять jail на серверах, чтобы как-нибудь разгрести помойку из сайтов по кучкам. Внедрение происходило вполне стандартным способом.

Получается, что внутри джейла есть только один IP (реальный, один из алиасов). Он смотрит в интернет. Но нужен еще доступ в фейковую сеть, для осуществления гоняния данных через собственный гигабитный свич. С ходу рецепт не придумал, но душой понимаю, что траф в 10.0.0.0/24 из JAIL можно на корневой системе завернуть с помощью фаервола. Вот только как?

Стоит IPFW, но выбор не окончательный.

Re: Перенаправление пакетов в другую сеть из Jail

Добавлено: 2009-01-23 12:53:24
Alex Keda
вроде в джайлах роуты тока недавно в курренте появились

Re: Перенаправление пакетов в другую сеть из Jail

Добавлено: 2009-01-23 17:45:22
Bionicman
lissyara писал(а):вроде в джайлах роуты тока недавно в курренте появились
Дело в том, что проект довольно нагруженный и критичный, ставить под него -CURRENT довольно неосмотрительно.

Слышал, что народ решает эту проблему при помощи вбивания костыля в фаерволл, для принудительного форвардинга пакетов в нужное место. Вот только как?

Re: Перенаправление пакетов в другую сеть из Jail

Добавлено: 2009-01-27 18:30:43
neyro
Не проще на чем-нибудь типа xen сделать виртуальные сервера ?

Re: Перенаправление пакетов в другую сеть из Jail

Добавлено: 2009-04-29 16:55:40
Bionicman
Bionicman писал(а):Hi All!

Возникла небольшая проблема, может кто сталкивался...

Есть ряд серверов, каждый с двумя сетевыми интерфейсами (em0 и em1). Топология сети следующаа: em0 каждого сервера подключен 100Мбитным линком к провайдеру, на каждый сервер выделен один реальный опорный IP и n-ное кол-во алиасов (как правило 4). em1 каждого сервера подключен 1000Мбитным линком к локальному общему свичу для перегона между серверами всякого объемного и/или секурного трафика, каждому серверу присваивается один фейковый IP.

На серверах ОС FreeBSD:

Код: Выделить всё

FreeBSD xxx.ru 7.0-RELEASE-p5 FreeBSD 7.0-RELEASE-p5 #0: Thu Dec  4 16:31:57 MSK 2008
Пример типового ifconfig одного из серверов:

Код: Выделить всё

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
        ether 00:30:48:c4:1d:4e
        inet 217.23.xxx.xxx netmask 0xffffffc0 broadcast 217.23.xxx.yyy
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
        ether 00:30:48:c4:1d:4f
        inet 10.0.0.6 netmask 0xffffff00 broadcast 10.0.0.255
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        inet 212.158.xxx.xx1 netmask 0xffffffff
        inet 212.158.xxx.xx2 netmask 0xffffffff
        inet 212.158.xxx.xx3 netmask 0xffffffff
        inet 212.158.xxx.xx4 netmask 0xffffffff
Решили внедрять jail на серверах, чтобы как-нибудь разгрести помойку из сайтов по кучкам. Внедрение происходило вполне стандартным способом.

Получается, что внутри джейла есть только один IP (реальный, один из алиасов). Он смотрит в интернет. Но нужен еще доступ в фейковую сеть, для осуществления гоняния данных через собственный гигабитный свич. С ходу рецепт не придумал, но душой понимаю, что траф в 10.0.0.0/24 из JAIL можно на корневой системе завернуть с помощью фаервола. Вот только как?

Стоит IPFW, но выбор не окончательный.
Сам отвечаю на свой вопрос.

Решил с помощью ipfw + natd (можно заюзать ядерный nat - не суть):
ipfw add divert 8668 all from ${ALIASES} to 10.0.0.0/24 out via em1
ipfw add divert 8668 all from any to 10.0.0.6 in via em1

Может кому пригодится :smile: