What's new
  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

Losing internet every 10 days or so with Telus ISP and RT-AX86U (Merlin 3004.388.8_4)

Routers run better if you reboot them everyday. You can setup your router to reboot everyday at 4am in the ASUS UI.

I have gone as far as purchased a Meross Smart Plugs that turns my routers off at 4:00am and back on at 4:01am.

I also purchased a notebook fan for my routers that reduce the router temperature by 15c hence my network runs super smooth everyday.
Not doing that, other things can "break", rather than this its better to solve the underlying issue that would make a reboot necessary in my opinion...
 
Last edited:
Losing internet every 10 days or so with Telus ISP and RT-AX86U (Merlin 3004.388.8_4)

Don't think it has anything to do with my ISP (Telus Fibre) with Network Access Hub - Arcadyan NH20A in Bridge mode.
I simply can't reach any websites anymore, no errors on router LOG, all devices still connected to the router and I can access the router interface via LAN...
I think it is the modem (in bridge mode) changing the IP address and the router staying on the previous public WAN IP.... so I am wondering what
changes I would need to do on the router, maybe setting up from scratch?
After a router reboot everything works again...
I may have investigated the same problem, but my devices are different. I have an EdgeRouter Pro router and a Technicolor CGA4236TCH1 cable modem. Cable modems sold by ISPs receive firmware updates. The interval can be 10 or 14 days. In bridged mode, the cable modem's internet traffic can stop when the ISP tries to update the firmware. A network analyzer shows an ARP query. The router asks for the ISP's gateway MAC address every second. The router never gets a response to the query. Because of this, the internet does not work, but the LEDs still blink.

Unplugging the cable between the modem and router for a short time helps. This works because the IP address is automatically renewed, but it is not fully automatic. The cable modem's routing mode does not freeze after the firmware update and the connection is restored within 8 minutes. I managed to make an arpcheck script inside the EdgeRouter Pro. The script monitors the ARP table and renews the IP address only if the ISP gateway MAC address is <incomplete> or missing. The automatic script start interval is 5 minutes.

Here is a picture of what my EdgeRouter arpcheck script is able to do when it detects a lost MAC address. This is Syslog server data, my script inside EdgeRouter Pro sends it to the Syslog server:
Arpcheck-syslog-picture.jpg

The image is from the Syslog server screen. A higher resolution cannot be used. The discussion forum limits the size of the image resolution. I have a better picture, but it would be too big to post here.

Port eth0 is a bridged connection and port eth1 is a routed connection. This is happening after a firmware update on the cable modem. There is no new firmware update, but the bridged internet connection freezes every time. My script automatically opens the bridged frozen connection after 10 mins. There can be a strange difference in the times if you look at the modem's DOCSIS log. The firmware update always happens on the same day if the connection stops working. This made me connect these things and I think I've hit exactly the right spot. I've been following this for a while and it always happens the same way.

If the symptoms of the problem are the same, then the problem may be the same. The problem is difficult if it is the same. The script cannot be done on all routers and it can brick the router if it fails. I could find more information through the modem's Linux operating system, but that would require electronics and hacking skills. In reality, data is transferred by MAC number, not IP number and it's a problem when the MAC number is <incomplete> or missing.

In my case, an expensive AWM FRITZ!Box cable modem might solve the problem. The firmware update of the FRITZ!Box device must be done by yourself, so the internet connection does not freeze, and there are no unnecessary updates. At least the ISP itself does not know about the problem or the ISP is trying to cover it up. The ISP may try to sell you a new modem and the new modem did not fix the problem, because it is causing the problem.

I use PuTTY when I configure or create a script for the EdgeRouter device.

The script can be added to the EdgeRouter device with the command:
sudo vi /config/scripts/arpcheck-eth0.sh

There is my EdgeRouter script:
Bash:
# /config/scripts/arpcheck-eth0.sh script version v0.4
#
# The ISP cable modem's automatic firmware update attempts are
# once or twice a week and the ARP traffic always gets stuck.
# The EdgeRouter's ARP traffic no longer receives responses
# from the ISP when the ARP traffic stops working on a bridged
# connection. This script will fix the connection problem
# automatically. DHCP release and renew fix the ARP problem.
#

# Add system PATH explicitly for cron
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# Network interface to check
ETH="eth0"

# Failover 1 interface to check
F1_ETH="eth1"

# Syslog tag for all logger messages
SYSLOG_TAG="arpcheck"

# External IP to test Internet connectivity (Google DNS)
TARGET="8.8.8.8"
TARGET2="1.1.1.1"

# Start value for MAC, GETEWAY & IPADDR
MAC=""
GATEWAY=""
IPADDR=""

