URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 93737
[ Назад ]

Исходное сообщение
"Debian выдает в сеть адрес не той сетевой карты"

Отправлено lucky89 , 28-Авг-12 15:24 
Здравствуйте!
Есть сеть построенная только на свичах, маршрутизаторов вообще нет, провайдер в ней раздает все настройки от DHCP. Есть в ней мой сервер, получающий инет от провайдера по 1 сетевухе и раздающий его в ту же сеть по 2 сетевухе. У моих пользователей я просто ввожу статические настройки, чтобы они пользовались инетом через меня и им не мешал DHCP нашего провайдера.
Обе сетевухи моего сервера физически смотря в одну и ту же сеть (в тот же ситч), логически дети 2, 1 провайдеровская (DHCP) и я в не же статическими ип сделал свою сеть.
Все работает отлично, но есть неприятный момент, от которого я и хочу избавиться.
Прихожу к пользователю, пишу у него arp -a и вижу, что около его основного шлюза, то есть ипа моего сервера отображается то мак моей 1 сетевухи, то мак 2 сетевухи. Соответственно в те моменты, когда мак определяется не верный инета нет. Эту проблему я решил скинув каждому пользователю батник в автозагрузку со строкой arp -s 192.168.102.102 00-1d-60-7b-e5-26
Все прекрасно, но не удобно. Пользователей стало много, файлик они теряют, мне приходится к ним бегать.
Подскажите, как сделать так, чтобы мак сам всегда определялся правильный и тогда отпала бы необходимость в этом файле.
Менять архитектуру сети не предлагать - разделить сети в моих условиях к сожалению не возможно(

Мне приходил от человека вот такой ответ:

net.ipv4.conf.all.arp_filter = 0

Включает/выключает связывание IP-адреса с ARP-адресом. Если эта опция
включена, то ответ будет передаваться через тот интерфейс, через который
поступил запрос. В принципе, было бы не плохо, если бы ответы исходили
через тот же интерфейс, через который был получен запрос, однако, в
отдельных случаях, это может стать причиной ошибок. Обычно включение
этой опции необходимо только в том случае, если на вашем хосте
производится управление распределением нагрузки между сетевыми
интерфейсами. Значение по-умолчанию  0 (выключено), поскольку эта опция
идет немного вразрез с современным пониманием принципов IP-адресации.
Ранее IP-адреса рассматривались как путь к некоторому устройству, в
смысле аппаратуры, теперь же их следует рассматривать как отдельную
службу доставки, которая должна выдавать ответы на запросы вне
зависимости от того на какой интерфейс эти запросы были получены.
Дополнительную информацию по данной тематике вы найдете в Guide to IP
Layer Network Administration with Linux.

Тут я не понял где вводить эту команду, терминал мне отвечает, что она не найдена. Это переменная ядра Линукса, по идее ее же можно хоть где прописать.

Да и в том что это мне поможет я сомневаюсь. Ведь, если первый запрос придет сразу не на ту сетевуху, то и ответ будет не с той.

В общем даже не представляю, что нужно докрутить на сервере, чтобы стало все по человечески. Помогите, пожалуйста!


Содержание

Сообщения в этом обсуждении
"Debian выдает в сеть адрес не той сетевой карты"
Отправлено 0x21h , 28-Авг-12 21:00 
1) Посмотрите конфигу dhcpd найдите там привязку к определенной карте.

2) net.ipv4.conf.all.arp_filter = 0 это параметр ядра, управляется через команду sysctl
Правите файлик /etc/sysctl.conf, потом sysctl -p /etc/sysctl.conf. Но вам это не нужно, т.к читайте пункт 1, он решит проблему

3) Реорганизуйте срочно вашу сеть. Разделите сети провайдера и вашу, иначе однажды к вам придет провайдер и попросит это сделать в менее вежливой форме. Провайдеру ваши броадкасты и вирусная активность не к чему. Если свичи управляемые, почитайте про vlan.


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено lucky89 , 29-Авг-12 00:25 
> 1) Посмотрите конфигу dhcpd найдите там привязку к определенной карте.

