маршруты вникуда ?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

маршруты вникуда ?

Ilya A. Kovalenko
       Доброе время суток,

  Насколько я понимаю мануал route(8), стек может без PF дискардить
трафик, если для его местоназначения прописан маршрут "вникуда" -
с модификаторами -blackhole или -reject :

     -blackhole   RTF_BLACKHOLE    silently discard pkts (during updates)
     -reject      RTF_REJECT       emit an ICMP unreachable when matched

(правда немного смущает это непонятное "при апдейтах")

  Но я как-то не разберусь как будет выглядеть команда для добавления
такого маршрута.

Без адреса назначения (что было бы логичным) команда ругается:

# route add -blackhole 1.0.0.1
route: writing to routing socket: Invalid argument
add host 1.0.0.1: Invalid argument

При написании с каким-нибудь, требуемым по ману
route [-dnqtv] command [modifiers] destination gateway [netmask]
адресом назначения:

# route add -blackhole 1.0.0.1 192.168.x.y
add host 1.0.0.1: gateway 192.168.x.y

ядро плюет на модификатор и роутит пакет на указанный адрес:

# traceroute -n -I 1.0.0.1
traceroute to 1.0.0.1 (1.0.0.1), 64 hops max, 60 byte packets
 1  192.168.x.y  1.395 ms  0.501 ms  0.343 ms
 2  192.168.*.*  0.483 ms  0.640 ms  0.450 ms
 3  192.168.*.*  0.855 ms  1.18 ms  1.154 ms
 4  192.168.*.*  3.120 ms  5.448 ms  2.11 ms
^C

(и для внешнего хоста то же)

если прописать назначением несуществующий адрес или 127.0.0.1
(насколько 127.0.0.1 здесь вообще хорошая идея), то трафик как-бы
никуда не отправляется, но это происходит и без модификаторов, да и
по -reject, никаких "unreachables" не наблюдается.

  Может я как-то не так ман курю, как это кастуется ? :)

С уважением,
Илья А. Коваленко                     (mailto:[hidden email])
Системный администратор
ЗАО Оганер-Сервис
+7 3919 348-629


Reply | Threaded
Open this post in threaded view
|

Re: маршруты вникуда ?

Dinar Talypov
On Wed, 23 Dec 2009 09:07:04 +0700
"Ilya A. Kovalenko" <[hidden email]> wrote:

>        Доброе время суток,
>
>   Насколько я понимаю мануал route(8), стек может без PF дискардить
> трафик, если для его местоназначения прописан маршрут "вникуда" -
> с модификаторами -blackhole или -reject :
>
>      -blackhole   RTF_BLACKHOLE    silently discard pkts (during updates)
>      -reject      RTF_REJECT       emit an ICMP unreachable when matched
>
> (правда немного смущает это непонятное "при апдейтах")
>
>   Но я как-то не разберусь как будет выглядеть команда для добавления
> такого маршрута.
>
> Без адреса назначения (что было бы логичным) команда ругается:
>
> # route add -blackhole 1.0.0.1
> route: writing to routing socket: Invalid argument
> add host 1.0.0.1: Invalid argument
>
> При написании с каким-нибудь, требуемым по ману
> route [-dnqtv] command [modifiers] destination gateway [netmask]
> адресом назначения:
>
> # route add -blackhole 1.0.0.1 192.168.x.y
> add host 1.0.0.1: gateway 192.168.x.y
>
> ядро плюет на модификатор и роутит пакет на указанный адрес:
>
> # traceroute -n -I 1.0.0.1
> traceroute to 1.0.0.1 (1.0.0.1), 64 hops max, 60 byte packets
>  1  192.168.x.y  1.395 ms  0.501 ms  0.343 ms
>  2  192.168.*.*  0.483 ms  0.640 ms  0.450 ms
>  3  192.168.*.*  0.855 ms  1.18 ms  1.154 ms
>  4  192.168.*.*  3.120 ms  5.448 ms  2.11 ms
> ^C
>
> (и для внешнего хоста то же)
>
> если прописать назначением несуществующий адрес или 127.0.0.1
> (насколько 127.0.0.1 здесь вообще хорошая идея), то трафик как-бы
> никуда не отправляется, но это происходит и без модификаторов, да и
> по -reject, никаких "unreachables" не наблюдается.
>
>   Может я как-то не так ман курю, как это кастуется ? :)

возможно вот так будет работать

route add 1.0.0.1 127.0.0.1 -reject


--
Динар Талыпов


Reply | Threaded
Open this post in threaded view
|

Re[2]: маршруты вникуда ?

Ilya A. Kovalenko
Вроде разобрался, спасибо.

> route add 1.0.0.1 127.0.0.1 -reject
на самом деле, работает и так и эдак ...

т.е. и для
route add 1.0.0.1 127.0.0.1 -reject
и для
route add -reject 1.0.0.1 127.0.0.1

а основная моя ошибка была в том, что "route change" (использование
которого я не описывал) похоже не меняет флагов RTF_BLACKHOLE и
RTF_REJECT.
Не устанавливает и не сбрасывает если они установлены.

В итоге выглядит все так как и было задумано:

# route -n add -reject 1.0.0.1 127.0.0.1
add host 1.0.0.1: gateway 127.0.0.1

X:\>tracert -d 1.0.0.1
Трассировка маршрута к 1.0.0.1 с максимальным числом прыжков 30
  1    <1 мс    <1 мс    <1 мс  192.168.1.200
  2  192.168.1.200  сообщает: Заданный узел недоступен.
Трассировка завершена.

--------------------------------------------

# route -n add -blackhole 1.0.0.1 127.0.0.1
add host 1.0.0.1: gateway 127.0.0.1

X:\>tracert -d 1.0.0.1
Трассировка маршрута к 1.0.0.1 с максимальным числом прыжков 30
  1    <1 мс    <1 мс    <1 мс  192.168.1.200
  2     *        *     ^C

--------------------------------------------

В таком заворачивании несколько настораживает появление блокируемых
таким образом пакетов на lo0 (более в ключе производительности,
нежели чего-нибудь еще).

А если же просто написать маршрут на 127.0.0.1, на самом деле получим
циклический маршрут (моя ошибка в изначальном посте):

# route -n add 1.0.0.1 127.0.0.1
add host 1.0.0.1: gateway 127.0.0.1

X:\>tracert -d 1.0.0.1
Трассировка маршрута к 1.0.0.1 с максимальным числом прыжков 30
  1    <1 мс    <1 мс    <1 мс  192.168.1.200
  2    <1 мс    <1 мс    <1 мс  192.168.1.200
  3    <1 мс    <1 мс    <1 мс  192.168.1.200
  4    <1 мс    <1 мс    <1 мс  192.168.1.200
^C