鵝因為公司的產品要搞IPv6Ready的Logo,被逼著一定要做完那堆測試,目前的狀況是鵝用認證單位指定的環境/工具去測就是有一部份測不過,而且更誇張的是測試工具出的報告有自相矛盾的地方....
1:ICMPv6部份,報告說第9/10項是fail的....
2:但是點進標示fail的項目,judgement又說是pass的....
鵝後來推測出問題出在哪了,因為認證單位指定的測試工具(TN)是在FreeBSD上裝user space的AP負責產生test pattern給被測物(NUT),再用sniffer(libpcap)的方式抓回user space分析,而不是一般由OS的TCP/IP stack負責相關工作(所以那個TN很難搞),像那個ICMPv6的第9/10項是由TN產生UDP port 9000的packet給NUT,因為NUT並沒有listen UDP port 9000,所以應該會回ICMP port unreachable,可是鵝把packet dump下來看到TN產生的packet並不像document所描述的,難怪NUT沒有回應,那測了半天到底是在測TN還是在測NUT啊....
就我個人的理解是
TN 送出一個IPv6 的IP位置是link local address 封包類型 UDP port 9000 到NUT
而NUT 由於沒有聆聽這個封包,所以會回應ICMPv6 port unreachable
以上是個人經驗
leoman0704提到:
- 可能Debug 要看一下TN 送出的封包是不是對的,這部分要看當初架設環境是否有錯
- 另外再NUT上面看有沒有開啟IPv6 的ip6tables是不是被過濾掉,然後用tcpdump看封包是不是真的有收到
謝了,我用sniffer看那個封包看來像是包在IPv6裡的IPv4(而不是送給NUT的IPv6),所以被NUT直接丟掉了,不過認證單位只給了很空汎的建議(不要用server卡,不要在VM測,不要過switch),Document也只說TN是架在Freebsd8上的,鵝照其建議兜,TN送出來的封包都不如預期了,那接下來該怎麼測啊....
先前測試時印象中是可以只指定測是這個測項,不要每次都重新全測全部
你有找到重點 那顆第十號封包 就是TN送出來的ipv6封包,裡面會夾帶一顆ipv4的封包
EUT在收到這顆第10號時,必須要回應一個ipv6 Destination unreachable 封包 Dstport = 9000
依照經驗這是要回頭看Kernel ipv6 icmp模組去修改source,你的環境是沒有問題的