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

Исходное сообщение
"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."

Отправлено eightn , 01-Ноя-04 08:51 
FreeBSD 5.2.1
Хост имеет адрес 192.168.1.5, в другую сеть он выходит через default gw 192.168.1.1
Есть еще одна сеть 10.0.0.0/24, которая подключена к нашей через маршрутизатор 192.168.1.200

BSD(192.168.1.5) ==> (default gw)192.168.1.1 ===> Inet
                                       \--->(192.168.1.200)-->10.0.0.0/24

В таблице маршрутов у FreeBSD хоста прописан только default gw и больше ничего.

Но иногда хост самостоятельно добавляет в таблицу маршруты напрямую на хосты из сети 10.0.0.0/24, т.е. на BSD появляются вот такие записи:
10.0.0.0.2        192.168.1.100       UGHD        0     2168    em1
10.0.0.0.24       192.168.1.100       UGHD        0      786    em1
10.0.0.0.88       192.168.1.100       UGHD        0     1674    em1
10.0.0.0.171      192.168.1.100       UGHD        0     1102    em1
10.0.0.0.174      192.168.1.100       UGHD        0      771    em1
10.0.0.0.177      192.168.1.100       UGHD        0      857    em1

Видимо BSD видит некоторые пакеты, что идут из 10.0.0.0/24 через 192.168.1.100 и прописывает такие маршруты напрямую, в результате компьютеры, из 10.0.0.0/24, прописавшиеся в таблице маршрутизации напрямую, перестают быть доступными.

Вопрос - почему BSD это делает (прописывает маршруты самостоятельно) и как ее от этого отучить?


Содержание

Сообщения в этом обсуждении
"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено lavr , 01-Ноя-04 12:12 
>FreeBSD 5.2.1
>Хост имеет адрес 192.168.1.5, в другую сеть он выходит через default gw
>192.168.1.1
>Есть еще одна сеть 10.0.0.0/24, которая подключена к нашей через маршрутизатор 192.168.1.200
>
>
>BSD(192.168.1.5) ==> (default gw)192.168.1.1 ===> Inet
>                                       \--->(192.168.1.200)-->10.0.0.0/24
>
>В таблице маршрутов у FreeBSD хоста прописан только default gw и больше
>ничего.
>
>Но иногда хост самостоятельно добавляет в таблицу маршруты напрямую на хосты из
>сети 10.0.0.0/24, т.е. на BSD появляются вот такие записи:
>10.0.0.0.2        192.168.1.100    
>   UGHD        
>0     2168    em1
>10.0.0.0.24       192.168.1.100    
>  UGHD        0
>     786    em1
>10.0.0.0.88       192.168.1.100    
>  UGHD        0
>    1674    em1
>10.0.0.0.171      192.168.1.100      
> UGHD        0  
>   1102    em1
>10.0.0.0.174      192.168.1.100      
> UGHD        0  
>    771    em1
>10.0.0.0.177      192.168.1.100      
> UGHD        0  
>    857    em1
>
>Видимо BSD видит некоторые пакеты, что идут из 10.0.0.0/24 через 192.168.1.100 и
>прописывает такие маршруты напрямую, в результате компьютеры, из 10.0.0.0/24, прописавшиеся в
>таблице маршрутизации напрямую, перестают быть доступными.
>
>Вопрос - почему BSD это делает (прописывает маршруты самостоятельно) и как ее
>от этого отучить?

ну осели в таблице, посмотри arp'ы этих адресов и удали - маршрут пропадет
или route del - удали маршрут руками



