(no subject)
Jun. 6th, 2011 06:58 pmТоварищи, кто понимает в функционировании IPv6!
Ситуация: Есть PowerDNS который умеет биндиться и к IPv4 адресу и к IPv6 адресу.
Если оба адреса указать явным образом, или указать явным образом только IPv6 то все работает нормально.
А вот если попробовать прибиндить его на 0.0.0.0 и ::0 то бинденье к ::0 не удается, мотивируя это тем что сокет уже занят.
Происходит это от того что на ::0 "заворачивается" оба протокола IPv4 и IPv6. Если указать только ::0 то тогда IPv4 запросы pdns
обрабатывает, только приходят они от адреса ::ffff:a.b.c.d где a.b.c.d v4ый айпишник. Что имеет свои суешственные минусы, при сравнении IP'шников.
Если же, залезши в сорцы, при бинденьи сокету установить флаг IPV6_V6ONLY то на этот сокет перестанут заворачиваться IPv4 пакеты, и биндинг пройдет к обоим сокетам.
В багтреккере pdns говорят что это все ожидаемое поведение, и все так и надо.
Собсвенно ВОПРОСЫ:
1. Я не совсем понимаю понятие сокет в данном случае...
В комбинациях
local-address=0.0.0.0
local-ipv6=::0
local-address=195.54.214.xxx
local-ipv6=::0
сокет оказывается занят;
А в вариантах
local-address=0.0.0.0
local-ipv6=2002:c336:d6xx::1
и
local-address=195.54.214.xxx
local-ipv6=2002:c336:d6xx::1
они за сокет почему-то не деруться...
Почему?
2. Как такая задача решается в "нормальных" системах, когда биндится надо и к IPv4 и к IPv6 и при этом конфликтов вроде-бы не надо?
Ситуация: Есть PowerDNS который умеет биндиться и к IPv4 адресу и к IPv6 адресу.
Если оба адреса указать явным образом, или указать явным образом только IPv6 то все работает нормально.
А вот если попробовать прибиндить его на 0.0.0.0 и ::0 то бинденье к ::0 не удается, мотивируя это тем что сокет уже занят.
Происходит это от того что на ::0 "заворачивается" оба протокола IPv4 и IPv6. Если указать только ::0 то тогда IPv4 запросы pdns
обрабатывает, только приходят они от адреса ::ffff:a.b.c.d где a.b.c.d v4ый айпишник. Что имеет свои суешственные минусы, при сравнении IP'шников.
Если же, залезши в сорцы, при бинденьи сокету установить флаг IPV6_V6ONLY то на этот сокет перестанут заворачиваться IPv4 пакеты, и биндинг пройдет к обоим сокетам.
В багтреккере pdns говорят что это все ожидаемое поведение, и все так и надо.
Собсвенно ВОПРОСЫ:
1. Я не совсем понимаю понятие сокет в данном случае...
В комбинациях
local-address=0.0.0.0
local-ipv6=::0
local-address=195.54.214.xxx
local-ipv6=::0
сокет оказывается занят;
А в вариантах
local-address=0.0.0.0
local-ipv6=2002:c336:d6xx::1
и
local-address=195.54.214.xxx
local-ipv6=2002:c336:d6xx::1
они за сокет почему-то не деруться...
Почему?
2. Как такая задача решается в "нормальных" системах, когда биндится надо и к IPv4 и к IPv6 и при этом конфликтов вроде-бы не надо?