摘要:主要记录关于端口的知识,以及防火墙对于端口的处理,隧道反向代理等
未解决的问题:
1、80改81端口网页外网无法访问;
2、443端口无法下载Wordpress主题;
3、手机通过ssh连接家里的树莓派,占用了22端口,就无法同时通过openvpn连接家里的路由器,为啥?
4、QNAP NAS使用哪个端口进行远程访问?
零、端口测试
为避免普通用户建立个人网站,按ZF要求,宽带运营商把家庭宽带的80(http)以及8080端口封杀了。通过了解端口的基本知识,可以通过443端口(https)建立更安全的个人网站。
后来运营商(ISP)又把443端口封杀了。也就是https的个人网站就黄了。解决之道的通过VPS的反代服务,把个人网站发布出去。
封杀了80、443端口,为何不影响用户浏览网站呢?应该是ISP只封杀了这些端口的IN,而没有封杀这些端口的OUT(似乎表达错误了,以后再修改),是单向封杀。这种封杀会影响哪些用户体验呢?似乎会影响联机游戏,具体细节今后补充。
今后还会逐步取消公网IP地址,将家庭宽带改为局域网地址。这就需要学习反向代理知识。
今后还会普及ipv6网络,通过阉割ip secs(似乎拼写错误了),每台上网设备给固定的ipv6 网络地址,可以精确监控网络行为,所以ipv6的突破GFW的优势就没有了(感谢某些院士的8辈祖宗!)。
如何测试家庭宽带的哪些端口被封杀呢,可以用telnet、nmap命令以及某些网站提供的服务进行测试。
1、用telnet测试端口
ssh admin@192.168.1.1#测试路由器的22端口,连接没有任何问题,不指定用户名,缺省的登录用户是root吗?
telent 192.168.1.1 #测试路由器的23端口,连接没有任何问题,这和ssh通过22端口连接路由器有什么差异呢?
telnet 192.168.1.1 443 #测试路由器的443端口,返回“Connection Refused”,为啥从内网访问路由器的443端口也会被拒绝呢?
telnet www.zhangqihui.me 443 #通过外网测试路由器443端口,返回“Connection timed out”
2、推荐:通过网络工具测试家庭端口是否关闭:
open port check tool #我通过笔记本的python发布在8000端口的网页,在路由器中设置了端口映射,外网能够访问(手机端,用chrome浏览器或者通过 termux的lynx命令),但这个网页的测试却告诉我8000端口是“closed”,显然网站测试工具是不正确的。
3、 通过nmap等工具测试端口
nmap www.greydesign.tk
输出(open (开放的), filtered (被过滤的), closed (关闭的),或者 unfiltered (未被过滤的)):
80/tcp filtered http135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
1434/tcp filtered ms-sql-m
4444/tcp filtered krb524
5800/tcp filtered vnc-http
8080/tcp filtered http-proxy
nmap zhangqihui.cc #新开的vultr centos vps,用手机Termux终端,为啥所有端口都是open?估计是因为手机开了ss,ss设置为termux走ss,并且termux查看公网ip,与vps一致,测试自己当然所有端口是open了。
4、通过nc测试端口
nc -zv zhangqihui.cc 1107 22
实践:查找外网无法访问树莓派wordpress的问题
2017年11月,公司电脑无法访问树莓派网站(https://www.zhangqihui.me),开始手机可以,后来也不行了,但内网访问都没有问题。
1、用手机的 Termux 安装 nmap测试家庭路由器与树莓派:
pkg install nmap
nmap www.zhangqihui.me #外网测试,返回:
Note: Hosts seems down.If it is really up,but blocking our ping probes,try -Pn”
nmap -Pn www.zhangqihui.me #外网测试,返回:
Not shown:982 closed ports
22、631、80822、8083、8443是open
80、443等13个端口是filtered
nmap www.zhangqihui.me #内网测试,返回:
Not shown:992 closed ports
22/tcp open ssh
80/tcp open http
443/tcp open https
631/tcp open ipp
8080/tcp open http-proxy
8082/tcp open blackice-alerts
8083/tcp open us-srv
8443/tcp open https-alt
没有提示filtered端口
2、是不是端口冲突?
修改梅林固件R7000路由器,修改系统设置中的“web interface”,把8443改为443,提示与aicloud端口冲突,原来aicloud设置中的端口为:
AiCloud 网络访问端口:443 #占用了,但aicloud根本就是关闭的
AiCloud 内容串流端口:8082
把443改为8085,失败,改为7443,成功。但是外网依然无法访问树莓派!
更改树莓派外网访问方式:
关闭DMZ,在路由器中映射“端口转发”树莓派443到443,问题依旧!
端口转发改到8000,外网依然无法访问,内网访问“https://zhangqihui.me:8000”,没有问题,但8000会自己消失,而且编辑文章无法正常显示,只好在路由器端口转发把8000改回443
Nmap参考指南(Man Page)
Nmap端口扫描
nmap端口扫描器常用的扫描方式举例
Linux查看机器开放的端口 注:也有netstat的用法
一、在公司通过Windows下的putty访问家中树莓派的问题:
一直提示inactive
,估计是因为局域网屏蔽了ssh端口22的使用。可以试试这篇文章提到的ssh端口转发解决吗?
PuTTY设置SSH端口代理转发
[putty]设置SSH Tunnel,将本地端口映射到服务器地址端口实现通过本地端口访问服务器服务
#SSH实战# 小体积Putty的逆袭:Tunnels功能
使用动态端口转发设置到主节点的 SSH 隧道
利用Putty建立SSH通道实现代理
第一次在树莓派上搭建Wordpress博客,解决端口问题,实现外网访问:
2017年春节放假在家闲暇无事,把尘封许久的树莓派找出来,动手建立了一个属于自己的本地Web服务器。跑跑Wordpress,写一些除了自己,别人都不爱看的文章,蛮惬意的。
在家里测试主页一切,用本地IP,用域名访问都正常,可到孩子姥姥家拜年,却无法访问自己的主页!通过上网查询,才知道大约2014年以后,宽带运营商封锁了80端口,就是我们浏览网页时开http://
遵循的网络协议。想开通80端口,首先要有固定IP,还需要去备案,估计个人是没有指望了。我的路由器远程控制端口是8080,也被联通宽带封锁了。因为用缺省的8080无法远程访问,改用其他端口就可以。
为啥本地用域名访问一切正常,以及如何测试自家宽带的哪些端口被封,可以参考这篇文章:
判断端口通不通的几种方法
不让学习建立网站的知识,有啥应对措施?
1、放弃http用的80端口,改用其他端口。
在Apache的缺省80端口外,增加其他端口号如81解决。
sudo vi /etc/apache2/ports.conf #在Listen80 下增加一行Listen 81
sudo vi /etc/apache2/sites-enabled/000-default.conf #修改需要对外发布的web主页 <VirtualHost *:80>为<VirtualHost *:81>
sudo service apache2 restart #重启apache
静态网页测试没有问题,外网访问正常,可wordpress的php网页无法访问,还需要将wordpress的缺省端口号80改为81,在仪表盘-设置
里,有一个参考网页:修改wordpress的端口号,不过外网依然不同,不知为啥,wordpress如何重启?还有,域名后跟着端口小尾巴,实在让人不舒服。
2、改用https 443端口:
简单说,就是放弃http
,改用https
访问主页。好处是在网吧等公共场所,通过加密通道访问自己的主页,可以保护个人信息不被偷窥,所以这是需要重点学习的方向。
这篇指南写的非常棒,让apache与wordpress使用443端口: Apache + WordPress + SSL 完全指南
我首先试用了自签名文件,CN填入的是www.greydesign.tk
,cert.pem
文件放在/var/www/my-ssl
目录下,第一次从外网看到自己的wordpress主页了,但网页显示不正常,原来我忘了把Wordpress中的81端口去掉,去掉就正常了。由于网页非常简单,没有配置Wordpress,效果已经非常棒了,不过我还是把Wordpress的仪表盘-设置-常规
中的网址改成了https
下一步还要研究如何在客户端导入证书小范围使用,以及如何申请证书,大范围使用。
3、改用OpenVpn 1149端口:
1149端口,属于VPN类的,可以参考这篇文章: Securi-Pi:使用树莓派作为安全跳板 树莓派搭建Openvpn(一)
配置我的树莓派,根据第一篇,配置到easy-rsa,根据第二篇做到配置客户端。有几点注意事项:
1)找不到nlookup命令,自己安装即可:sudo apt-get install dnsutils
2)这行命令好奇怪,root@test:/etc/openvpn/easy-rsa# cp vars vars.bak
其实是切换到root:su - root
还有一篇文章值得借鉴:为树莓派Raspberry Pi的Apache配置SSL搭建HTTPS服务器
3、通过DNS端口转发:
就是结合第一种换端口的方法,租用VPS服务器或DNS服务器,把80端口访问,转换为自己定义的端口访问,可以在客户端甩掉端口小尾巴。花生壳就是这种服务。还有ngrok也可以,注册后操作了一下不好用,如网上所说,ngrok被墙了。
[使用ngrok配置微信公众号本地开发环境(ADSL屏蔽80端口问题)](http://me.iblogc.com/2015/02/04/%E4%BD%BF%E7%94%A8ngrok%E9%85%8D%E7%BD%AE%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%EF%BC%88ADSL%E5%B1%8F%E8%94%BD80%E7%AB%AF%E5%8F%A3%E9%97%AE%E9%A2%98%EF%BC%89/)
二、公司局域网穿透
现状
以前公司的局域网,个人电脑分配固定ip,是通过代理上网的。
自从搬了新园区,个人电脑依旧是固定ip,但浏览器中不需要设置代理就可以上网了,好奇怪啊?与以前的差别是必须安装 Cisco AnyConnect Secure Mobility Clinet:
Address (IPv4) 10.18.14.217
Subnet Mask (IPv4) 255.255.255.0
Default Gateway (IPv4) 10.18.14.1
查询路由:
tracert www.greydesign.tk
发现首先经过网关10.18.14.1
,又经过了172.21.1.3
,估计后者就是公司上网的代理服务器了?
公司局域网路由解析
遗留问题
如何查看服务器安装了什么操作系统呢?
Cisco AnyConnect Secure Mobility Clinet本身支持VPN,能配置成自己的吗?
实践一、在公司通过pptp vpn连接家里的路由器,实现上网代理
1、路由器端:
1、小宝梅林路由器管理界面,菜单“VPN-PPTP Server”,改为ON状态
2、“详细设置”为“一般设置”
3、“支持网上邻居共享(Samba)”为“是”
4、添加用户“test1”,密码为“test1”
5、“应用本页面设置”
2、公司电脑端:
新建连接(待补充实际操作)
注:最近OpenVPN查的严,据说不好用了,如何测试是否好用?
三、外网如何实现访问树莓派
自从2017年春节搭建树莓派半年多来,都是通过DMZ实现外网访问的。每次路由器的公网IP地址变更,就需要重新将ip地址绑定得到tk域名上,很不方便。下一步的目标是拓展树莓派的访问方法,比如通过在VPS上通过ssh端口转发实现访问。
外网访问树莓派 | 如何让树莓派可以被外网访问? | 玩转树莓派04——远程访问| 外网访问内网-SSH反向隧道 | ssh反向隧道实验——没有端口映射的前提下,让外网访问内网服务器 | SSH正向反向连接的强大功能以及autoSSH | 内网穿透系列——SSH反向隧道 (最简单的内网穿透方案)
一、SSH反向隧道
实践一、ssh映射树莓派443端口到vps的8888端口
1、VPS端(假设ip地址为45.63.21.165)
1. 打开 /etc/ssh/sshd_config,将GatewayPorts参数设为yes
2. service sshd restart,重启ssh服务
问题:VPS上的8888端口打开了吗?
2、树莓派端(假设ip地址为192.168.1.232)
su
ssh -f -NT -R *:8888:192.168.1.232:443 root@45.63.21.165
问题:
1、ssh反向代理命令用法2、如何取消这个反向代理
3、浏览器:無法連上這個網站!为啥?
45.63.21.165:8888
实践二、在公司内网假设服务器,实现外网访问
注:windows下可以通过putty实现ssh操作,也可以通过安装git实现ssh操作,
四、在VPS上搭建Ngrok服务
五、wordpress实现http与https访问共存
0、目的是因为被isp屏蔽了443端口,想通过8000代替80端口,实现外网访问个人wordpress网站
1、WordPress从2017年开始要求用户使用HTTPS
2、在nginx将ssl写在 listen 443 后面,注释掉“ssl on”,可以通过http访问首页,但由于在wordpress仪表盘中设置了网址为https,所以登录或看其他网页都是https访问了。
3、结论:放弃吧!