LINUX.ORG.RU

История изменений

Исправление vel, (текущая версия) :

IMHO использование 0.0.0.0 0.0.0.0 в hosts - это либо ооочень старый метод времён ядер до 2.6, либо это бездумно принесено оз оффтопиков.

Наш ip-стек достаточно интересный.

0.0.0.0/32 он же INADDR_ANY который расценивается как локальный широковещательный адрес и ближаший вариант это 127.0.0.1.

Выполни «ip ro get 0.0.0.0» и «ip ro get 127.0.0.1»

Дальше посмотри на «ip ro ls table all»

Нашел машрут к 0.0.0.0/32? А он есть. Он прибит гвоздями.

Если глянуть исходники ядра linux-5.15/net/ipv4/route.c в районе строки 2750

        if (!fl4->daddr) {
                fl4->daddr = fl4->saddr;
                if (!fl4->daddr)
                        fl4->daddr = fl4->saddr = htonl(INADDR_LOOPBACK);
                dev_out = net->loopback_dev;
                fl4->flowi4_oif = LOOPBACK_IFINDEX;
                res->type = RTN_LOCAL;
                flags |= RTCF_LOCAL;
                goto make_route;
        }

А локально рекламу резать можно только на L7

Исходная версия vel, :

IMHO использование 0.0.0.0 0.0.0.0 в hosts - это либо ооочень старый метод времён ядер до 2.6, либо это бездумно принесено оз оффтопиков.

Наш ip-стек достаточно интересный.

0.0.0.0/32 он же INADDR_ANY который расценивается как локальный широковещательный адрес и ближаший вариант это 127.0.0.1.

Выполни «ip ro get 0.0.0.0» и «ip ro get 127.0.0.1»

Дальше посмотри на «ip ro ls table all»

Нашел машрут к 0.0.0.0/32? А он есть. Он прибит гвоздями.

Если глянуть исходники ядра linux-5.15/net/ipv4/route.c в районе строки 2750

        if (!fl4->daddr) {
                fl4->daddr = fl4->saddr;
                if (!fl4->daddr)
                        fl4->daddr = fl4->saddr = htonl(INADDR_LOOPBACK);
                dev_out = net->loopback_dev;
                fl4->flowi4_oif = LOOPBACK_IFINDEX;
                res->type = RTN_LOCAL;
                flags |= RTCF_LOCAL;
                goto make_route;
        }