К нему доступа нет и не будет, так как он не мой а провайдера. Физический доступ есть, но пароля мне никто не скажет.

> 2) net.ipv4.conf.all.arp_filter = 0 это параметр ядра, управляется через команду sysctl
> Правите файлик /etc/sysctl.conf, потом sysctl -p /etc/sysctl.conf. Но вам это не нужно,
> т.к читайте пункт 1, он решит проблему
> 3) Реорганизуйте срочно вашу сеть. Разделите сети провайдера и вашу, иначе однажды
> к вам придет провайдер и попросит это сделать в менее вежливой
> форме. Провайдеру ваши броадкасты и вирусная активность не к чему. Если
> свичи управляемые, почитайте про vlan.

Я бы с радостью, но это не возможно. Провайдер не против моей деятельности. Свичи вообще все тупые. Только 1 умный, самый главный, провайдеровский, в который оптика приходит, но к нему доступа нет.


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено LSTemp , 29-Авг-12 01:03 
>[оверквотинг удален]
>> 2) net.ipv4.conf.all.arp_filter = 0 это параметр ядра, управляется через команду sysctl
>> Правите файлик /etc/sysctl.conf, потом sysctl -p /etc/sysctl.conf. Но вам это не нужно,
>> т.к читайте пункт 1, он решит проблему
>> 3) Реорганизуйте срочно вашу сеть. Разделите сети провайдера и вашу, иначе однажды
>> к вам придет провайдер и попросит это сделать в менее вежливой
>> форме. Провайдеру ваши броадкасты и вирусная активность не к чему. Если
>> свичи управляемые, почитайте про vlan.
> Я бы с радостью, но это не возможно. Провайдер не против моей
> деятельности. Свичи вообще все тупые. Только 1 умный, самый главный, провайдеровский,
> в который оптика приходит, но к нему доступа нет.

ну так поставьте м/ду ним и офиссной сетью свой шлюз.


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено lucky89 , 29-Авг-12 01:27 
> ну так поставьте м/ду ним и офиссной сетью свой шлюз.

Это не офис, а общага, там много людей живет и многим нужна не моя сеть, а провайдеровская, по этому не могу я так сделать. Тянуть отдельные провода от себя и ставить на этажах свои свитчи будет глупо, так как и так с каждым человеком в здании есть связь по существущей безроутерной сети. Я же писал, реконструкцию сети не предлагать!

А если со всем по порядку попробовать разобраться. Так-то все четко работает и на огромных скоростях. Только необходимость в этом файлике у каждого пользователя доставляет некорые неудобства. Вот первый вопрос получается, почему вообще маки сетевух иногда путаются? Чем это вызвано, что в линуксе за это отвечает?
Можно ли это вообще исправить дописав что-то в сервер или таким путем проблему вообще решить не возможно?
Если не возможно, то как можно автоматизировать процесс получения пользователями этого батника ну или можно просто команды arp? Слышал, что такие параметры может дхцп рассылать, но его я поднять не могу, так как в этом случае их получится 2 в одной сети и они подерутся.


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено LSTemp , 29-Авг-12 03:49 
>[оверквотинг удален]
> пользователя доставляет некорые неудобства. Вот первый вопрос получается, почему вообще
> маки сетевух иногда путаются? Чем это вызвано, что в линуксе за
> это отвечает?
> Можно ли это вообще исправить дописав что-то в сервер или таким путем
> проблему вообще решить не возможно?
> Если не возможно, то как можно автоматизировать процесс получения пользователями этого
> батника ну или можно просто команды arp? Слышал, что такие параметры
> может дхцп рассылать, но его я поднять не могу, так как
> в этом случае их получится 2 в одной сети и они
> подерутся.

Вот когда своим шлюзом отделите общаговую сеть от провайдерской, тогда и сможете. И никакие дополнительные кабели не понадобятся.

Авторизация для выхода в инет как у Вашего прова организована?



"Debian выдает в сеть адрес не той сетевой карты"
Отправлено lucky89 , 29-Авг-12 15:42 
> Вот когда своим шлюзом отделите общаговую сеть от провайдерской, тогда и сможете.
> И никакие дополнительные кабели не понадобятся.

