17

Is there a way to tell the difference between my ISP blocking traffic on certain ports and my NAT router/firewall blocking that traffic? The sites “Shields Up” and “Can you see me” show my ports closed or not accessible, but I assume that is primarily due to the NAT router. (Obviously, I could just remove the router, connect directly and use those sites, but is there a simple way to test without doing that?)

quack quixote
  • 43,504
Will M
  • 948

5 Answers5

13

This will take a lot of time but will get you the list of all blocked ports:

#!/bin/bash

COUNTER=1
while [  $COUNTER -lt 65535 ]; do
        echo $COUNTER
        curl portquiz.net:$COUNTER --connect-timeout 1
        let COUNTER=COUNTER+1
done
techraf
  • 4,952
ayushgp
  • 233
9

You can set your computer as the DMZ in the router configuration, which means that NAT essentially passes everything to you.

Joey
  • 41,098
5

Firebind.com is able to tell you whether any of the 65535 UDP or TCP ports are being blocked between your client machine and the Internet. They have a Java Applet client that sends packets back and forth from your machine to their server over the port(s) of your choosing, and if the packets transfer successfully, you know the port isn't blocked by any intervening firewall (such as your own home router or your ISPs firewall.)

So in your case you could first run tests from behind your router and get a list of all blocked ports. Then you could connect your machine directly to the Internet (bypassing the firewall) and run the tests again. By comparing the results you'd be able to figure out the difference between what your home router blocks and what your ISP blocks.

It's important to note that Firebind is NOT a port scanner. It's a "PATH" scanner.

http://www.firebind.com

3

You could set your router/firewall to do logging and see what it is blocking specifically.

JP Alioto
  • 6,550
0

On Windows, this PowerShell script will work:

for ($i=1; $i -le 65535; $i++) {
    Write-Output "Checking port $i"
    try {
        $tcpconnection = Test-NetConnection -ComputerName portquiz.net -Port $i -WarningAction SilentlyContinue
        if($tcpconnection.TcpTestSucceeded) {
            Write-Output "Port $i is open"
        }
        else {
            Write-Output "Port $i is closed"
        }
    }
    catch {
        Write-Output "Port $i is closed"
    }
}
anandvc
  • 1
  • 1