Network problems are analyzed in 3 layers of increasing complexity.
The hardware or physical layer. Clean the modem. Check your connections. Assume you've already done the reset the modem thing. Make sure all your electrical stuff is well grounded. If you're using a chinese power strip - test the power (voltmeter) to make sure everything is operating at full power. To re-iterate, inclement weather can affect crappy hardware - which is prolific. And as nnoble mentioned, we'll skip the neanderthal service technicians. Also - remember normal ADSL just guarantees connection - it does NOT guarantee any kind of QoS or quality of service.
The "link" layer. This is basically the direct hardware address layer - example the MAC address of your equipment. We'll skip this.
The "network" layer. This is the realm of IP, DNS, etc. Do a reverse DNS Lookup of the targeted web site or email server. That will give you the IP address(es) of your targeted VPN or foreign website. PING the IP address (assuming the ISP permits PING). PING is an exploitable hole, so most ISPs blackhole PINGs (goes nowhere, no response, timeouts). If the PING is responding reasonably (0-1k ms) - then the problem MAY be firewalling. Also, remember PING occurs in TWO directions - so the IP packets may take different paths going and returning - that's too complicated to explain or troubleshoot here.
If the PING times out occasionally - you probably have firewall or routing issues - which usually means you're screwed. You can TRY to use DIRECT IP addressing in your browser (aaa.bbb.ccc.ddd) - if that works the issue is DNS resolution. If direct IP addressing doesn't work - the problem is a routing or firewall issue - you're traffic is being intercepted or routed through a series of firewalls.
To check the path your traffic takes (brute force) - use the tracert (on a pc) or Traceroute (on a mac using the network utility app) to document the path your IP packets take to/from the destination. If you're like me - your traceroute will show several IP addresses in China before they pop offshore into the great pipeline. This is most probably the source of your crappy VPN connections offshore.
Do a traceroute to a typical chinese isp -example baidu.com. It should terminate in 10-15 paths.
A traceroute to a typical USA ISP (example apple.com) will take roughly 20 paths. Each path introduces lag or delay into your IP packet. IP packets (TCP/IP) timeout. To fix this - you'll have to muck around with the IP Packet timeout settings. This is a major pain to do on apple and I forgot how to do this on PCs (somewhere in the property settings - but microsoft may have disabled or hidden it elsewhere).
This is the "application" layer - the realm of some firewalls, content management/filters, etc. Not gonna go there...
In China and ESPECIALLY in Kunming - the aged or crappy construction practices (non-spec copper wire for your twisted pair phone lines, running adjacent to power lines, TV lines, etc) coupled with (as nnoble notes) truly apathetic and unprofessional network management combine to create a plethora of intermittent or transient problems. Most service staff are ill-equipped (aka not trained) to handle these kinds of issues - so they spit out the usual crap response - reset your modem, check your connections, etc etc. For all you know - your neighbor wanted to add ADSL, so the telecom spliced a couple of your wires or did a crappy job with the punch down (a big box of wires with a punch block where all the wires terminate/originate)...did the job in the driving rain, so the punch block is soaked with water (which means you'll have to wait for the heat to dry out the punch block)...etc ad infinitum...but - most probably - you've been firewalled.
One other issue to remember - which I mentioned earlier - ADSL is shared bandwidth - there is a VERY high probability your neighbors recently installed ADSL and are sucking up major chunks of bandwidth with streaming video/audio. I see university staff watching streaming videos, listening to streaming audio ALL THE TIME. These are HUGE bandwidth hogs.
A simple PING sweep (use freeware sw to do this) will sweep all the IP addresses in your class C domain and tell you how many other people (network nodes) are sharing your domain. Basically this will PING or touch the computers of everyone in your neighborhood. If you see 100-200 people - you should expect really crappy service... PING is shorthand-ish for Packet Inter-Network Groper...
That about covers 10+ years of telecom network experience...now you're all experts...