Dismiss Notice

Welcome To SNBForums

SNBForums is a community for anyone who wants to learn about or discuss the latest in wireless routers, network storage and the ins and outs of building and maintaining a small network.

If you'd like to post a question, simply register and have at it!

While you're at it, please check out SmallNetBuilder for product reviews and our famous Router Charts, Ranker and plenty more!

[beta] Dual WAN helper script (v1.0 beta 3)

Discussion in 'Asuswrt-Merlin' started by thelonelycoder, Jul 30, 2017.

Tags:
  1. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    This originated in this thread.

    August 08 2017
    Beta 3 is now available, see this post for details.

    dual-wan-helper is a script that continuously runs in the background once triggered by wan-start and pings a set domain. When ping fails it will restart the wan_service.
    It can send a notification email when enabled of the WAN type change with additional info.

    Apart from the email credentials and server settings, all script parameters are taken from the WAN/Dual WAN page in the router WebUI.
    It tries to use these parameters to only take action when necessary.

    Read the "How to use this script" part at the top of the file.

    Let's see where this goes, should work best with ASUSWRT-Merlin 380.67 because in this version Dual WAN appears to work best, but other versions might work too.

    Note that John's LTS fork and older Merlin versions are a bit sketchy with switching Primary to Secondary WAN but eventually will with this script.
    As always, ideas, suggestions and improvements are very welcome.

    Download from the website in section Other scripts
     
    Last edited: Aug 11, 2017
  2. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    @thelonelycoder wow that sounds interesting. But i still have some questions before testing.
    1. Does it work together with asus dual wan script or it blocks it and does all the business?
    2. Does it help to fix that wan1-wan2-wan1-wan2 constant switch when primary wan is down but watchdog still switches back to primary within timeout set?
    3. Does it fully use the code and features from the latest email notification script that is perfect i would say!
    4. What does "When ping fails it will restart the wan_service" mean? is it the only function? What extra functionality or comfort does it give? I don't quite understand this point. Could you please explain a little more what this script does. And how does it help asus' dual wan script.
    5. Running latest Merlin i noticed that router still tries to switch to primary even if primary is not powered. Sometimes it happends once per hour, sometimes 10 times per hour..

    Thank you very much you are doing a huge job!
     
  3. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    This is meant to replace it, so don't run both of them at the same time.
    I cannot suppress that stupid behavior of stupid WAN type switching to determine if the primary wan is up. The only way to prevent this is to NOT set "Allow failback". It will stay then on the working WAN type until it fails.
    Except the reboot option, everything essential is built in this beta version.
    It tries to be smart when to restart WAN using the set parameters in the WebUI.
    It also always knows which WAN type is currently in use.
    Instead of auto-running it through the wan-start script, you can manually start it by running:
    Code:
    /jffs/scripts/dual-wan-helper
    You see then the verbose output and what it will do next.
    WAN type and IP in use is 100% correct with this script, which was not always the case with the wan_connect_notification script.
    When using the verbose (manual) mode, you best set the SEND_MAIL to off, a bit more output is then generated to say what it does.
    Again, this is outside of what a shell script can do. But the determining parameter is "Failback Execution Time", which is an added up time from the other parameters.
    The higher this is, the less auto-back switching happens to check if Primary WAN has come back up.
     
    Last edited: Jul 30, 2017
  4. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    So dual wan should be disabled in settings? Or this script does all the job and i leave dual wan settings on? As soon as i disable dual wan - all the dual wan settings disappear.

    That is not cool at all. Especially when secondary is limited 4G connection. Stupid Assus.

    As far as i understand - there are no user set timeouts anymore for ip, NTP detection and so on - so script detects all the timeouts on its own without manual settings. Right?

    I still don't get the difference between this script and asus' dual wan script. May be i am missing something but on latest Merlin asus' script started to switch to secondary wan even when primary wan is just not pingable. So it works much better and almost like it should. If your script makes it work even better - that's great!

    No i think problem is not with failback ececution time. Because when running previous firmwares i could unplug primary wan - and router stayed on secondary wan forever. Now it tries to switch to primary without any logic explanation. Sometimes within 5 minutes, sometimes it can stay on secondary for several hours. I think there is a bug in asus script and as soon as secondary 4g connection freezes for some time - router forces switching to primary even though primary is unplugged. Thats' only my guess because it's the only way i can explain that switching happends within different time periods.
     
  5. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    @stylish_me Don't disable Dual WAN, this is a helper script to the Dual WAN feature set in the UI.
    It's function is simple: Restart WAN if the other WAN type does not come up when it should.

    I have removed all user settings pertaining to when and what to do so these do not interfere with what is set through the UI.
    This script is driven by these UI settings and supports them, in a helping way if Asus fails to do it's job.
    Look again at the settings I have posted above, in 380.67 this works like a charm.
    You can increase "Detect interval" and "Failover execution time" to lower the switching back to Primary WAN.
     
    stylish_me likes this.
  6. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    I am speaking about several timeout settings that were in email notification script. They are removed as well, right? So script calculates all the timeouts to detect NTP, current ip and so on itself without any user set timeouts.
     
  7. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    Exactly. It tries to be smart about it.
     
    stylish_me likes this.
  8. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    i wouldn't say that these settings can work like a charm because it means that failback will happen every 24 seconds even if primary wan is still down. So you will get email notifications and have no internet every 24 seconds...
    And if you are right saying that this failback timeout works even when primary is unplugged - it means that absolutely every time when primary is down, unplugged or unpingable - you will get this wan1-wan2-wan1 cycle every 24 seconds.
     
  9. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    It only notifies you of a WAN change if it actually changed it. The fckn Asus probing does not qualify as a change.
    Test it, you'll see.
     
  10. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    Wow i like how it sounds. Will do the tests for sure. But it means that i will not have internet within that wan1-wan0-wan1 cycle (minimum 8 seconds with your settings) and the router will not notify me about it.

    It seems that you are not right. Or i am not right. lol. Now running latest Merlin i have a setting "Continous detect Primary WAN successfully over 99 times ( = 891 sec.)"
    And router turns to primary every 891 second. But according to the name of this setting - router should constantly ping 8.8.8.8 within that 891 second time. Either Asus cheats and 891 seconds is just a timeout to switch to primary, make ping and switch back to secondary if primary is unpingable. Or i see no use of calling that setting so.
    And i have an idea. With your even numbers maximum failback time is 784 sec. And it is not too much. May be you can make a setting for your script to multiply this number to 2,3,4 and so on times. To make this failback time at least 1 hour. I think if router switches back to primary once per hour - is quite ok. OR. You can make this failback time customizable through script's settings. That would be perfect. Because i think 2-4 seconds is enought to ping primary wan. But if you use 2 sec as detect interval - so failback timer will be only 196sec which is too short.
     
  11. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    @thelonelycoder hi
    just installed the script but i don't see it running. Made all the changes, turned on mail notification, but no letters in my inbox and nothing about this script in logs.
    OR it shouldn't send anything when router reboots??
    When i try to run it via terminal - i get in logs:
    "Aug 1 12:16:58 admin: dual-wan-helper: Prevented second instance of this script, lockfile exists. via /jffs/scripts/dual-wan-helper
    "
    So as far as i understand this script doesn't send emails when router reboots. And i think it should )
     
    Last edited: Aug 1, 2017
  12. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    Make sure you changed the line in wan-start and set the new script as executable.
    It will send one mail per WAN type change, including one when booting.
     
  13. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    Changed to on and the script is 0755

    Just unplugged lan cable - router reconnected to secondary wan, still no email notification. I see
    Aug 1 12:19:48 admin: dual-wan-helper: Prevented second instance of this script, lockfile exists. via /jffs/scripts/dual-wan-helper
    two times after
    Aug 1 12:19:35 WAN(0)_Connection: WAN was exceptionally disconnected.
    happened.

    Now
    Aug 1 12:20:47 WAN(1)_Connection: WAN was restored.
    but still no email. All the email settings are correct, i copie them line by line from email notification script.
     
  14. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    Run it in verbose mode and see what it tells you when the WAN type changes.
    It'll say "WAN type change on (date)".
    Code:
    /jffs/scripts/dual-wan-helper kill
    then
    Code:
    /jffs/scripts/dual-wan-helper
    Unplug cable and wait for message.
     
  15. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    /jffs/scripts$ /jffs/scripts/dual-wan-helper kill
    Terminated
    /jffs/scripts$ /jffs/scripts/dual-wan-helper
    Primary-WAN reported
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 792
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 784
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 776
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 768
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 760
    ping NOK, timeout in 24
    Secondary-WAN reported
    ping: sendto: Network is unreachable
    ping NOK, timeout in 16
    ping OK, Secondary-WAN, 192.168.0.111, WAN test in 776
    ping OK, Secondary-WAN, 192.168.0.111, WAN test in 768
    ping OK, Secondary-WAN, 192.168.0.111, WAN test in 760


    and still
    Aug 1 12:35:59 admin: dual-wan-helper: Prevented second instance of this script, lockfile exists. via /jffs/scripts/dual-wan-helper

    before
    Aug 1 12:36:58 WAN(1)_Connection: WAN was restored.
     
  16. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    I see where it fails in your case. Let me change that.
    I'll post a new version as soon as possible.
     
  17. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    Could you please highlight the part of the code you change - not to make all the settings from the very beginning. Thanx!

    And one more interesting point:

    ping OK, Secondary-WAN, 192.168.0.111, WAN test in 368
    ping OK, Secondary-WAN, 192.168.0.111, WAN test in 360
    ping OK, Secondary-WAN, 192.168.0.111, WAN test in 352
    ping OK, Secondary-WAN, 192.168.0.111, WAN test in 344
    ping OK, Secondary-WAN, 192.168.0.111, WAN test in 336
    ping NOK, timeout in 24
    ping NOK, timeout in 16
    Primary-WAN reported
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 776
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 768
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 760
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 752

    So even being on secondary wan it still pings this connection through 4g router instead of waiting for failback time. And if 4g drops for some seconds - it switches back to primary wan before timeout. It is ok when primary wan is ok but when primary is down - so no connection at all.
    And it starts ping timeout again after switching back to primary wan. I think that is not right. 784 (98x8) seconds are only for failback, not for failover.. Failover is set to 2x8 = 16 sec.
     
  18. stylish_me

    stylish_me Regular Contributor

    Joined:
    Jan 4, 2014
    Messages:
    165
    Location:
    Moscow, Russia
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 776
    ................
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 64
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 56
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 48
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 40
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 32
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 24
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 16
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 8

    WAN type change on Tue, 01 Aug 2017 12:57:13 +0300
    WAN type = Primary-WAN

    sending WAN change mail, WAN type = Primary-WAN

    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 428 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0100 428 0 0 100 428 0 179 0:00:02 0:00:02 --:--:-- 181
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 792
    ping OK, Primary-WAN, 10.13.70.222, WAN test in 784


    Anly after that i got an email and saw this:
    Aug 1 12:57:13 admin: dual-wan-helper: WAN type change detected, WAN type = Primary-WAN, via /jffs/scripts/dual-wan-helper
    Aug 1 12:57:16 admin: dual-wan-helper: WAN type change detected, notification sent to [email protected] via /jffs/scripts/dual-wan-helper
     
  19. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    That is Asus switching back, the timeout is the wait time until WAN is restarted. Unless ping is successful with whichever WAN type.

    This intended so it does not restart WAN or send WAN change mail unless it needs to.
     
  20. thelonelycoder

    thelonelycoder Part of the Furniture

    Joined:
    Jan 23, 2014
    Messages:
    2,754
    Location:
    In the heart of Switzerland
    That's what I'm changing now. The high count prevents the WAN type change email for a long time until it reaches 0.
     
    stylish_me likes this.

Share This Page