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

Как сделать не используя Zebra

Добавлено: 2011-07-27 15:34:09
MrEfrem
Добрый день.
Сеть 10.189.7/24. IP адрес на основном интерфейсе 10.189.7.34 и 10.189.7.35 на loopback.
Шлюз по умолчанию для основного интерфейса 10.189.7.1.
Как без использования Zebra построить маршрут с 10.189.7.35 через 10.189.7.34 в 10.189.7/24?
На маршрутизаторе статический роутинг с этого адреса прописан так, т.е. OSPF не требуется:

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

ip route 10.189.7.35 255.255.255.224 10.189.4.34

Re: Как сделать не используя Zebra

Добавлено: 2011-07-27 15:38:20
MrEfrem
Я в конце ошибся машрут выглядит так
ip route 10.189.7.35 255.255.255.224 10.189.7.34

Re: Как сделать не используя Zebra

Добавлено: 2011-07-27 20:06:44
LMik
Какой то вы хренью занимаетесь... не находите?

Ну и если не работает то 255.255.255.224 != /24 и никаких маршрутов как бы и добавлять не надо. И собственно кому с кем надо построить связь?

Re: Как сделать не используя Zebra

Добавлено: 2011-07-27 21:48:03
MrEfrem
Я здесь ip адрес поменял, а маску не сменил. Да и не в этом дело, вы не там ищите подвох. Лучше расскажите как мне нарисовать маршрут для ip адреса висящего на loopback.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-27 22:08:38
lap
host1
Lo 1.1.1.1/32
eth 4.4.4.1/30

host2
Lo 1.1.1.2/32
eth 4.4.4.2/30

host1
ip route 1.1.1.2 255.255.255.255 4.4.4.2

host2
ip route 1.1.1.1 255.255.255.255 4.4.4.1

примерно так

Re: Как сделать не используя Zebra

Добавлено: 2011-07-27 22:54:28
opt1k
а мне интересно зачем было менять адрес на loopback интерфейсе, походу не понимаю чего.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 7:50:51
MrEfrem
Так ни кто меня и не понял.
"ip route 10.189.7.35 255.255.255.224 10.189.7.34" это строчка в правилах на маршрутизаторе. А мене надо в FreeBSD средствами route построить маршрут. Я не меняю адрес на loopback интерфейсе, а создаю alias (10.189.7.35) для loopback интерфейса. Если бы я сделал alias на устройстве, привязанном к физической сетевой карте, то проблем бы вообще ни каких не было, потому что в таблице маршрутизации на freebsd, тот маршрут который мне нужен для 10.189.7.35 - default для этого устройства, т.е. что 10.189.7.35 и 10.189.7.34 смотрели бы в одну сеть через один и тот же шлюз. Но я хочу, чтобы заработала такая схема (см. ниже). Т.к. для 10.189.7.35 нет маршрута по умолчанию и я не знаю как сделать другой маршрут, у меня и вопрос как с помощью route (без использования zebra) повесить маршрут для 10.189.7.35 на loopback интрефейс.

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

ifconfig:
nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8210b<RXCSUM,TXCSUM,VLAN_MTU,TSO4,WOL_MAGIC,LINKSTATE>
        ether xx:xx:xx:xx:xx:xx
        inet 10.189.7.34 netmask 0xffffffff broadcast 10.189.7.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6 
        inet6 ::1 prefixlen 128 
        inet 127.0.0.1 netmask 0xff000000 
        inet 10.189.7.35 netmask 0xffffffff 
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>

netstat -rn:
Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            10.189.7.1         UG1         2    25063   nfe0
10.1.1.1           link#9             UH          0       48    lo1
10.189.7.34        link#3             UHS         0        0    lo0
10.189.7.35        link#6             UH          0        0    lo0
127.0.0.1          link#6             UH          0       25    lo0


Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 8:52:12
vadim64
я всё равно не понял, зачем адрес на обратной петле менять? объясните ещё обстоятельнее вашу цель и предлагаемый вами способ решения, пожалуйста

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 9:05:17
MrEfrem
Я где то выше писал что надо поменять адрес? Вы это сами себе выдумали. Вы представляете что такое несколько ip адресов на одном интерфейсе? У меня есть необходимость поднять несесколько https виртуальных web-хостов на этом сервере. Т.к. для каждого https сайта необходим свой ip вот и пребегают к таким уловкам как несколько ip на одном интерфейсе. Если сделать alias-ы для физического интерфейса (nfe0) то проблем ни каких не возникает, для них будет исопльзован маршрут по умолчанию (default 10.189.7.1 UG1 2 25063 nfe0). А если сделать alias для loopback интрефейса, то обычно пользуются zebra для настройки такой маршрутизации. Дак вот у меня вопрос штатными средствами route возможно добится необходимой мне маршрутизации?

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 9:15:03
vadim64
кхм...
если вы понимаете, что с псевдонимами на физическом интерфейсе проблем не будет, то что вас толкает вешать левые адреса на обратную петлю?
в операционной системе FreeBSD конечно же можно решить эту задачу, точнее выполнить то, что вы решили. но, как правило, не принято вешать какие либо дополнительные адреса на интерфейс lo, само название которого как бы намекает нам и вам
вы только спокойно объясняйте, судя по всему вы больший специалист чем я, проявите терпимость

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 9:36:56
MrEfrem
Нагляднее данная схема. Видно IP, через который по умолчанию идут все пакеты, т.к. он один на физическом интерфейсе и видно все другие, не основные адреса.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 10:11:54
MrEfrem
Всё разобрался. Ошибка была у меня. Надо чтоб ip были в разный подсетях, включить сервер в режим маршрутизатора (gateway_enable="YES") и тогда всё заработало. А из одной подсети похоже такого не сделать.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 10:47:59
vadim64
можно и из одной подсети, мост тогда делается
покажите что у вас получилось, и обьясните уже почему вам понадобилось это? где подробная схема?

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 15:54:05
MrEfrem
Получилось и из одной подсети, только для этого пришлось поставить choparp, чтоб настроить проксирование arp запросов. И кстати в этом случае правило на маршрутизаторе о том, что для адреса 10.189.7.35 шлюзом является 10.189.7.34 уже и не нужно.
Вот ниже часть rc.conf

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

