ufm: (Default)
[personal profile] ufm
Какое-то немного неожидаемое поведение.

Делаем раз:
route add -net 10.0.0.0/24 gw 127.0.0.1
route add -net 10.0.1.0/24 gw 10.0.0.1

Делаем два:
route add 10.0.0.1 gw 192.168.2.1

Я, на голубом глазу был уверен, что поле "Делаем два" весь трафик для 10.0.1.0/24 пойдёт через 192.168.2.1 А вот фиг там.
Причём поведение и Фри и Лялиха - одинаковое (ну почти).
Вот как таблица роутинга выглядит во фре:

Destination        Gateway            Flags     Netif Expire
default            192.168.2.1        UGS         em0
10.0.0.0/24        127.0.0.1          UGS         lo0
10.0.0.1           192.168.2.1        UGHS        em0
10.0.1.0/24        10.0.0.1           UGS         lo0
127.0.0.1          link#2             UH          lo0
192.168.2.0/24     link#1             U           em0


А вот так в Линуксе:
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.2.1     0.0.0.0         UG        0 0          0 eth0
10.0.0.0        127.0.0.1       255.255.255.0   UG        0 0          0 lo
10.0.0.1        192.168.2.1     255.255.255.255 UGH       0 0          0 eth0
10.0.1.0        10.0.0.1        255.255.255.0   UG        0 0          0 lo
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0


Отличие в поведении между фрёй и линуксом в том, что при выдаче команды ping 10.0.1.1 во фре пакеты в lo0 влетают с source address 127.0.0.1, а в линуксе с адресом eth0.
Но вот то, что они вобще влетают в lo вместо того, что-бы роутиться - для меня неожиданность.

P.S. Впрочем, я допускаю, что и во фре и в линуксе есть какой-нибудь sysctl, который исправляет такое поведение, но что-то быстро он не нагуглился...