1

I've been running a web server for more than a year now, and it has suddenly become unreachable by anyone outside my home network. Inside my network it is working as always. I can update the DNS and access it through the regular address, the DNS is pointing to the right IP. People outside my network can't even access it through the IP address.

It's a JEE application running on Tomcat 6 port 80 (Windows 7).

I don't know exactly when the problem begun because everything looks fine from inside my network.

Recent changes:

  • Installed WampServer (for unrelated Joomla! stuff).

What I have tried:

  • Rebooting;
  • Changing Tomcat port to 8080;
  • Disabling windows firewall;
  • Checking port forwarding rules on the router page;
  • Running it on another machine (Ubuntu) in the same network. In Ubuntu I used port 8080 and the problem was exactly the same;
  • Using a fresh copy of Tomcat 6;
  • Different browsers.

And now I ran out of ideas.

5 Answers 5

2

Off the top of my head, I would suspect that your ISP has started filtering out incoming traffic. Since this is on your home network you are probably violating the terms of use by running a web site.

Perhaps they have started using some NAT because they don't want to get additional IP addresses.

Since this is your home network why not just connection a computer running wireshark directly to the modem and have someone attempt an incoming connection. If you don't see the connection attempt then your ISP has changed something to block incoming traffic. You will have to work with them, or find an alternate ISP.

7

If you are on a home network, chances are this is a violation of your ISP's terms of service. Perhaps, after a year, they finally realized you were doing it and blocked the port?

1
  • this has happened to me in the past. :(
    – grufftech
    Jul 3, 2010 at 3:42
0

Lots of ISP's now have added blocking ports

  • 25 (standard SMTP / Email server port)
  • 80 (standard Web Server port)

(and various others ...)

the reason is that 99% of home (non-business) people don't need to have a mail server setup at home OR a web server ... while a number of evil trojan's/virus's actually end up using these ports to do their nefarious activities. Even more important .. is that in the olden days, some home computers actually had one or both services installed and activated by default .. so this became an easy point of intrusion for hackers, taking advantage or bugs in those services ... while their owner had no idea that those services were running on their own computers (which means it's not required .. yet still a security risk).

So you'll need to log into your ISP account via the ISP's main webpage and check to see if there is an option to unblock all/various ports. Generally, if an ISP is blocking ports, they give the user the option to unblock those ports .. but u generally need to opt in to unblock <-- their perspective is better safe than sorry.

0

You could do some more debugging. You have not mentioned your network topology -- is your Windows 7 machine, on which tomcat 6 is running, behind a NAT of some kind? You mentioned multiples machines (the Ubuntu box) so I would assume it is the case, unless you have some exotic scenario where every single machine has a routable, public IP address (I have seen some aDSL providers do this on multiple occasions here, for some reason).

The first thing I would check, should you have a NAT router, would be if the IP address of your local machine is static, and if there is a corresponding port forwarding entry for port 80/8080 (you mentioned trying both) sending all traffic to the corresponding port of your local machine.

Second, I would check netstat to ensure tomcat is indeed listening on the right local IP address and port on your local machine or 0.0.0.0 (inaddr_any), and not some secondary IP you might have, or localhost (127.0.0.1) only. Relevant options would be:

netstat -abn

Which, if everything is fine, would return output containing something like:

TCP    [::]:80                [::]:0                 LISTENING
[java.exe]

I have seen this scenario multiple times (albeit only on Linux, I hardly ever run J2EE stuff on my windows desktop) where tomcat would only bind its socket to the ipv6 address of the machine (ipv6 is usually enabled by default on Windows 7 and most modern Operating Systems), and not ipv4.

When configured to listen on inaddr_any, this resulted in much pain. In this case, simply add: -Djava.net.preferIPv4Stack=true to the JVM options in the tomcat config files. This could have appeared after a Java update, but is unlikely considering tomcat6 usually runs off a full JDK when properly configured. It is also unlikely since I believe the Linux scenario described above stems from a glibc "bug" (or rather obscure behavior) whose specifics escape me at the moment -- but it is still worth checking, just to make sure.

Should your ISP have indeed filtered port 80 and 8080, I would try some random high port like 6508, just to see if that works better. By all means do update your port forwarding configuration (if applicable) to reflect this.

Unless you provide more details about your setup, I doubt we will be able to assist you any further, sadly :(

0

One other step would be to try to telnet on that port to the server from a remote machine to see if it gets through or not.

For example, from outside your network, run

telnet (ip address) 80 

just to see if you can reach the web server at all. Then try the same command on other ports that are being forwarded. This might give you an idea if you're being blocked by your ISP or not.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .