I am using a ZTE wi-fi router. My laptop's private IP is where Apache server is running on port 8080. I added the NAT rule to forward http traffic to my laptop.

Protocol - all
Starting port - 8080
End port - 8080
Local IP -

However when I browse [public_ip]:8080 shows nothing. when I browse [public_ip]:80 I can log into the router.

How to be sure that ISP is blocking or router is not forwarding?

I tried disabling dhcp, still the same result. I port scanned using nmap, fallowing is the result.

PORT STATE SERVICE 21/tcp open ftp 23/tcp open telnet 80/tcp open http

Port forwarding settings

  • Did you restart your router once you added the rule? Feb 23 '14 at 12:47
  • Yes, same result after restarting Feb 23 '14 at 12:48
  • Have you tried the same rule, but on port 80? Feb 23 '14 at 12:53
  • @MatthewWilliams As I stated in the issue description, public_ip:80 logs me to the router after asking the credentials even when I am having the rule. Feb 23 '14 at 13:34
  • Yes, but does the same result happen when you state a rule for port 80? Feb 23 '14 at 14:52

RFC 5128, section 2.10 reads:

Hairpinning is defined in [BEH-UDP] as follows:

If two hosts (called X1 and X2) are behind the same NAT and exchanging traffic, the NAT may allocate an address on the outside of the NAT for X2, called X2':x2'. If X1 sends traffic to X2':x2', it goes to the NAT, which must relay the traffic from X1 to X2. This is referred to as hairpinning.

Not all currently deployed NATs support hairpinning.

Your router simply doesn't support hairpinning. Try connecting to the server from outside the NAT.

  • I had the same problem and when accessing my local IP address from outside the NAT, the port forwarding works as expected.
    – madjoe
    Oct 18 '15 at 13:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.