花生壳 || FRP实现玩客云、树莓派...内网穿透,外网访问

一:内外网穿透简介

内网穿透也叫做内网映射,也叫“NAT穿透”。就是让外网能访问你的内网;把自己的内网(主机)当成服务器,让外网能访问。下面是我用过的两种内网穿透。个人认为FRP更好用些

工具 特点
花生壳 赠送一个域名(但名称就稀奇古怪的),免费两个映射(http、UDP、TCP可选),每月有1G的免费流量。有图形化界面配置。
FRP 需要自己搭建服务端和客户端 。支持各种流量转发,客户端和服务端需要在配置文件中配置。同时可以在web端查看当前配置的详细信息。

二:花生壳内网穿透

思路:花生壳 || FRP实现玩客云、树莓派...内网穿透,外网访问_第1张图片

1、到官网注册用户,注册成功即可获取免费域名。

此处略。

2、安装客户端

根据自己的机器下载适合的客户端 https://hsk.oray.com/download,选择对应的版本,提供了下载命令,复制就好。
以centos7为例
花生壳 || FRP实现玩客云、树莓派...内网穿透,外网访问_第2张图片

#下载
wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
#授权
chmod u+x phddns_5.2.0_amd64.rpm
#安装
rpm -ivh phddns_5.2.0_amd64.rpm

花生壳 || FRP实现玩客云、树莓派...内网穿透,外网访问_第3张图片

安装好后会提示Phtunnel Service Install Success。记得保存好SN 和 password ,在关联的时候需要用到。

3、账号和客户端进行关联

登录花生壳官网,点击右上角'管理平台',点击'设备列表''添加设备',此处就用到了安装完成时的'SN'。
此时完成了账号和客户端的关联。建议下载APP使用,方便直观。

4、配置访问地址

点击'内网穿透',点击'新增映射',剩下的就是根据自己的需求进行配置了,每月有1G的免费流量可以用。映射类型可用的有TCP、UDP、HTTP(免费)
以上是免费的花生壳使用方法,我用这个方法对搭建在树莓派上的私有云盘进行内网映射,
优点是免费,简单易配置。缺点是,流量不够用,并且只能配置HTTP,HTTPS需要氪金。所以我转用了FRP。

三:FRP内网穿透

花生壳 || FRP实现玩客云、树莓派...内网穿透,外网访问_第4张图片

1、Github上下载服务器版本对应的包

#选择适合的版本包 ,下载后将包分别放到服务器和客户端。
https://github.com/fatedier/frp/releases/
#下载
https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.33.0_linux_amd64.tar.gz

2、服务端配置FRP

#解压后进入目录
tar -zxvf frp_0.33.0_linux_amd64.tar.gz -C /opt/
cd /opt/frp_0.33.0_linux_amd64/
#解压后的目录

花生壳 || FRP实现玩客云、树莓派...内网穿透,外网访问_第5张图片

#服务端
vi frps.ini
    [common]
    # frp监听的端口
    bind_port = 7000
    # 授权码,客户端配置文件中需要和这个一致 ,自己修改,配置复杂一点
    token = 123456  
    # frp管理后台端口
    dashboard_port = 7500
    # frp的web管理后台用户名和密码,自己修改
    dashboard_user = admin
    dashboard_pwd = admin
    enable_prometheus = true
    # frp日志配置
    log_file = /var/log/frps.log
    log_level = info
    log_max_days = 3

启动服务端

cd /opt/frp_0.33.0_linux_amd64/
#启动命令
nohup ./frps -c frps.ini &
#或者注册系统服务,不需要在进入目录启动。
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps

3、客户端配置FRP

#前面下载的包,传输一份到内网客户端(需要穿透的机器)
cd /opt/frp_0.33.0_linux_amd64/
vi frpc.ini  
    # 客户端配置
    [common]
	server_addr = frps_ip #根据实际修改
	server_port = 7000
    token = 123456 #与frps.ini的token一致
    [ssh]   #此处配置一个对ssh端口的穿透,同样道理可以配置 http服务
    type = tcp
    local_ip = 127.0.0.1 
    local_port = 22
    remote_port = 6000 

#客户端启动
nohup ./frpc -c frpc.ini &

注意:服务端防火墙中需要的开通的端口都放开!!!

下面附上客户端配置文件详解,根据需求自行配置

[common]
#服务器的IP地址
server_addr = frps_ip
#服务监听端口
server_port = 7000
#这个和服务端的token保持一致
token = 123456
# 客户端日志
log_file = ./frpc.log       # 指定日志文件;
log_level = info            # 指定日志等级;
log_max_days = 3
# 设置管理地址,用于通过http api控制frpc的动作,如重新加载;
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_passwd = admin
# 初始连接池的数量,默认为0;
#pool_count = 5              
# 是否启用tcp复用,默认为true;
tcp_mux = true         
# frpc的用户名,用于区别不用frpc的代理;
#user = your_name            
# 首次登录失败时退出程序,否则连续重新登录到frps;
login_fail_exit = true      
# 用于连接服务器的协议,支持tcp、kcp、websocket;
protocol = tcp             
# 为frp 客户端指定一个单独的DNS服务器;
#dns_server = 8.8.8.8        
# 要启用的代理的名字,默认为空表示所有代理;
# start = ssh,dns          
# 心跳检查
# heartbeat_interval = 30   # 失败重试次数
# heartbeat_timeout = 90    # 超时时间
#TCP的配置随便加
[ssh_home]
# 协议默认tcp,可选tcp,udp,http,https,stcp,xtcp;
type = tcp
# 本地地址
local_ip = 127.0.0.1
# 本地端口
local_port = 3389
# 在服务器端开启的远程端口;
remote_port = 8021
# 是否加密服务端和客户端的通信信息,默认为不加密;
use_encryption = false      
# 是否开启压缩,默认不开启;
use_compression = false     
# 负载均衡配置
#group = test_group          # 负载均衡组名,会将同一组内的客户端进行负载;
#group_key = 123456          # 负载均衡组密钥; 
[web2]
# 协议默认tcp,可选tcp,udp,http,https,stcp,xtcp;
type = tcp
# 本地地址
local_ip = 127.0.0.1
# 本地端口
local_port = 80
# 在服务器端开启的远程端口;
remote_port= 8811
# 是否加密服务端和客户端的通信信息,默认为不加密;
use_encryption = false      
# 是否开启压缩,默认不开启;
use_compression = false     
# 负载均衡配置
#group = test_group          # 负载均衡组名,会将同一组内的客户端进行负载;
#group_key = 123456          # 负载均衡组密钥; 
#https和http 的端口在服务器上面已经定好了的,所以这里不能指定
[web]
type = https
local_ip = 127.0.0.1
local_port = 88
# 是否加密服务端和客户端的通信信息,默认为不加密;
use_encryption = false      
# 是否开启压缩,默认不开启;
use_compression = true
# 访问web页面启用认证,用户名admin
http_user = admin          
# 密码   
http_pwd = admin          
# 子域名,需要服务端配置了subdomain_host参数;
#subdomain = web01 
# web的域名,和subdomain二选一
custom_domains = domains.online        
# 指定用于路由的URL前缀;
#locations = /,/pic
# 配置http包头域名重写;           
host_header_rewrite = example.com   
# 添加包头信息X-From-Where: frp;
header_X-From-Where = frp           
[web1]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = domain.online

4、配置启动脚本,测试地址

假设我的公网服务器地址是66.66.77.88 ,那么我可以通过 ssh 66.66.77.88 6000 访问到基于上面配置的那台内网机器。

你可能感兴趣的:(网络)