# Сеть. 3 интерфейса. Чудеса [solved]

## cha-chaynik

3 идентичных сетевых карты. 

Настроены:

eth0: 10.203.78.52

eth1: 10.203.78.212

eth2: 10.203.78.213

После настройки сети:

```

tuxgw root # ifconfig

eth0      Link encap:Ethernet  HWaddr 00:E0:7D:A6:04:4E

          inet addr:10.203.78.52  Bcast:10.203.78.255  Mask:255.255.255.0

...............

          Interrupt:10 Base address:0x2c00

eth1      Link encap:Ethernet  HWaddr 00:E0:7D:BA:41:FC

          inet addr:10.203.78.212  Bcast:10.203.78.255  Mask:255.255.255.0

...............

          Interrupt:9 Base address:0x4800

eth2      Link encap:Ethernet  HWaddr 00:E0:7D:96:2D:ED

          inet addr:10.203.78.213  Bcast:10.203.78.255  Mask:255.255.255.0

...............

          Interrupt:11 Base address:0x6400

```

Видно, что подняты разные интерфейсы (различные MAC-и и прерывания).

Кабель подключен только к одной карте eth0.

Из Windows: 

```

H:\>ping -t 10.203.78.52

Обмен пакетами с 10.203.78.52 по 32 байт:

Ответ от 10.203.78.52: число байт=32 время<10мс TTL=64

..........

```

Не переключая сетевого кабеля:

```

H:\>ping -t 10.203.78.212

Обмен пакетами с 10.203.78.212 по 32 байт:

Ответ от 10.203.78.212: число байт=32 время<10мс TTL=64

..........

H:\>ping -t 10.203.78.213

Обмен пакетами с 10.203.78.213 по 32 байт:

Ответ от 10.203.78.213: число байт=32 время<10мс TTL=64

..........

```

После переключения кабеля в любой другой интерфейс пинги никуда не идут....

Итого: несмотря на то, что ifconfig показывает "верную" информацию, она не верна. Поднят только один интерфейс, отзывающийся на все 3 ip.

Посоветуйте, где могла зарыться собака?Last edited by cha-chaynik on Fri Feb 25, 2005 9:18 am; edited 1 time in total

----------

## viy

как и-фейсы поднимал?

что есть в /etc/conf.d/net?

----------

## cha-chaynik

 *viy wrote:*   

> как и-фейсы поднимал?

 

ifconfig add ....  .............  ethX up

(драйвер вкомпилирован в ядро (если это важно))

 *viy wrote:*   

> что есть в /etc/conf.d/net?

 

iface_eth0="10.203.78.52 broadcast 10.203.78.255 netmask 255.255.255.0"

iface_eth1="10.203.78.212 broadcast 10.203.78.255 netmask 255.255.255.0"

iface_eth2="10.203.78.213 broadcast 10.203.78.255 netmask 255.255.255.0"

----------

## ba

 *Quote:*   

