当什么环境下使用呢
1.当通过不能通过公网IP连接的,被网络管理员限制的
2.各种远程软件被限制的(tv\anywhere)
3.电脑被限制安装程序的
4.各种内网主机,想通过公网访问的情况下.
注意: 不想带板砖头回家的 先随时随地办公的,仔细往下看<<<纯技术篇>>>
根据 NAT 设备不同大致可分为以下 4 大类:
- 全克隆(Full Cone):NAT 把所有来自相同内部 IP 地址和端口的请求映射到相同的外部 IP 地址和端口上,任何一个外部主机均可通过该映射反向发送 IP 包到该内部主机
- 限制性克隆(Restricted Cone):NAT 把所有来自相同内部 IP 地址和端口的请求映射到相同的外部 IP 地址和端口;但是,只有当内部主机先给 IP 地址为 X 的外部主机发送 IP 包时,该外部主机才能向该内部主机发送 IP 包
- 端口限制性克隆(Port Restricted Cone):端口限制性克隆与限制性克隆类似,只是多了端口号的限制,即只有内部主机先向 IP 地址为 X,端口号为 P 的外部主机发送1个 IP 包,该外部主机才能够把源端口号为 P 的 IP 包发送给该内部主机
- 对称式NAT(Symmetric NAT):这种类型的 NAT 与上述3种类型的不同,在于当同一内部主机使用相同的端口与不同地址的外部主机进行通信时, NAT 对该内部主机的映射会有所不同;对称式 NAT 不保证所有会话中的私有地址和公开 IP 之间绑定的一致性;相反,它为每个新的会话分配一个新的端口号;导致此种 NAT 根本没法穿透
环境准备
根据对各运营商的分析前大多数都在前三种规则之中,所以借助FRP轻松碾压掉.
1. Linux 云主机一台 \ vps也行
2. 内网主机随便不限制(Linux\Windows\树莓派等等)
3.工具下载地址:
架构拓扑
部署文档
### 工具下载:
cd /root
wget -c https://github.com/fatedier/frp/releases/download/v0.23.1/frp_0.23.1_linux_amd64.tar.gz
tar zxvf frp_0.23.1_linux_amd64.tar.gz
### 服务端配置
[common]
bind_port = 7000
token = f275c4f18e69c34f66d2631b
dashboard_port = 7500
dashboard_user = frp-test
dashboard_pwd = f275c4f18e69c34f66d2631b
vhost_http_port = 10080
vhost_https_port = 10443
subdomain_host = xxxx.cloud.com
如对已配置的 frps.ini 进行修改,vim /root/frp/frps.ini 编辑保存,
### 客户端下载:
客户端程序运行在想要被穿透的内网服务器上,用来与服务端沟通,一个客户端只可以与一个服务端连接
[common]
server_addr = 云服务器公网 IP
server_port = 30000
# 例如 ssh服务,FRP 工具是支持TCP和UDP \ HTTP 和 HTTPS \ 转发Unix域套接字及简单的文件访问服务
[ssh]
type = tcp # 据所需要的协议进行调整
local_ip = 127.0.0.1
local_port = 22
remote_port = 30106
use_encryption = true
use_compression = true
[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000
[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file #要对外暴露的文件目录
plugin_local_path = / tmp / file #访问url中会被删除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc