I note it's a Linux based router, and a shell is accessible via the telnet interface. It appears to be running a modified version of linux 2.6.21.5.
My problem is that the NAT state table is misconfigured and broken.
The symptom is that various games do not function (random disconnections), sometimes websites appear to hang (easily fixed by refreshing the page).
It's caused because the conntrack timeouts are misconfigured, suggested default values can be found here:
http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#TABLE.INTERNALSTATES
Probably the most important one is the established connection timeout which is
set to 12 seconds on the router, when the recommended value by the Linux Netfilter guys is 5 days!!!!
This wouldn't be so bad because you can telnet to the router and start a Linux shell by telnetting to it and typing "sh".
Set the established timeout to 1 hour can be done by (times are in jiffies or 1/100ths of a second, refer to the documentation I linked above):
antony@blackmamba:~$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
=======================
Welcome to ZXDSL 931WII
=======================
ZTE Inc., Software Release ZXDSL 931WIIV1.5.0c_Z31_FI2
Login: admin
Password:
> sh
BusyBox v1.00 (2009.11.25-00:58+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.
# cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
1200
# echo 360000 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
#
Except it doesn't work because some !!$~@&% has modified the linux kernel so that it ignores this value and sets this timeout to 30 seconds for established connections. (You can check the state of the connection tracking by reading /proc/net/ip_conntrack, and watch the established connections get timed out after 30 seconds regardless).
Even if the above worked it would only work until the modem was rebooted.
Please could Sonera also take this up with ZTE?
-Antony