"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено uxian , 01-Ноя-04 12:59 
>>Но иногда хост самостоятельно добавляет в таблицу маршруты напрямую на хосты из
>>сети 10.0.0.0/24, т.е. на BSD появляются вот такие записи:
>>10.0.0.0.2        192.168.1.100    
>>   UGHD        
>>0     2168    em1
>>10.0.0.0.24       192.168.1.100    
>>  UGHD        0
>>     786    em1
>>10.0.0.0.88       192.168.1.100    
>>  UGHD        0
>>    1674    em1
>>10.0.0.0.171      192.168.1.100      
>> UGHD        0  
>>   1102    em1
>>10.0.0.0.174      192.168.1.100      
>> UGHD        0  
>>    771    em1
>>10.0.0.0.177      192.168.1.100      
>> UGHD        0  
>>    857    em1
>>
>>Видимо BSD видит некоторые пакеты, что идут из 10.0.0.0/24 через 192.168.1.100 и
>>прописывает такие маршруты напрямую, в результате компьютеры, из 10.0.0.0/24, прописавшиеся в
>>таблице маршрутизации напрямую, перестают быть доступными.
>>
>>Вопрос - почему BSD это делает (прописывает маршруты самостоятельно) и как ее
>>от этого отучить?
>
>ну осели в таблице, посмотри arp'ы этих адресов и удали - маршрут
>пропадет
>или route del - удали маршрут руками


arp-ы указыают на 192.168.100.1

Проблема в том, что после удаления их ручками маршруты опять появляются временами (случайным образом на хосты из 10.0.0.0/24). Под "случайным образом" понимается то, что если хосты из 10.0.0.0/24 работают с FreeBSD машиной, то лишь на некоторые из них FreeBSD прописывает собственные маршруты, причем это происходит довольно редко.

Можно написать скрипт, который будет следить за появлением таких маршрутов и удалять их, но это, на мой взгляд, решение через одно место.

Можно ли императивно запретить FreeBSD прописывать в свою таблицу маршрутов что угодно, кроме адресов хостов из ее собственной подсети?


"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено Andy , 01-Ноя-04 13:14 
man ifconfig
/staticarp

Не то?


"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено eightn , 01-Ноя-04 13:18 
>man ifconfig
>/staticarp
>
>Не то?

Если ввести static arp, то будут проблемы с локальной сетью 192.168.1.0/24
Можно, конечно, прописать все хосты из этой подсети в arp-таблицу, но вполне возможно, что будут появляться новые машины или у текущих сетевая карта сменится... В общем, не очень удобно.

А каких нибудь флагов-триггеров, говорящих "не вставляй маршруты не из своей подсети" в FreeBSD нет?


"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено lavr , 01-Ноя-04 13:34 
>>man ifconfig
>>/staticarp
>>
>>Не то?
>
>Если ввести static arp, то будут проблемы с локальной сетью 192.168.1.0/24
>Можно, конечно, прописать все хосты из этой подсети в arp-таблицу, но вполне
>возможно, что будут появляться новые машины или у текущих сетевая карта
>сменится... В общем, не очень удобно.
>
>А каких нибудь флагов-триггеров, говорящих "не вставляй маршруты не из своей подсети"
>в FreeBSD нет?

подними статический роутинг на сеть 10.0.0.0/24 через 200'ую и все.


"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено eightn , 01-Ноя-04 14:01 

>>А каких нибудь флагов-триггеров, говорящих "не вставляй маршруты не из своей подсети"
>>в FreeBSD нет?
>
>подними статический роутинг на сеть 10.0.0.0/24 через 200'ую и все.

Да, можно так.
Или перевести 192.168.1.200 в другую подсеть, например 192.168.200.200

Или изменять адреса сети 10.0.0.0/24 между 1.1 и 1.200 с помощью netmap (т.е. один к одному), там на обоих машинах стоит linux:
на 1.200:
iptables -t nat -I POSTROUTING -s 10.0.0.0/24 -d 192.168.1.0/24 -j NETMAP --to 10.111.0.0/24
iptables -t nat -I PEROUTING -s 192.168.1.0/24 -d 10.111.0.0/24 -j NETMAP --to 10.0.0.0/24
;-)


Но можно ли заставить BSD не модифицировать свою таблицу маршрутов?
Или придется выбирать один из трех вышеперечисленных способов?

Прописывать статический роутинг через 200'ую не хотелось бы в силу того, что центральным маршрутизатором является 1.1, пускать маршруты в обход его - на мой взляд, неверно (невозможно будет анализоровать пущенный в обход его трафик).


"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено Andy , 01-Ноя-04 14:11 
>Но можно ли заставить BSD не модифицировать свою таблицу маршрутов?

Всегда есть возможность поправить исходники.