Да нельзя мне так делать! Как тогда достучатся до провайдера, те, кто пожелали на прямую от него подключиться?! Пойдут через мой серв? А мне этого не надо.
> Авторизация для выхода в инет как у Вашего прова организована?

Авторизации как таковой вообще у меня нет, средствами iptables и правил NAT все пакеты без разбора перенаправляются к провайдеру. В принципе авторизую по ип. Есть правило, что всех перенаправлять запрещено, кроме конкретных ип. Ну и таблица arp у меня есть статическая, чтобы умники не пытались свободные ип подбирать.



"Debian выдает в сеть адрес не той сетевой карты"
Отправлено aaa , 29-Авг-12 15:36 
>[оверквотинг удален]
> Дополнительную информацию по данной тематике вы найдете в Guide to IP
> Layer Network Administration with Linux.
> Тут я не понял где вводить эту команду, терминал мне отвечает, что
> она не найдена. Это переменная ядра Линукса, по идее ее же
> можно хоть где прописать.
> Да и в том что это мне поможет я сомневаюсь. Ведь, если
> первый запрос придет сразу не на ту сетевуху, то и ответ
> будет не с той.
> В общем даже не представляю, что нужно докрутить на сервере, чтобы стало
> все по человечески. Помогите, пожалуйста!

Попробуйте как-то так, только свои интерфейсы подставьте

net.ipv4.conf.eth2.arp_filter = 1
net.ipv4.conf.eth0.arp_filter = 1

net.ipv4.conf.eth0.arp_ignore=1
net.ipv4.conf.eth2.arp_ignore=1

net.ipv4.conf.eth0.arp_announce=2
net.ipv4.conf.eth2.arp_announce=2


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено aaa , 29-Авг-12 15:39 
>[оверквотинг удален]
>> будет не с той.
>> В общем даже не представляю, что нужно докрутить на сервере, чтобы стало
>> все по человечески. Помогите, пожалуйста!
> Попробуйте как-то так, только свои интерфейсы подставьте
> net.ipv4.conf.eth2.arp_filter = 1
> net.ipv4.conf.eth0.arp_filter = 1
> net.ipv4.conf.eth0.arp_ignore=1
> net.ipv4.conf.eth2.arp_ignore=1
> net.ipv4.conf.eth0.arp_announce=2
> net.ipv4.conf.eth2.arp_announce=2

Добавте еще
net.ipv4.conf.all.log_martians = 1
что бы логи отброшеных пакетов смотреть


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено lucky89 , 29-Авг-12 15:52 
> net.ipv4.conf.eth2.arp_filter = 1
> net.ipv4.conf.eth0.arp_filter = 1
> net.ipv4.conf.eth0.arp_ignore=1
> net.ipv4.conf.eth2.arp_ignore=1
> net.ipv4.conf.eth0.arp_announce=2
> net.ipv4.conf.eth2.arp_announce=2
> Добавте еще
> net.ipv4.conf.all.log_martians = 1
> что бы логи отброшеных пакетов смотреть

А из каких соображений это должно помочь? Зачем вообще какие-то пакеты откидывать? Может я не правильно представляю сам механизм, но мне видится, что:
1) Пользователь включает комп, у него начинает подниматься сетевой интерфейс
2) Система смотрит, что прописан статические ип, основной шлюз, днс и маска.
3) Она отправляет первые пакеты в сеть в поисках основного шлюза.
4) Пакет добирается до моего сервера и входит в одну из сетевух.
5) К пользователю приходит ответный пакет с содержанием: я основной шлюз, я здесь, вот май мак адрес
6) Теперь его сетевой интерфейс передает все пакеты без разбору на этот мак. (Ведь на сколько я знаю на основной шлюз отправляются пакеты именно по маку а не по ип, а ип у него есть, только чтобы 1-5 пункты выполнились).

От сюда получается, если у пользователя высветился не верный мак, значит его первый пакет не в ту сетевуху залез. А как такое может быть я не представляю... Ведь он искал ип 192.168.*.* , а залез получается в ту, в которой вообще 10.10.*.* или 172.*.*.* не помню, но это и не важно


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено reader , 29-Авг-12 16:21 
hwaddress ether 00:11:22:33:44:55
HWADDR="00:11:22:33:44:55"

