关于ssh连接底层(通信部分)探究,以及内网穿透相关实践

背景: 前端时间在某乎上看到一个话题,产生一点疑问,遂动手实践复现了一波,不得不说,csdn的环境真烂,要不是我基本的文章都在这里我就滚蛋了,等我抽时间把这些东西都迁移下,我就换平台!哈哈哈哈哈哈哈哈哈

链接如下

iptables 配置DNAT连接ssh ,为什么仍然提示端口拒绝? - Kingdo的回答 - 知乎

https://www.zhihu.com/question/496138274/answer/2206343604

链接简述:

通过外部机子链接内网的虚拟机,通过在虚拟机承载的实体机上做dnat设置将包路由到容器内,打通整个链路即可建立ssh链接。

文章需要基础知识如下(包括但不限于):

  • 路由(针对包转不同的机子,你可以理解为各个不同主机之间包的走向)
  • linux(这个实在是没啥好说的,只是我是在linux机子里做的实验所以可能会稍微涉及到一点点的命令,影响不大。)
  • iptables(可以理解为防火墙,可针对包拦截放行,或改源目的ip)
  • ssh(了解功能即可)
  • 网络/命令行抓包工具tcpdump详解-CSDN博客
  • 双网卡的路由逻辑(根据本地路由表走,如果没有匹配路由,走默认路由)

测试背景:

docker容器内的路由表如下

虚拟机路由表如下

虚拟机nat转发表如下

postrouting链为空

存在的问题:

环境如上,我从物理机192.168.133.1发起ssh请求,按照文章最开始引出文章的意思,这个时候这个链路应该是不通的,但是我目前按照如上的规则测试结果如下

容器抓22端口的包如下

ssh结果如下

可以看到是通了,但是按照文章引入的意思来说应该是通不了的。为什么呢?

原理与解答:

按照引入的文章意思转发的路径会变为

bash 复制代码
物理机:         192.168.133.1------------>192.168.133.128:11123
虚拟机(dnat):  192.168.133.1------------>172.17.0.2:20
容器:           192.168.133.1------------>172.17.0.2:20

然后按照原文章的意识是通不了的,但是为什么我这边会通呢,其实仔细看我容器机子的路由表以后就会发现我里面有两条路由,一个同网段的,还有一个默认路由,好,关键来了。

由于有一个默认路由的存在即使容器找不到133.1的目的主机,但是他会将这个包匹配路由表,然后走的默认路由(同网段路由指定是匹配不上),然后这个时候,由于包通过默认路由到达虚拟机以后,这个时候其实虚拟机是认识这个地址的,并且本地有dnat的转化记录,所以这个时候会将根据dnat将源地址修改在发往133.1。这个包由于在虚拟机上做了修改以后到达133.1的源地址是133.128所以这个时候其实阴差阳错的都对上,所以会导致ssh可以连接,然后容器其实连外网都ping不同的情况。

好了思路很清楚,这边将回报的路线梳理下,如下:

bash 复制代码
容器:           172.17.0.2:20          ------------>    192.168.133.1
虚拟机(dnat):  192.168.133.128:11123  ------------>    192.168.133.1
物理机:         192.168.133.128:11123  ------------>    192.168.133.1

猜想:盲猜开篇引出的文章里的实体机的虚拟机是没有设置默认路由的,如果设置了应该是可以走通的,或者是设置的网卡不对。

解决方式:1.设置默认路由,将逻辑链路走通

2.根据文章设置地址伪装。

总结:只要将路由走通,连接一般是能正常的。

相关推荐
大连好光景2 小时前
Linux系统中那些重要的文件路径
linux·运维·服务器
胡萝卜3.02 小时前
Makefile 实战指南:从零到一掌握自动化构建
运维·机器学习·自动化·c++开发·makfile·gmu make
FIT2CLOUD飞致云2 小时前
汇报丨1Panel开源面板2025年终总结
linux·运维·服务器·开源·github·1panel
小李独爱秋2 小时前
计算机网络经典问题透视:拒绝服务(DoS)与分布式拒绝服务(DDoS)攻击全景解析
运维·服务器·分布式·计算机网络·ddos
无敌糖果2 小时前
使用Nginx二级代理Jumpserver堡垒机
运维·nginx
真正的醒悟2 小时前
20251231-思维格局
运维
code tsunami2 小时前
DrissionPage 与 CapSolver:打造无痕、高效的自动化爬虫利器
运维·爬虫·自动化
怪力左手2 小时前
LSP、DAP语言服务器
运维·服务器·里氏替换原则
qq_5470261792 小时前
Linux 磁盘管理
linux·运维·服务器