"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено edwin , 01-Ноя-04 14:25 
>>Но можно ли заставить BSD не модифицировать свою таблицу маршрутов?
>
>Всегда есть возможность поправить исходники.
Мне думаеться
sysctl -w net.inet.ip.redirect="0"
и в /etc/sysctl.conf прописать
net.inet.ip.redirect=0

"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено eightn , 01-Ноя-04 15:33 
>>>Но можно ли заставить BSD не модифицировать свою таблицу маршрутов?
>>
>>Всегда есть возможность поправить исходники.
>Мне думаеться
>sysctl -w net.inet.ip.redirect="0"
>и в /etc/sysctl.conf прописать
>net.inet.ip.redirect=0

Спасибо, я включил (точнее поставил в 0) эту опцию. Посмотрим, поможет ли.
Хотя, судя по man 3 sysctl, она отвечает за реагирование на icmp redirect, в моем же случае (если я все верно понимаю), FreeBSD хост прописывает новые маршруты, видя пакет с мак-адресом от 1.100



"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено denn , 01-Ноя-04 14:37 
>FreeBSD 5.2.1
>Хост имеет адрес 192.168.1.5, в другую сеть он выходит через default gw
>192.168.1.1
>Есть еще одна сеть 10.0.0.0/24, которая подключена к нашей через маршрутизатор 192.168.1.200
>
>
>BSD(192.168.1.5) ==> (default gw)192.168.1.1 ===> Inet
>                                       \--->(192.168.1.200)-->10.0.0.0/24
>
а кто ж тогда 192.168.1.100. из схемы его не видать а на него указан маршрут.
все решаеться настройкой маршрутизации

"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено eightn , 01-Ноя-04 15:31 
>>FreeBSD 5.2.1
>>Хост имеет адрес 192.168.1.5, в другую сеть он выходит через default gw
>>192.168.1.1
>>Есть еще одна сеть 10.0.0.0/24, которая подключена к нашей через маршрутизатор 192.168.1.200
>>
>>
>>BSD(192.168.1.5) ==> (default gw)192.168.1.1 ===> Inet
>>                                       \--->(192.168.1.200)-->10.0.0.0/24
>>
> а кто ж тогда 192.168.1.100. из схемы его не видать а
>на него указан маршрут.
>все решаеться настройкой маршрутизации

1.100 == 1.200, опечатка в схеме

Чуть выше я объяснил причины, почему не хотелось бы делать отдельный маршрут, не через 192.168.1.1

Или запись route add -net 10.0.0.0/24 gw 192.168.1.1 спасет от прописывания "левых" самопальных маршрутов через 1.100 ?



"FreeBSD: самостоятельное прописывание маршрутов, как это отк..."
Отправлено RinatKaa , 21-Дек-04 10:15 
>>>FreeBSD 5.2.1
>>>Хост имеет адрес 192.168.1.5, в другую сеть он выходит через default gw
>>>192.168.1.1
>>>Есть еще одна сеть 10.0.0.0/24, которая подключена к нашей через маршрутизатор 192.168.1.200
>>>
>>>
>>>BSD(192.168.1.5) ==> (default gw)192.168.1.1 ===> Inet
>>>                                       \--->(192.168.1.200)-->10.0.0.0/24
>>>
>> а кто ж тогда 192.168.1.100. из схемы его не видать а
>>на него указан маршрут.
>>все решаеться настройкой маршрутизации
>
>1.100 == 1.200, опечатка в схеме
>
>Чуть выше я объяснил причины, почему не хотелось бы делать отдельный маршрут,
>не через 192.168.1.1
>
>Или запись route add -net 10.0.0.0/24 gw 192.168.1.1 спасет от прописывания "левых"
>самопальных маршрутов через 1.100 ?


Да, по умолчанию ядро зачем-то добавляет проходящие "мимо" пакеты и добавляет в таблицу маршрутизации.
В rc.conf нужно добавить строку: icmp_drop_redirect="YES"
Или как вариант, если не хочеться перегружать тачку - удалить ручками все маршруты с меткой "UGHD" и запустить демон маршрутизации, котторый собственно будет отслеживать это дело. - можно просто без параметров запустить routed (он кажется в стандартной поставке имеется).