内网穿透,即 NAT 穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信

搭建自己的 ngrok 服务

❓ 微信本地开发,需要占用一个重要的端口:80,或者 https 的 443 端口会遇到问题

CentOS7 搭建 ngrok 服务器
原 Ngrok 搭建服务器
10 分钟搭建属于自己的 ngork 服务器,实现内网穿透

frp

❓ 微信本地开发,需要占用一个重要的端口:80,或者 https 的 443 端口会遇到问题

github

使用 Nginx 和 SSH 实现内网端口映射

使用反向代理(Nginx)和隧道转发(SSH)实现内网端口映射

SSH 反向穿透访问内网主机

需要:
一台有公网 IP 的服务器
约定:
将位于多重 NAT 网络中需要访问的主机称为 Target,而将有固定 IP 的中转服务器称为 Server

SSH 反向穿透原理

SSH 反向穿透的原理是,Target 主动建立与 Server 间的 SSH 连接,利用 SSH 的端口转发功能,将访问 Server 某端口的数据包转发到 Target SSH 端口(22 端口)上,以此实现间接登陆 Target 的目的。

步骤

step1
假设Server上的转发端口为6766,使用如下命令在Target上建立与 Server 间的反向隧道:

ssh -p 22 -fN -R 6766:localhost:22 userServer@Server

step2
Server上打开 sshd 的GatewayPorts功能,这样才能实现只登录一次即可连接上 Target。修改/etc/ssh/sshd_config文件,添加下面这行:

GatewayPorts clientspecified

step3
重启 sshd 服务:

service ssh restart

step4
使用autossh,并且把它作为一个服务自动启动, 使 Target意外重启后能自动再次建立此反向隧道。先安装 autossh,之后在/etc/init.d下建立一个名为 autossh 的文件:

#! /bin/bash
/usr/bin/autossh -p 22 -M 6777 -fN -R *:6766:localhost:22 userServer@Server -i id_rsa

-M参数指定了一个监控端口,和端口转发无关,使用一个无用的端口即可;-i指定了一个密钥,此处用 RSA 密钥的方式登陆 Server。

保存此文件,并添加执行权限:chmod +x autossh;注册服务:update-rc.d autossh enable;最后启动服务:service autossh start

可使用sysv-rc-conf工具查看 autossh 服务的开机自启动情况。

参考资料

givencui 博客首发, 转载请注明来自GivenCui


本文由 givencui 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论