> 
> 
> Не переключая сетевого кабеля:
> 
> ```
> ...

 

ну это объясняется тем, что по умолчанию линух отвечает на arp запросы про все свои ip на любом интерфейсе, если хочешь чтобы было не так, то echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore или тоже самое через sysctl

 *Quote:*   

> После переключения кабеля в любой другой интерфейс пинги никуда не идут....

 

ну все правильно... у тебя получилось несколько маршрутов до подсети 10.203.78.0/24 через разные интерфейсы, а пакеты пойдут только по одному и вероятнее всего по тому, который первый добавился. (тоесть если бы ты на все три интерфейса повесил бы по машине с одинаковыми ip, как по твоему система должна определять к которой из этих трех машин ты хочешь обратиться по этому ip?)

----------

## cha-chaynik

 *Quote:*   

> ну все правильно... у тебя получилось несколько маршрутов до подсети 10.203.78.0/24 через разные интерфейсы, а пакеты пойдут только по одному и вероятнее всего по тому, который первый добавился. (тоесть если бы ты на все три интерфейса повесил бы по машине с одинаковыми ip, как по твоему система должна определять к которой из этих трех машин ты хочешь обратиться по этому ip?)

 

Я имею 3 физических устройства (3 сетевые карты), у каждого из которых есть свой IP адрес, т.е. каждый из интерфейсов обязан откликаться на тот IP, который ему присвоен и никак иначе.

Даже не смотря на то, что в ядре вкопилирован маршрутизатор, не прописав маршрут на другой машине, каторая не имеет понятия о маршрутах на свежеустановленном Gentoo, она не может обратиться к неподключенным интерфейсам Gentoo машины (даже в одной подсети).

Или я ошибаюсь?

----------

## ba

 *cha-chaynik wrote:*   

>  *Quote:*   ну все правильно... у тебя получилось несколько маршрутов до подсети 10.203.78.0/24 через разные интерфейсы, а пакеты пойдут только по одному и вероятнее всего по тому, который первый добавился. (тоесть если бы ты на все три интерфейса повесил бы по машине с одинаковыми ip, как по твоему система должна определять к которой из этих трех машин ты хочешь обратиться по этому ip?) 
> 
> Я имею 3 физических устройства (3 сетевые карты), у каждого из которых есть свой IP адрес, т.е. каждый из интерфейсов обязан откликаться на тот IP, который ему присвоен и никак иначе.

 

настраивай policy routing тогда, в ядре включаешь advanced routing, создаешь по табличке маршрутизации на каждый интерфейс ip route add <...> table <табличка для этого интерфейса>, и добавляешь правила ip rule add from <ip интерфейса> table <табличка для этого интерфейса>. Ну и вообще man ip.

но это только в том случае, если интерфейсы воткнуты физически в разные сетки и ip машин которые могу обращатся к твоей могут совпадать в разных сетках, если нет - то все еще проще: если не первое, то тогда нафиг три сетевухи(сделай два алиаса просто), если не второе, то пропиши на машине маршруты ко всем хостам(или подсетям) которые должны обращаться к этой машине.

 *Quote:*   

> Даже не смотря на то, что в ядре вкопилирован маршрутизатор, не прописав маршрут на другой машине, каторая не имеет понятия о маршрутах на свежеустановленном Gentoo, она не может обратиться к неподключенным интерфейсам Gentoo машины (даже в одной подсети).
> 
> Или я ошибаюсь?

 

брр, ниче не понял

----------

## cha-chaynik

 *ba wrote:*   

> 
> 
> настраивай policy routing тогда, в ядре включаешь advanced routing, создаешь по табличке маршрутизации на каждый интерфейс ip route add <...> table <табличка для этого интерфейса>, и добавляешь правила ip rule add from <ip интерфейса> table <табличка для этого интерфейса>. 

 

Какой роутинг, когда сетевая карта не откликается на IP, ей присвоенный???

3 IP в одной подсети на 3х интерфейсах были подняты только с одной целью - удостовериться, что каждая сетевая карта работает и откликается на СВОЙ IP.

 *ba wrote:*   

> 
> 
> Ну и вообще man ip.
> 
> 

 

Читайте man ip

----------

## ba

 *cha-chaynik wrote:*   

>  *ba wrote:*   
> 
> настраивай policy routing тогда, в ядре включаешь advanced routing, создаешь по табличке маршрутизации на каждый интерфейс ip route add <...> table <табличка для этого интерфейса>, и добавляешь правила ip rule add from <ip интерфейса> table <табличка для этого интерфейса>.  
> 
> Какой роутинг, когда сетевая карта не откликается на IP, ей присвоенный???
> ...

 

а вот и не обязаны они откликаться... вот принимать пакеты обязаны, а откликаться - нет.

route -n сделай и увидишь три маршрута до своей подсети, вот причем тут роутинг. Ведь пакеты отсылаемые самой машиной тоже решают куда им пойти по таблице роутинга. И как они в твоем случае должны знать который их этих трех роутов выбрать?

----------

## cha-chaynik

 *ba wrote:*   

> а вот и не обязаны они откликаться... вот принимать пакеты обязаны, а откликаться - нет.
> 
> route -n сделай и увидишь три маршрута до своей подсети, вот причем тут роутинг. Ведь пакеты отсылаемые самой машиной тоже решают куда им пойти по таблице роутинга. И как они в твоем случае должны знать который их этих трех роутов выбрать?

 

Ок. В a-la RedHat дистрибутивах (сам Redhat, Mandrake, ASP) в "своей" подсети сетевые устройства используют свой IP, как шлюз для выхода в "свою" подсеть. Также делает Мокрософт.

Сейчас отвечаю из дома, и, увы, закончилось поле деятельности для экспериментов. Тем не менее, в четверг воспользуюсь Вашей рекомендацией (жестко прописать маршруты для каждой карты).

Огромное спасибо за совет!

P.S. 

```

tuxgw root # route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.203.78.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

10.203.78.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

10.203.78.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2

127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo

tuxgw root #

