修复DHCPv6 PD: 记一次ACL配置错误

故事是这样的, 这篇文章提到, 我的家庭宽带分到了一个SLAAC的slash-64地址作为链路地址, 以及一个DHCPv6 PD的slash-60作为终端的地址。为了安全, 主要是防止我内网的某些服务意外地暴露给公网, 我在主路由器上配置了几条ACL, 过滤了公网发往内网方向的TCP和UDP的端口小于1024的所有数据包。(事实上, 测试表明学校的ACL似乎也是这么配的, 还额外屏蔽了3389等大于1024的危险服务端口。) 用公网服务器进行nmap扫描并确定数据包被过滤后, 看似毫无问题, 我就安安心心回学校搞毕设了。

然而, 到周末回家, 我发现DHCPv6 PD又没有了, 只剩一个SLAAC的slash-64的链路地址, 我猜想是北京联通在进行IPv6网络的调整, 就没有仔细研究, 只是每周都测一下DHCPv6 PD有没有恢复。(事后反思, 一个富有经验的网络维护者到此应该已经知道哪里不对了。聪明的你, 看出来了吗?)

今天, 我突然尝试使用光猫拨号(之前已改为桥接), 发现DHCPv6 PD明明好好的。经过一些尝试后, 我把光猫改回了桥接, 并决定在光猫和路由器之间串联一个端口镜像器, 分析线上的报文。分析发现, 路由器能够发出DHCPv6 Solicit报文, DHCP服务器能够返回Advertise报文, 然后就没有下文了。进一步观察发现, 路由器以一定周期发送Solicit报文, 每次DHCP服务器都有响应, 且响应报文里已经成功分配了DHCPv6地址前缀。这大概率说明路由器没有接收到Advertise报文, 或是接收到该报文但丢弃了。至此我才想明白是怎么回事, 我修改了ACL, 放通了DHCPv6数据包(UDP端口546、547), DHCPv6 PD恢复正常。

这个故事告诉我们, 我太菜了, 离富有经验的网络维护者还有很大一段距离。

特此记录。

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/11886QrCode