Asus WL-520GU with Tomato Firmware v1.28.8754 ND USB Std
My WAN connection is DHCP. The lease time I'm getting from my ISP is 2 hours. After 1 hour, udhcpc attempts to renew. Here's my syslog with iptables set to log incoming udp:
May 17 16:49:48 tomato daemon.info udhcpc[21120]: Sending renew…
May 17 16:49:48 tomato user.warn kernel: IN= OUT=vlan1 SRC=xxx.xx.xx.xxx DST=173.183.128.1 LEN=576 TOS=0x00 PREC=0x00 TTL=64 ID=60908 DF PROTO=UDP SPT=68 DPT=67 LEN=556
May 17 16:49:48 tomato user.warn kernel: IN=vlan1 OUT= MAC=a:mac SRC=173.183.128.1 DST=xxx.xx.xx.xxx LEN=576 TOS=0x00 PREC=0x00 TTL=64 ID=0 PROTO=UDP SPT=67 DPT=68 LEN=556
Despite clearly receiving a response, udhcpc just seems to ignore it. There is no indication in the logs that it recognizes the response. I end up with the following pattern:
May 17 11:47:23 tomato daemon.info udhcpc[9087]: Lease of xxx.xx.xx.xxx obtained, lease time 7200
May 17 12:47:30 tomato daemon.info udhcpc[9087]: Sending renew…
May 17 14:58:22 tomato daemon.info udhcpc[9087]: Sending renew…
May 17 15:13:22 tomato daemon.info udhcpc[9087]: Sending renew…
May 17 15:20:52 tomato daemon.info udhcpc[9087]: Sending renew…
May 17 15:24:37 tomato daemon.info udhcpc[9087]: Sending renew…
May 17 15:26:29 tomato daemon.info udhcpc[9087]: Sending renew…
May 17 15:27:25 tomato daemon.info udhcpc[9087]: Sending renew…
May 17 15:27:25 tomato daemon.info udhcpc[9087]: Received DHCP NAK
May 17 15:27:28 tomato daemon.info udhcpc[9087]: Sending select for xxx.xx.xx.xxx…
May 17 15:27:28 tomato daemon.info udhcpc[9087]: Lease of xxx.xx.xx.xxx obtained, lease time 7200
…and all existing connections get killed as my IP changes.
The net result of this is that every 3 hours (yes, three. I can keep my IP for exactly an hour after the lease is supposed to expire. Did the first renew succeed?) my connection goes dead, and if I don't manually renew it, it stays dead for about an hour until udhcpc attempts (re-)discovery. In the above log, I lost connection at about 14:47, but as you can see udhcpc continued to attempt to renew until it hit its retry limit. I have tried clearing NVRAM as well as a firewall rule to allow port 68 udp (ie the packets being logged), but neither of those worked.