ifconfig_nfe0="inet 10.189.7.34 netmask 255.255.255.128"                                                                                                     
ifconfig_lo0_alias0="inet 10.189.7.35 netmask 255.255.255.128"                                                                                               
                                                                                                                                                            
gateway_enable="YES"                                                                                                                                         
static_routes="gateway"
route_gateway="-net default 10.189.7.1"                                                                                                                      
                                                                                                                                                             
choparp_enable="YES"                                                                                                                                         
choparp_iface="nfe0"                                                                                                                                         
choparp_macaddr="xx:xx:xx:xx:xx:xx"                                                                                                                          
choparp_network="10.189.7.35"  

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 16:09:31
MrEfrem
Что получилось всё равно не увидите, поверьте наслово работает. Никакой заумной схемы нет. Надо настроить виртуальные https хосты. Каждый на своём IP и все на одном сервере. Все IP в одной сети, вот в этом и была загвоздка.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 16:18:03
LMik
Работает - хорошо, объясните теперь за каким хером вы не повесили второй адрес алиасом на физику?

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 16:23:31
MrEfrem
Сообщение MrEfrem » 2011-07-28 10:36:56
Нагляднее данная схема. Видно IP, через который по умолчанию идут все пакеты, т.к. он один на физическом интерфейсе и видно все другие alias-ы (потому что они на loopback).

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 16:56:37
LMik
MrEfrem писал(а):
Сообщение MrEfrem » 2011-07-28 10:36:56
Нагляднее данная схема. Видно IP, через который по умолчанию идут все пакеты, т.к. он один на физическом интерфейсе и видно все другие alias-ы (потому что они на loopback).
Ничем не нагляднее, просто влепили лишний хоп в маршрутизацию.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 20:17:07
vadim64
я продолжаю настаивать на том что бы вы дали вывод команд

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

ifconfig -a без всяких ХХ:ХХ:ХХ:ХХ
netstat -rn
route get 8.8.8.8 с виртуальных хостов и с материнского хоста

Re: Как сделать не используя Zebra

Добавлено: 2011-07-28 21:50:05
MrEfrem
Ну смотрите ещё один плюс. На том же сервере развёрнута БД которая висит на отдельном IP (как раз на loopback интерфейсе). В кроне работают скрипты, что-то делающие на основе данный из БД. Умирает сетевая, т.е. отваливается основной интерфейс, а что БД, что скрипты продолжают себе работать как не в чём не бывало (конечно если им не требуется доступ в сеть). Просто если помрёт сетевая, на которой будет висеть БД, как следствие прерванные транзакции. При запуске БД будет тратить время на откат этих транзакций. Ну вот примерно так.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-29 7:05:33
_vadim64
не гоните пургу
для системы шлюзом на айпишник сетевухи является обратная петля

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

# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            217.23.77.49       UGS        40 12675642    re0
127.0.0.1          link#6             UH          0       86    lo0
192.168.0.0/24     link#4             U          10 14238338    rl2
192.168.0.224      link#4             UHS         0        0    lo0
192.168.1.0/24     link#2             U           0     3621    rl0
192.168.1.170      link#2             UHS         0        0    lo0
так что даже если физический интерфейс выйдет из строя, никакой драмы не произойдёт

вы не придумывайте находу какие то плюсы, просто обрисуйте первоначальный мотив

Re: Как сделать не используя Zebra

Добавлено: 2011-07-29 8:54:45
LMik
MrEfrem писал(а):Ну смотрите ещё один плюс. На том же сервере развёрнута БД которая висит на отдельном IP (как раз на loopback интерфейсе). В кроне работают скрипты, что-то делающие на основе данный из БД. Умирает сетевая, т.е. отваливается основной интерфейс, а что БД, что скрипты продолжают себе работать как не в чём не бывало (конечно если им не требуется доступ в сеть). Просто если помрёт сетевая, на которой будет висеть БД, как следствие прерванные транзакции. При запуске БД будет тратить время на откат этих транзакций. Ну вот примерно так.
Ерунду говорите. Ну повесьте (если уж вы даже не удосужились проверить что будет при падении физики) ваш mysql на 127.0.0.1.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-29 9:35:16
vadim64
а я вообще skip-networking юзаю при работе mysql для web

Re: Как сделать не используя Zebra

Добавлено: 2011-07-29 9:44:58
MrEfrem
Если я повешаю на 127.0.0.1 mysql то до него ни кто достучаться не сможет из сети.

Re: Как сделать не используя Zebra

Добавлено: 2011-07-29 9:51:54
MrEfrem
Про транзакции я наверно лишканул. Вы правы мускул наврятли умрёт если отвалится сетевая, но зато он скорее всего не будет принимать подключения и с самого сервера.