Bonjour,
Ayant recemment migré vers une BBox avec débit+, j'ai modifié mon script pour vérifier la connectivité du router.
Pour vérifier la connection IPv4, il ping le DNS primaire. Le gateway primaire souvent ne repond pas aux pings. Pour vérifier la connection IPv6, le script ping le gw qui d'après mes tests répond bien.
Script test :
# WAN interface
:local waniface "vlan-wan-bouygues"
# Ping test parameters
:local pingcount 3
:local pinginterval "3s"
# Internal state variables - do not modify
:local defgw4
:local defgw6
:local dnssrv4
:local pingresult4 0
:local pingresult6 0
:local noconn4 0
:local noconn6 0
:local testv4 0
:local testv6 0
:local dorestarts 0
# Check if there are DHCP clients enabled on the WAN interface, and if so test respective connections
:if ([/ip dhcp-client get $waniface disabled ] = false ) do { :set testv4 1 }
:if ([/ipv6 dhcp-client get $waniface disabled ] = false ) do { :set testv6 1 }
# (DHCPv4) Get DNS server provided by ISP. If not available, restart DHCP clients.
:do { :set dnssrv4 [/ip dhcp-client get number=[find interface=$waniface ] value-name=primary-dns ] } on-error={ :set noconn4 1 }
:if ([:len $dnssrv4 ] < 7) do { :set noconn4 1 }
:if (($testv4 = 1) and (noconn4 = 1)) do={ :log error "WAN CONNECTIVITY CHECK (IPv4): No DNS server detected. Restarting DHCP clients." ; :set dorestarts 1 }
# (DHCPv6) Check if IPv6 gateway is available, if not, restart DHCP clients
:do { :set defgw6 [/ipv6 route get number=[find dst-address="::/0" and vrf-interface=$waniface ] value-name=gateway ] } on-error={ :set noconn6 1 }
:if ([:len $defgw6 ] <= [:len $waniface]) do { :set noconn6 1 }
:if (($testv6 = 1) and (noconn6 = 1)) do { :log error "WAN CONNECTIVITY CHECK (IPv6): No gateway detected. Restarting DHCP clients." ; set dorestarts 1 }
# (DHCP v4&6) If gateway found, ping to check if reachable
:if ($dorestarts = 0) do {
:if (($testv4 = 1) and ($noconn4 = 0)) do={ :set pingresult4 [ :ping address=$dnssrv4 count=$pingcount interval=$pinginterval interface=$waniface ] }
:if (($testv6 = 1) and ($noconn6 = 0)) do={ :set pingresult6 [ :ping address=$defgw6 count=$pingcount interval=$pinginterval interface=$waniface ] }
}
# If no successful ping, restart DHCP clients.
:if ( ($dorestarts = 0) and ($pingresult4 = 0) and ($testv4 = 1) ) do={
:log error "WAN CONNECTIVITY CHECK (IPv4): Ping to primary ISP DNS server failed. Restarting DHCP clients."
:set dorestarts 1
}
:if ( ($dorestarts = 0) and ($pingresult6 = 0) and ($testv6 = 1) ) do={
:log error "WAN CONNECTIVITY CHECK (IPv6): Ping to default gateway failed. Restarting DHCP clients."
:set dorestarts 1
}
:if ( $dorestarts = 1 ) do={
:system/script/run wanRestartDHCPv4client
:delay delay-time=0.5s
:system/script/run wanRestartDHCPv6client
}
Script wanRestartDHCPv4client
:local waniface "vlan-wan-bouygues"
/ip dhcp-client release [find interface=$waniface ]
/ip dhcp-client disable [find interface=$waniface ]
/delay delay-time=2s
/ip dhcp-client enable [find interface=$waniface ]
Script wanRestartDHCPv6client
:local waniface "vlan-wan-bnet"
/ipv6 dhcp-client release [find interface=$waniface ]
/ipv6 dhcp-client disable [find interface=$waniface ]
/delay delay-time=2s
/ipv6 dhcp-client enable [find interface=$waniface ]