前言
学校最近通知要开学了,便把家里的N1盒子
(类似于树莓派的设备),通过路由器上的DMZ
主机设置放到公网上以便在学校访问。通过简单的脚本测试了一下本地 ISP
(某地联通)对个人用户屏蔽了哪些 TCP
端口。
测试方法
该方法来自https://www.v2ex.com/t/509732
设置本地路由器的防火墙默认的入站规则为 Reject
,即用 ICMP
消息拒绝对未开放端口的连接。
找一台远程的机器(跨 ISP
,防止出现两台机器在同一个防火墙区域的情况),使用 nc
依次连接 1-9999
端口,超时时间 1
秒左右。如果显示 Connection Refused
则表示这个端口是由本地路由器拒绝的,如果显示Connection timed out
,则表示被 ISP
屏蔽了。
ISP
屏蔽端口的方式是丢包
脚本代码
#!/bin/bash
CHECK_IP="0.0.0.0"
for port in {1..9999}; do
echo -n "TCP $port: "
result=$(nc "$CHECK_IP" "$port" -w 1 2>&1 < /dev/null)
if [ "$?" -eq 0 ]; then
echo "Open"
continue
fi
if [[ "$result" == *refused* ]]; then
echo "Closed"
fi
if [[ "$result" == *time* ]]; then
echo "$port" >> block_list.txt
echo "BLOCKED"
fi
done
在服务端新建文件scan_isp_blocklist.sh
,将以上代码复制到新建文件中,并修改0.0.0.0
为要测试的IP
。
请确保脚本文件有足够的权限,默认输出丢包的端口到block_list.txt
文件。
Linux执行脚本可能遇见的问题
执行 ./scan_isp_blocklist.sh
报错
[root@anyfan ~]# ./scan_isp_blocklist.sh
-bash: ./scan_isp_blocklist.sh: /bin/bash^M: bad interpreter: No such file or directory
执行 sh scan_isp_blocklist.sh
报错
[root@anyfan ~]# sh scan_isp_blocklist.sh
scan_isp_blocklist.sh: line 3: syntax error near unexpected token `$'do\r''
'can_isp_blocklist.sh: line 3: `for port in {1..9999}; do
解决方法:
sed -i -e 's/\r$//' scan_isp_blocklist.sh
./scan_isp_blocklist.sh
测试结果
25
80
135
136
137
138
139
443
445
593
901
1068
2745
3127
3128
3333
4444
5376
5495
5554
5800
5900
6129
6176
6667
8080
8998
9996
25
80
135
136
137
138
139
443
445
593
901
1068
2745
3127
3128
3333
4444
5554
5800
5900
6129
6176
6667
8080
8998
9996
25
80
135
136
137
138
139
443
445
593
901
1068
2745
3127
3128
3333
4444
5554
5800
5900
6129
6176
6667
8080
8998
9996
其他测试方法
一条命令解决
最常用的 100 个。
sudo nmap -sA -Pn -F 195.172.xx.xx
想要 1 到 10000 这样用
sudo nmap -sA -Pn 195.172.xx.xx -p1-10000
2 条评论
《貂蝉1958国语》爱情片高清在线免费观看:https://www.jgz518.com/xingkong/28974.html
《逃离“自由”电影院》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/3528.html