内网穿透,即 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
楼主残忍的关闭了评论