具体是这样的:
第一次启动 ros ,正常拨号,正常获取 ipv6pd (假定 2409:aaaa::/60 ),终端可以获得 ipv6 地址。
如果之后 pppoe 断线重播(运营商踢掉、网线重插等),又重新获取了新的 ipv6pd (假定 2409:bbbb::/60 ),终端就会获得 aaaa 和 bbbb 两个前缀的地址。等再遇到重播,终端就会得到 bbbb 和 cccc 两个前缀的地址。
如果一直不重启 ros ,终端总会拿到前一个和当前两个前缀的 ipv6 。图上的 1892:af90 就是上次拨号下发的前缀。
已经尝试调整过 preferred-lifetime 和 valid-lifetime ,没有效果,两个地址会在终端一直存在。
贴一下配置请帮忙看看是那里的问题,版本 chr7.19.3 (stable):
/interface ethernet
set [ find default-name=ether1 ] disable-running-check=no name=LAN
set [ find default-name=ether2 ] disable-running-check=no name=WAN
/interface pppoe-client
add add-default-route=yes disabled=no interface=WAN max-mru=1480 max-mtu=1480 name=pppoe-out1 use-peer-dns=yes user=**************
/ip dhcp-server option
add code=3 name=option1 value="'192.168.1.100'"
add code=6 name=option2 value="'192.168.1.100'"
/ip pool
add name=dhcp_pool0 ranges=192.168.1.10-192.168.1.40
/ip dhcp-server
add address-pool=dhcp_pool0 interface=LAN lease-time=2h name=dhcp1
/system logging action
set 0 memory-lines=200
/certificate settings
set builtin-trust-anchors=not-trusted
/ip neighbor discovery-settings
set discover-interface-list=none
/ip settings
set max-neighbor-entries=16384
/ipv6 settings
set max-neighbor-entries=8192
/ip address
add address=192.168.1.1/24 interface=LAN network=192.168.1.0
/ip dhcp-server network
add address=192.168.1.0/24 dns-server=192.168.1.1 gateway=192.168.1.1
/ip dns
set allow-remote-requests=yes max-concurrent-tcp-sessions=50
/ip firewall filter
add action=drop chain=input comment="drop invalid" connection-state=invalid
add action=drop chain=forward comment="drop invalid" connection-state=invalid
/ip firewall mangle
add action=change-mss chain=forward disabled=yes new-mss=clamp-to-pmtu out-interface=pppoe-out1 protocol=tcp tcp-flags=syn
/ip firewall nat
add action=endpoint-independent-nat chain=srcnat comment=FullCone-Nat protocol=udp
add action=endpoint-independent-nat chain=dstnat comment=FullCone-Nat protocol=udp
add action=masquerade chain=srcnat out-interface=pppoe-out1
/ip service
set ftp disabled=yes
set ssh disabled=yes
set telnet disabled=yes
set www address=192.168.1.0/24
set winbox address=192.168.1.0/24
set api disabled=yes
set api-ssl disabled=yes
/ipv6 address
add address=::1 from-pool=cmcc interface=LAN
/ipv6 dhcp-client
add default-route-tables=main interface=pppoe-out1 pool-name=cmcc request=prefix
/ipv6 firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked disabled=yes
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid disabled=yes
add action=accept chain=input comment="defconf: accept ICMPv6" disabled=yes protocol=icmpv6
add action=accept chain=input comment="defconf: accept UDP traceroute" disabled=yes port=33434-33534 protocol=udp
add action=accept chain=input comment="defconf: accept DHCPv6-Client prefix delegation." disabled=yes dst-port=546 log=yes protocol=udp src-address=fe80::/16
add action=drop chain=input comment="defconf: drop everything else not coming from LAN" disabled=yes in-interface=!LAN
add action=accept chain=forward comment="defconf: accept established,related,untracked" connection-state=established,related,untracked disabled=yes
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid disabled=yes
add action=accept chain=forward comment="defconf: accept ICMPv6" disabled=yes protocol=icmpv6
add action=accept chain=forward disabled=yes dst-port=2256 log=yes protocol=tcp
add action=drop chain=forward comment="defconf: drop everything else not coming from LAN" disabled=yes in-interface=!LAN
/ipv6 firewall mangle
add action=change-mss chain=forward new-mss=clamp-to-pmtu out-interface=pppoe-out1 packet-mark="" protocol=tcp tcp-flags=syn
/ipv6 nd
set [ find default=yes ] advertise-dns=no hop-limit=64 interface=LAN
/ipv6 nd prefix default
set preferred-lifetime=10m valid-lifetime=30m
/system clock
set time-zone-name=Asia/Shanghai
/tool graphing interface
add interface=pppoe-out1
![]() |
1
kenneth104 13 天前
这个会导致你出现什么问题吗?
我不是用 ROS ,但一样会遇到这种情况,因为还会判断剩余有效期,有效期较长的 IP 会优先,所以网络是没问题 |
2
mangmaimu 13 天前 via iPhone
看看是不是 Windows 的问题,手机是否一样
|
3
guiys OP @kenneth104 网络使用没有任何影响,访问外网都是通过新前缀的 ip ,就是觉得配置哪里有问题,忍不了😂
|
5
mangmaimu 13 天前 via iPhone
@guiys
地址状态 当分配自动配置地址时,它可以处于以下状态之一: tentative - 在此状态下,主机验证地址是否唯一。验证通过重复地址检测进行。 preferred - 在此状态下,地址被验证为唯一,节点可以向首选地址发送和接收单播流量。首选状态的持续时间包含在 RA 消息中。 deprecated - 该地址仍然有效,但不用于新连接。 invalid - 节点无法再发送或接收单播流量。有效生存期到期后,地址将进入无效状态。 mikrotik 官方说明,看起来没问题,应该是不同状态 |
![]() |
6
kenneth104 13 天前
@guiys
没问题就行,不纠结就得 XD |
![]() |
7
holoto 13 天前
说明 lan 的 dhcp 下发 没有更新状态 保留了旧的 wan v6 地址。op 也有这个问题 。如果是定时重启 wan 也要设置定时重启 lan
|
![]() |
8
asde111 12 天前
老问题了,我用 routeros + windows + debian 都是一样的情况,不知道是谁的锅
旧的地址已经 invalid 了但是 valid lifetime 还在一直更新 这个帖子也有提到 https://v2ex.com/t/1014173 > 经过观察发现如下情况... 我的解决办法是在重拨之后手动更新一下旧前缀的 valid lifetime 为 0 ``` :global LastIPv6Prefix :local ipv6prefix :set ipv6prefix [/ipv6 nd prefix get [:pick [/ipv6 nd prefix find interface="bridge"] 0 ] prefix] # :log info "$ipv6prefix" :if ([:len $ipv6prefix] = 0) do={ :log error ("Could not get IPv6 for interface bridge") :error ("Could not get IPv6 for interface bridge") } :if ([:len $LastIPv6Prefix] = 0) do={ :set LastIPv6Prefix $ipv6prefix :log info ("LastIPv6Prefix is empty") } :if ($ipv6prefix != $LastIPv6Prefix) do={ :log info ("Prefix " . $LastIPv6Prefix . " has expired. Updating lifetime...") /ipv6 nd prefix add prefix=$LastIPv6Prefix interface=bridge valid-lifetime=0s preferred-lifetime=0s :delay 5s /ipv6 nd prefix remove [:pick [/ipv6 nd prefix find prefix=$LastIPv6Prefix] 0 ] :set LastIPv6Prefix $ipv6prefix } ``` |