内网穿透,不是很好理解。先来看看外网的情况:内网,局域网,通过NAT,能够访问到互联网上的服务。内网穿透,和其相反:
内网穿透:通过互联网,反过来,访问内网的资源,访问外网的某个域名,能够代理到内网的某个资源。
这里可以使用一个很不错的工具,叫做frp
(点此处下载),可实现内网穿透,我使用过后,感觉它的思路是:
外网服务器一个tcp/udp服务运行,当我要准备穿透的时候,就本地启动一个tcp/udp的客户端,链接服务器的服务,两个之间就建立的通信,接下来的事情,通信既然已经建立了,那么,解析外网输入的网址的网站的内容,就是源源不断的,将外网想要访问的内容在内网得到之后,传输给外网展示
由此思路,可以知道,实现这个需要:
- 一台外网linux服务器A,假设ip:119.23.28.222,假设域名:test.com,linux版本的frp
- 本地是windows,假设局域网ip:192.168.1.1,windows版本的frp,本地127.0.0.1:80运行有web服务
在各个版本的frp中,都有client、server情景的,如图:
linux64版本的frp目录
window64版本的frp目录
其中,c结尾的,是client端配置和应用,s结尾的,是server端的配置和应用,但是命令都一样,需要哪个端就去配置就行了,上传linux的frp到linux某目录下并解压(假设我在当前目录操作),下载windows的frp并且解压(假设在当前目录下)下面有个最简单的示例:
#外网的配置,编辑frps.ini
[common]
# 服务器和客户端通信的接口
bind_port = 7000
# 向外暴露的端口,用户在服务器输入链接的端口
vhost_http_port = 6081
此时运行(先授权) ./frps -c frps.ini
#本地局域网配置,编辑frpc.ini
[common]
# 服务器ip
server_addr = 119.23.28.222
# 服务器和客户端通信的接口
server_port = 7000
[ssh]
# 通信类型
type = tcp
# 本地局域网ip
local_ip = 192.168.1.1
# 本地ssh的端口
local_port = 22
# server接受ssh的端口
remote_port = 6000
[web]
type = http
# 将server的请求映射到的端口
local_port = 80
# server的额域名
custom_domains = test.com
此时运行(先授权) ./frpc -c frpc.ini
如果链接成功的话,那么,只要访问
test.com:6081
,那么,本地的80端口的网站就会展示。
当然,这个是在web上的应用,在网络通信方面我相信也可以的,在研究补充喽。
网友评论