```

----------

## ba

 *cha-chaynik wrote:*   

> Ок. В a-la RedHat дистрибутивах (сам Redhat, Mandrake, ASP) в "своей" подсети сетевые устройства используют свой IP, как шлюз для выхода в "свою" подсеть. Также делает Мокрософт.

 

а разница-то какая?

 *Quote:*   

> Тем не менее, в четверг воспользуюсь Вашей рекомендацией (жестко прописать маршруты для каждой карты).

 

кажись мы друг друга опять не понимаем :(

Лана, пишу еще раз и более подробно...

1) Если тебе надо чтобы из одной сети твоя машина была видна под тремя ip, то тогда выкидываешь две карточки нафиг и поднимаешь два alias-а на оставшейся.

2) Если у тебя сделаны три сетки, в которых допустим 10.203.78.a-b одна сеть, 10.203.78.c-d другая и 10.203.78.e-f третья и эти диапазоны ip не пересекаются(не понимаю зачем надо так делать, лучше уж тогда сразу взять три отдельные подсетки(можно даже ту же 10.203.78.0/24 поделить на меньшие подсети) и не иметь никаких проблем), то прописываешь роуты до каждого хоста(или подсети, _если эти хосты можно собрать в подсеть, меньшую исходной_) через нужный интерфейс.

а-ля route add -host 10.203.78.a dev ethX

3) Если у тебя три сетки и скажем ip 10.203.78.a может всретится больше чем в одной сети, то поднимаем policy routing так как я писал выше. (опять же не понятно, зачем делать три сетки с одинаковыми ip, чтобы иметь больше гемора, да?)

ЗЫ прости если это я что-то недопонимаю...

----------

## cha-chaynik

 :Smile: 

Раз уж начали откровенничать.

С пол года назад, убираясь я повыкидывал старые диски, в т.ч. все дистрибутивы Linux (собрание с 2000 года...). В итоге, остался только ASP 9.2. С месяц назад, поимев проблемы с обновлением RPM-омв (2х8 часов), чтобы ничего не конфликтовало,  чтобы всего лишь обновить Самбу, решил больше не пользоваться RedHat пакостями.

Теперь настало время поставить новый Firewall и Gateway (разные машины). В соответствии с положительными отзывами, выбрал Gentoo.

Итак, Firewall: машина с 3-мя сетевыми картами:

1 - LAN

2 - DMZ

3 - INET

Установив все необходимое, прежде чем назначить реальные IP, дал всем картам локальные IP, чтобы убедиться, что каждая карта работает и чтобы точно выяснить, какая из карт реально (по счету сверху вниз) является eth0, eth1, eth2.

Вот тут-то и возвращаюсь к первому посту.

 *Quote:*   

> ЗЫ прости если это я что-то недопонимаю...

 

Лучше наоборот. Извини, если высказался неправильно. (Собственно, только поэтому и регистрировался, как ча-ЧАЙНИК).

P.S.S. А впрочем, С днем защиткика Отечества !!!!!   :Smile:   :Very Happy: 

----------

## viy

 *cha-chaynik wrote:*   

> С днем защиткика Отечества !!!!!

 

Присоединяюсь!

И завидую, у нас тут ни 23/02, ни 08/03 нету...

----------

## ba

 *cha-chaynik wrote:*   

> Вот тут-то и возвращаюсь к первому посту.

 

Тогда ответ почему так происходит в моем первом посте :)

 *Quote:*   

> P.S.S. А впрочем, С днем защиткика Отечества !!!!!  :) :D

 

Присоединяюсь :)

----------

## nerff

Доброго времени суток!

Пардон, сначала не понял суть вопроса.

Если тебе надо распределить трафик между net, dmz и local - проще прописать маску сети для сегментов - например для 8 адресов 255.255.255.248 - будет сеть с адресами например 192.168.200.1 - 192.168.200.254, но при этом она будет разбита на независимые сегменты по 8 адресов и доступность будет зависеть от правил файрволла

----------

## cha-chaynik

 *nerff wrote:*   

> 
> 
> Если тебе надо распределить трафик между net, dmz и local - проще прописать маску сети для сегментов - например для 8 адресов 255.255.255.248 - будет сеть с адресами например 192.168.200.1 - 192.168.200.254, но при этом она будет разбита на независимые сегменты по 8 адресов и доступность будет зависеть от правил файрволла

 

В общем, нет. У меня 3 разные подсети. А все интерфейсы я настраивал, чтобы смотреть в одну подсеть только с единственной целью - после установки убедиться, что карты работают и откликаются. Но они не откликались, из-за чего и родился топик.

Товарищ Ba был прав.

Ставлю на топик "solved", хотя проблемы и не было, я ее сам придумал из-за незнания  :Sad: 

----------

