网络基础-端口连通测试与排查
本文围绕端口讲解网络流量流向中可能出现的各种问题,水平有限,仅当入门篇。
访问端:怎么确认目标设备对应端口已经开启
常规方法:
- tcpping 端口open状态
- telnet 端口可连接
- 其他tcp方案
- 本地端口没有被运营商or其他工具封锁,比如邮件的25端口
- 如果以上外部方案都发现并不能连接到目标端口,该那么怎么排查问题
从结果可以看出主机已经开启了80端口,且服务的程序是Nginx
被访问端:如何确认有请求访问
以下假设访问端和被访问端使用公网访问。
结果是连通的,可以清晰看到tcp3次握手的sequence code
端口已经关闭了,tcpdump依然可以看到类似上面的tcp握手请求
被访问端:怎么确认端口是可达的(未被封锁)
-
那么假设防火墙拦截对80端口的请求呢?我们使用iptables对INPUT的流量全部采取DROP处理
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
-
弄完之后我把iptables删掉啦,不然网站都开不动啦- -#
sudo iptables -D INPUT -p tcp --dport 80 -j DROP
排查其他因素
- 比如在
traceroute
过程某一跳中断了,可能是路由过程中被某个节点掐断了,参考#不可抗力因素 - timeout和closed可是不用的状态噢~
相关软件
tcpping
- 安装
wget http://www.vdberg.org/~richard/tcpping
sudo mv tcpping /usr/bin/
sudo chmod +x /usr/bin/tcpping
- 用的比较多的就是用来测试端口是否开启啦~
其他玩法自己研究下咯
tcpdump
sudo apt-get install tcpdump
traceroute
- 假设用来查看路由跳转情况咯,比如192.168.0.10的机器要访问192.168.2.1,若没有在网关配置路由表或192.168.2.1网关防火墙拒绝,则无法访问成功。
ip(Network Debugging)
iptables
- 端口限制(为了安全,只开放必要的外部端口)
- IP请求限制(配合fail2ban食用更佳)
- 请求频率限制(限制单个IP没秒请求次数)
- 带宽速度限制
- 局域网多个服务器共享一个出口带宽(比如购买了多台云服务器,但只有一台有公网出口,可以使用SNAT达到访问公网的目的,节省费用)
- 局域网堡垒机设置(比如购买了多台云服务器,但只有一台有公网出口,同时又想在外部直接一次SSH登录就进去目标服务器主机,可以使用DNAT及端口转发达到目的)
nping
比上面的tcpping更好用,语法如下:
sudo nping --tcp -p {port} {host}
其他抓包分析工具
- Charles
- Fiddler
- Proxifier
- Wireshark
- 原文作者:CsHeng
- 原文链接:https://sukikaka.cc/2017/10/30/%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80-%E7%AB%AF%E5%8F%A3%E8%BF%9E%E9%80%9A%E6%B5%8B%E8%AF%95%E4%B8%8E%E6%8E%92%E6%9F%A5/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。