# First failover 1 connectivity test via $F1_ETH
if ping -c 1 -I $F1_ETH $TARGET2 > /dev/null 2>&1; then
    logger -p user.debug -t $SYSLOG_TAG "$F1_ETH port: First failover connection test OK (Ping to $TARGET2 successful)." # Debug line
else
    logger -p user.warning -t $SYSLOG_TAG "$F1_ETH port: First failover connection test FAIL (Ping to $TARGET2 failed)."
fi

# Get current current IP from $ETH port
IPADDR=$(ip -4 addr show dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
logger -p user.debug -t $SYSLOG_TAG "$ETH port IP: $IPADDR" # Debug line

# Get current gateway IP for the interface
GATEWAY=$(/sbin/ip route | awk "/via/ && /$ETH/ {print \$3; exit}")
if [ -z "$GATEWAY" ]; then
    logger -p user.warning -t $SYSLOG_TAG "$ETH port GATEWAY IP: NO_GATEWAY"
else
    logger -p user.debug -t $SYSLOG_TAG "$ETH port GATEWAY IP: $GATEWAY"  # Debug line
fi

# Get ARP entry for the gateway IP
if [ -n "$GATEWAY" ]; then
    MAC=$(/usr/sbin/arp -an | awk -v gw="$GATEWAY" '$2 ~ gw {print $4; exit}')
else
    MAC=""
fi
logger -p user.debug -t $SYSLOG_TAG "$ETH port GATEWAY MAC: $MAC"     # Debug line

# Check for missing or incomplete ARP
if [ -z "$MAC" ] || [ "$MAC" == "<incomplete>" ]; then
    logger -p user.warning -t $SYSLOG_TAG "$ETH port: ARP table check FAILED!"

    # Uncomment the lines below to re-request DHCP IP when needed
    /usr/bin/logger -p user.warning -t $SYSLOG_TAG "$ETH port: DHCP release..."
    /usr/bin/sudo /sbin/dhclient -r $ETH
    sleep 2
    /usr/bin/logger -p user.warning -t $SYSLOG_TAG "$ETH port: DHCP renew..."
    /usr/bin/sudo /sbin/dhclient $ETH

else
    logger -p user.debug -t $SYSLOG_TAG "$ETH port: ARP table check OK!"  # Debug line
fi

# Test Internet connectivity via $ETH
if /bin/ping -c 2 -I $ETH $TARGET > /dev/null 2>&1; then
    logger -p user.debug -t $SYSLOG_TAG "$ETH port: Internet connection test OK (Ping to $TARGET successful)." # Debug line
else
    logger -p user.warning -t $SYSLOG_TAG "$ETH port: Internet connection test FAIL (Ping to $TARGET failed)."
fi

# Last failover 1 connectivity test via $F1_ETH
if ping -c 1 -I $F1_ETH $TARGET2 > /dev/null 2>&1; then
    logger -p user.debug -t $SYSLOG_TAG "$F1_ETH port: Last failover connection test OK: (Ping to $TARGET2 successful)." # Debug line
else
    logger -p user.warning -t $SYSLOG_TAG "$F1_ETH port: Last failover connection test FAIL: (Ping to $TARGET2 failed)."
fi

In script editor mode, press the i key and paste the copied script text with the right mouse button.
Save the script by pressing ESC, :, w, q and Enter.
Command to set script to run mode:
sudo chmod +x /config/scripts/arpcheck-eth0.sh

If something goes wrong in editor mode, press ESC, :, q, ! and Enter.

The timing is every five minutes:
Bash:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
*/5 * * * * /config/scripts/arpcheck-eth0.sh

The timing setting command:
sudo crontab -e
Press i and add new line */5 * * * * /config/scripts/arpcheck-eth0.sh end of the file.
Save the timing by pressing ESC, :, w, q and Enter.

If something goes wrong in editor mode, press ESC, :, q, ! and Enter.

If you want to remove the script from the EdgeRouter's memory then remove the timing setting line and remove the script with the command:
rm /config/scripts/arpcheck-eth0.sh
After this, the script and timing are removed.

The script sends data to the Syslog server on port number 514. This requires EdgeRouter settings:
Code:
system {
    syslog {
        host 192.168.50.2 {
            facility all {
                level err
            }
            facility user {
                level debug
            }
        }
    }
}

Syslog servers can be installed on different OS. Some are free and some require money.

The lines dealing with the ETH_F1 variable can be disabled by putting a # sign at the beginning of the line. The EdgeRouter arpcheck script is then a single-port eth0 port version which is probably a more common option. My EdgeRouter eth1 port is in failover mode and it requires its own settings.
 
Last edited:

Similar threads

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Back
Top