Closed GoogleCodeExporter closed 9 years ago
Ваши программы нарушают RFC. Если вы не
согласны, приведите ссылки на документы.
Original comment by lly.dev
on 2 Oct 2010 at 6:17
Хмм, да, RFC2461 везде требует 255.
Однако, это не мои программы, это Windows 7. Я
полагаю, из-за пропуска таких NDISC IPv6
начинает работать в Windows 7 только где-то
минут через 5-10 после ребута (до этого нет
адреса рутера).
Так что, с одной стороны, закрывать тикет.
С другой - у всех скоро будет Windows 7 и эта
проблема.
Original comment by ache...@gmail.com
on 2 Oct 2010 at 12:46
Увы, IPv6 стек в ядрах 2.4 далёк от полноты, да и
ip6 conntrack недоделан. Надо либо закрывать
правилами ip6tables, либо разбираться, что с
этим траффиком делать. Возможно, что-то
необходимо сбекпортить из 2.6.
Например, см.
http://tomatousb.org/forum/t-267570/need-xt-hl-support-in-k26-kernel-for-ipv6-fi
rewalling
HL для IPv6 в 2.4 есть, можно включить.
Original comment by lly.dev
on 2 Oct 2010 at 1:14
измеритель загрузки крив.
на роутере включен ipv6 или нет?
Original comment by v...@orient-96.ru
on 2 Oct 2010 at 1:22
[deleted comment]
>измеритель загрузки крив.
Не при чём измеритель загрузки, он IPv4,
забудьте. Это я сначала с ICMPv4 попутал
диагностику, а потом посмотрел в ядре, в
каком она месте и по какому поводу.
>на роутере включен ipv6 или нет?
На рутере туннель в tunnelbroker. WinXP по IPv6 он
подхватывает сразу, а вот Win7 через долгое
ожидание.
Original comment by ache...@gmail.com
on 2 Oct 2010 at 8:00
пока не подтверждаю. в локалке 2 штуки win7,
такой же тунель, все работает без лишних
ошибок.
Original comment by v...@orient-96.ru
on 2 Oct 2010 at 8:27
Оно когда адрес рутера с трудом получит,
минут через 5-10 после заргузки, тоже дальше
без ошибок.
Можно в интерфейсе адаптера адрес рутера
прописать, и тогда сразу без ошибок, но
речь-то о том, что определение соседства
работает криво и лог заполнен вот таким:
Oct 2 19:32:02 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 19:44:31 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 19:45:44 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 19:57:01 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 19:58:25 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 19:59:52 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 20:00:26 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 64
Oct 2 20:05:08 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 20:06:20 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 20:10:25 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 1
Oct 2 20:11:01 kernel: ICMP NDISC: fake message with non-255 Hop Limit
received: 64
Это одна машина и рутер. Чтобы понять, кто
кому и куда шлёт ICMPv6 эти, надо в рутере
tcpdump'ом ковыряться, но очень лениво.
Original comment by ache...@gmail.com
on 2 Oct 2010 at 8:38
Кстати, это какая-то особенность именно Win7.
Пробовал с FreeBSD - сразу подхватывает.
Original comment by ache...@gmail.com
on 2 Oct 2010 at 8:41
Кстати, 2.6 так-же дропает пакеты с hop-limit != 255,
только молча. см. net/ipv6/ndisc.c
if (ipv6_hdr(skb)->hop_limit != 255) {
ND_PRINTK2(KERN_WARNING
"ICMPv6 NDISC: invalid hop-limit: %d\n",
ipv6_hdr(skb)->hop_limit);
return 0;
}
вполне возможно, что в каких-то случаях win7
не хватает информации от radvd и нужно
расширить radvd.conf. Например,
http://www.kutukupret.com/2010/08/05/router-advertisement-daemon-radvd/
Но чтобы решить проблему заочно, без
анализа tcpdump'ом, нужно знать IPv6 на все 200%...
Кому то придётся быть первым ;-)
Original comment by lly.dev
on 3 Oct 2010 at 7:13
У меня есть подозрение, что этот экземпляр
Win7 не умеет (или делает это некорректно)
запрашивать radvd, а просто ждёт анонса.
Попробуй поиграть с параметром MaxRtrAdvInterval в
/etc/radvd.conf, а лучше настрой Win7.
Original comment by lly.dev
on 3 Oct 2010 at 8:29
Неприятный какой-то нестабильный эффект
даже у меня - при некоторых перезагрузках
бывает сразу подхватывает, а бывает ждёт,
как я описал. Вот ещё такое в логах бывает:
Oct 3 17:23:58 radvd[110]: received RS or RA with invalid hoplimit 1 from
fe80::<линк-адрес-карты-машины>
"MaxRtrAdvInterval 30;" лечит в любом случае. Вот
такие баги и глюки в Вин7. Как обойти,
понятно. Благодарю всех за помощь.
Original comment by ache...@gmail.com
on 3 Oct 2010 at 2:23
Понятно, некорректный запрос RS. В идеале,
выяснить бы почему Win7 так поступает, но для
этого нужен специалист по виндам.
Попробуй задать вопрос на http://www.sixxs.net
Original comment by lly.dev
on 3 Oct 2010 at 3:13
Мда, всё гораздо хуже, чем я ожидал -
изначально был RFC2461 (hoplimit=255), его должен
заменить RFC4861 http://www.faqs.org/rfcs/rfc4861.html также с
hoplimit=255. Но где-то сбоку притулился RFC4286 с
hoplimit = 1 !!!
Единственный вариант - спрашивать автора
radvd или на sixxs.net
Original comment by lly.dev
on 3 Oct 2010 at 4:08
Так типы ж разные
rfc4286:
IGMP Type
0x30 Multicast Router Advertisement
0x31 Multicast Router Solicitation
0x32 Multicast Router Termination
ICMPv6 Type
151 Multicast Router Advertisement |
152 Multicast Router Solicitation |
153 Multicast Router Termination
rfc4861 uses message types introduced in RFC 2461:
ICMPv6 Type
133 Router Solicitation
134 Router Advertisement
135 Neighbor Solicitation
136 Neighbor Advertisement
137 Redirect
Original comment by v...@orient-96.ru
on 3 Oct 2010 at 5:02
Хе, а вот на номера то я и не поглядел :( - ICMPv6
и там и там, значит одинаково...
radvd обрабатывает 133, значит win7 неправа.
Original comment by lly.dev
on 3 Oct 2010 at 5:09
Запустил Netmon микрософтовский. Видно, что
шлёт 133 и 135 как с хоп 1, так и с хоп 255. Причём,
с хоп 1 только c fe80-линка, а с хоп 255 c адреса
от туннелброкера.
Original comment by ache...@gmail.com
on 3 Oct 2010 at 5:28
Так туннель устанавливается не с роутера а
с win7 ? А причём тогда роутер?
Original comment by lly.dev
on 3 Oct 2010 at 5:39
Туннель с рутера. Туннельброкер ещё даёт
сетку/64, которую рутер раздаёт, или самому
можно из неё присваивать.
Original comment by ache...@gmail.com
on 3 Oct 2010 at 5:43
Сетка эта для раздачи указывается в LAN IPv6
Setting / Static IPv6 address / Netsize (bits of hostpart).
(не сказать, что это с очевидностью следует
из названий полей)
Original comment by ache...@gmail.com
on 3 Oct 2010 at 6:01
Если адрес от tunnelbroker'а прописан вручную, то
зачем ей(win7) Router solicitation(133)?? 135-й (NS) то
понятно...
Original comment by lly.dev
on 3 Oct 2010 at 6:12
Если прописать вручную, это просто
постоянный адрес адаптера, как alias, но она
не знает, куда с него слать на физическом
уровне, поэтому RS.
Я пробовал вначале и автоматом. Тогда
просто адрес этот долго не появляется.
Original comment by ache...@gmail.com
on 3 Oct 2010 at 6:18
Разобрался. Это гадил файрвол PC Tools Firewall Plus
(он типа "умеет" IPv6). И просто отключать его
при тестах не помогало, помогло uninstall.
Original comment by ache...@gmail.com
on 9 Oct 2010 at 10:42
Original issue reported on code.google.com by
ache...@gmail.com
on 1 Oct 2010 at 9:47