в зависимости от дистрибутива

/etc/udev/rules.d/*net.*


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено aaa , 29-Авг-12 17:20 
>[оверквотинг удален]
> здесь, вот май мак адрес
> 6) Теперь его сетевой интерфейс передает все пакеты без разбору на этот
> мак. (Ведь на сколько я знаю на основной шлюз отправляются пакеты
> именно по маку а не по ип, а ип у него
> есть, только чтобы 1-5 пункты выполнились).
> От сюда получается, если у пользователя высветился не верный мак, значит его
> первый пакет не в ту сетевуху залез. А как такое может
> быть я не представляю... Ведь он искал ип 192.168.*.* , а
> залез получается в ту, в которой вообще 10.10.*.* или 172.*.*.* не
> помню, но это и не важно

Про Ваши соображения можно посматреть тут
http://kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp...
И обратите внимание на поведение по умолчанию


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено lucky89 , 29-Авг-12 22:44 
> Про Ваши соображения можно посматреть тут
> http://kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp...

Я к сожалею не силен в английском, а гугл мне очень ужасно перевел))


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено aaa , 29-Авг-12 23:19 
>> Про Ваши соображения можно посматреть тут
>> http://kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp...
> Я к сожалею не силен в английском, а гугл мне очень ужасно
> перевел))

Тогда забейте! Ваша задача решается проще:

1) Вытаскиваем вторую сетевуху, продаем ее и покупаем бутылку пива))
2) На первую вешаем алиас: ifconfig eth0:0 192.168.102.1 netmask 255.255.255.0 broadcast 192.168.102.255
3) Делаем нат для всех кроме 192.168.102.0/24:  iptables -t nat -A POSTROUTING -o eth0 ! -d 192.168.102.0/24 -j MASQUERADE


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено lucky89 , 29-Авг-12 23:24 
> Тогда забейте! Ваша задача решается проще:
> 1) Вытаскиваем вторую сетевуху, продаем ее и покупаем бутылку пива))
> 2) На первую вешаем алиас: ifconfig eth0:0 192.168.102.1 netmask 255.255.255.0 broadcast
> 192.168.102.255
> 3) Делаем нат для всех кроме 192.168.102.0/24:  iptables -t nat -A
> POSTROUTING -o eth0 ! -d 192.168.102.0/24 -j MASQUERADE

То есть сделать 2 ип на 1 сетевухе?
Я такое пробовал и у меня скорости упали с 70 Мбит до 800 Кбит максимум...
Похоже не выдерживает 1 сетевуха таких нагрузок. У меня 70 человек и все они пользуются торрентами, играют в игры, смотрят фильмы в онлайне, качают с локальных фтп и тд. + еще на сервере вертятся squid, dns сервер, аппатч, и резалка скорости HTB.
Или чем может быть вызвано падение скорости?


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено aaa , 29-Авг-12 23:55 
>[оверквотинг удален]
>> 3) Делаем нат для всех кроме 192.168.102.0/24:  iptables -t nat -A
>> POSTROUTING -o eth0 ! -d 192.168.102.0/24 -j MASQUERADE
> То есть сделать 2 ип на 1 сетевухе?
> Я такое пробовал и у меня скорости упали с 70 Мбит до
> 800 Кбит максимум...
> Похоже не выдерживает 1 сетевуха таких нагрузок. У меня 70 человек и
> все они пользуются торрентами, играют в игры, смотрят фильмы в онлайне,
> качают с локальных фтп и тд. + еще на сервере вертятся
> squid, dns сервер, аппатч, и резалка скорости HTB.
> Или чем может быть вызвано падение скорости?

Вот тут на русском про директивы о которых я писал выше
http://unixfaq.ru/index.pl?req=qs&id=491


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено lucky89 , 30-Авг-12 01:52 
> Вот тут на русском про директивы о которых я писал выше
> http://unixfaq.ru/index.pl?req=qs&id=491

Спасибо! Вроде я что-то начинаю осознавать! Сейчас хотел попробовать применить ваши советы, написал nano /etc/sysctl.conf а там нет таких параметров... дистрибудив у меня Debian. И вообще в этом файле вообще все закоментированно
Тогда сделал так  nano /proc/sys/net/ipv4/conf/all/arp_announce
там было значение 0, поменял его на 2 сохранил. Как теперь перезапустить эту службу, чтобы изменения вступили в силу? И это будет на всегда или до первой перезагрузки сервера?
Вообще я странное явление заметил: отчистил у клиента таблицу arp, перезагружаю сервер, ну чтобы изменения вступили в силу и инет у клиента падает, открываю тот файлик на сервере, а там вместо исправленной 2 по прежнему написан 0, то есть получается ничего не поменялось (правил я под учеткой root). За тем у клиента выкл/вкл подключение по локальной сети - инет поднимается. Смотрю в таблицу arp там вижу записи с параметром статический появились, и одна из них
192.168.102.102       00-1d-60-7b-e5-26     статический
Это основной шлюз, мак правильный, это очень хорошо, но почему так стало? Раньше был динамический всегда и перезагружая интерфейс мог стать правильным или не правильным. Тут перезагрузил 10 раз - всегда правильный. Чудеса - ничего не поменял, а ситуация улучшилась... Можете такое объяснить?
Продолжил эксперимент: у пользователя еще много раз перезапускал интерфейс, пока 100% мак правильный и статический. Но потом решил, а попробую я теперь arp -d написать, в итоге он делается динамическим и сразу же или через случайный промежуток времени меняется на неправильный. Опять перезапускаю интерфейс - все налафивается, опять правильный, опять статический. Так-то это не принципиально, ведь пользователь сам никогда таблицу arp чистить не станет, но все же это как-то странно. Что-то мне кажется вся эта история где-то не правильной...


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено aaa , 30-Авг-12 13:22 
>[оверквотинг удален]
> не правильным. Тут перезагрузил 10 раз - всегда правильный. Чудеса -
> ничего не поменял, а ситуация улучшилась... Можете такое объяснить?
> Продолжил эксперимент: у пользователя еще много раз перезапускал интерфейс, пока 100% мак
> правильный и статический. Но потом решил, а попробую я теперь arp
> -d написать, в итоге он делается динамическим и сразу же или
> через случайный промежуток времени меняется на неправильный. Опять перезапускаю интерфейс
> - все налафивается, опять правильный, опять статический. Так-то это не принципиально,
> ведь пользователь сам никогда таблицу arp чистить не станет, но все
> же это как-то странно. Что-то мне кажется вся эта история где-то
> не правильной...

Чтобы изменения вступили моментально надо делать так:
sysctl -w net.ipv4.conf.eth0.arp_announce=2
и т.п.
потом очистить арп кеш
либо добавляем строки
net.ipv4.conf.eth0.arp_announce=2
в файл /etc/sysctl.conf и делаем sysctl -p

посмотреть изменения можно так: sysctl -a|grep arp


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено 0x21h , 29-Авг-12 17:10 
Приведите настройка обоих сетевых интерфейсов, "route -n", а так же "sysctl -a" так будет проще разбираться.

"Debian выдает в сеть адрес не той сетевой карты"
Отправлено lucky89 , 29-Авг-12 22:43 
> Приведите настройка обоих сетевых интерфейсов, "route -n", а так же "sysctl -a"
> так будет проще разбираться.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
178.169.66.72   0.0.0.0         255.255.255.248 U     0      0        0 eth1
192.168.102.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         178.169.66.73   0.0.0.0         UG    0      0        0 eth1

а вывод "sysctl -a" мне в терминал PuTTY не входит. Может что-то конкретное интересует?


"Debian выдает в сеть адрес не той сетевой карты"
Отправлено LSTemp , 02-Сен-12 06:20 
> а вывод "sysctl -a" мне в терминал PuTTY не входит. Может что-то
> конкретное интересует?

А что опция Window->Lines of scrollback уже не помогает? Можно даже галочку Display scrollbar поставить, если с клавиатуры листать не умеете.