首页 > 其他分享 >frp内网穿透

frp内网穿透

时间:2023-01-23 15:56:12浏览次数:48  
标签:xxx 端口 穿透 ssl frp proxy https 内网

frp内网穿透 一、背景说明    老板在11月底的时候,曾经问过我,外网访问公司内网的服务,用的是什么技术,然后问我frp用过没有,接着发了这篇文章我【https://sspai.com/post/52523】。我说ngrok、autossh都有,为了小强有没有用过,他说不够autossh稳定,我就反映过去了,不过老板强大的求知欲,貌似不太死心,所以后来差不多1周时间,我都在捣鼓这玩意。   相比ngrok、autossh,我觉得最大的好处是,frp能结合路由器配置,web界面简单明了,但客户端配置起来就麻烦多了。ngrok、autossh基本不需要动客户端,直接用即可。

   其中,7000端口是frp服务端口。

   另外,ngrok可以自定义域名,而frp得写死。譬如客户端运行时,能改成:ljy.ngrok.cn, xxx.ngrok.cn。frp就不行了,需要事先确认好。

 

  二、研究历程   总结下来,一波三折~~ 所以叫历程,不假,由于时间隔得有点长,加上记忆力不太好,可能下面内容有误导成分,请多多见谅。所以,写博客一定要趁热打铁!   1、天翼服务器不通github   首先,老板发的这篇文章,安装是有点问题的,因为一开始测试,是部署在天翼云的服务器上。天翼云服务器是不通github的,那我只能下载安装包到本地再上传,然后启动也是各种报错,最终虽然装好了,但访问有问题:那台天翼服务器80、443端口没有在天翼云备案,nginx配置完后用不了。   后来老板找了篇傻瓜式部署的文档【https://github.com/MvsCode/frps-onekey】,叫我开台按量付费的阿里云大陆服务器部署测试(后面大家会知道为什么我会强调大陆和香港)   部署完如下图所示:

  部署从来不是难点,难得是配置满足需求。

 

2、ssl证书申请、域名备案及https协议支持

  上面部署完之后,就能代理http和tcp的服务了。其中http服务测试我们选择了公司内网虚拟机的网站服务,tcp则是代理windows远程桌面,mysql数据库,都没有问题。

  然而https协议的服务要怎么配置支持?

  一开始我想到利用nginx去做,像ngrok一样,去Freessl 网站(https://freessl.cn/)申请https证书,然后代理到frp服务,前提要修改frp的监听端口,因为默认frp也是使用80、443端口,会跟nginx冲突。

  首先遇到一个ssl证书申请不下来的问题,DNS解析一直不过(阿里云大陆服务器,国外网站购买的域名)。最后老板只能买个阿里国际版的域名,证书就申请下来了。

 ssl证书是申请下来了,部署之后,出现网站访问不了的问题。阿里云大陆的服务器,没有备案过,即使能解析到阿里国际版购买的域名。

    最后只能选择购买阿里云香港服务器部署,解析到阿里国际版的域名,此时,ssl证书和域名备案问题都解决了。

  配置到nginx,代理到frp后,tcp协议配置的远程桌面用不了,而且https、http访问很慢。因为查不到具体原因,老板建议重装,也很快,几条命令部署frp。先贴下https配置的代码(虽然最后没有用这个方案)

 1 server {
 2     listen       80;
 3     server_name  *.frp.xxx.cn;
 4     return 301 https://$host$request_uri;
 5 }
 6 
 7 server {
 8     listen 443 ssl;
 9     server_name *.frp.xxx.cn;   
10 
11     ssl_certificate /etc/nginx/cert/cert.pem;
12     ssl_certificate_key /etc/nginx/cert/key.pem;
13     ssl_session_timeout 5m;
14     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
15     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
16     ssl_prefer_server_ciphers on;
17 
18     location / {
19         #转发到frp的http服务端口
20         proxy_pass http://127.0.0.1:10080;
21        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
22             proxy_set_header Host $http_host;
23             proxy_set_header X-NginX-Proxy true;
24             proxy_http_version 1.1;
25             proxy_set_header Upgrade $http_upgrade;
26             proxy_set_header Connection "upgrade";
27             proxy_max_temp_file_size 0;
28             proxy_redirect off;
29             proxy_read_timeout 240s;
30 
31     }
32 
33     # redirect server error pages to the static page /50x.html
34     #
35     error_page   500 502 503 504  /50x.html;
36     location = /50x.html {
37         root   /usr/share/nginx/html;
38     }
View Code

  反反复复还是找不到原因后,老板提议,试试使用frp客户端的方式去配置https协议的服务,需要配置一个frpc.ini 的客户端文件

 1 [common]
 2 server_addr = 【frp服务器ip】
 3 server_port = 【frp服务器的服务端口】
 4 token = xxx
 5 
 6 #log_file = ./frpc.log
 7 #log_level = info
 8 #log_max_days = 3
 9 
10 ## 代理tcp远程服务
11 [xxx-local]
12 type = tcp
13 local_ip = 【测试win虚拟机的ip】
14 local_port = 【测试win虚拟机的远程桌面端口】
15 remote_port = 【frp服务器未使用的一个端口】
16 custom_domains = xxx名字.域名xxx.top
17 
18
19 ##显示名字,代理我办公电脑的tomcat服务,https访问
20 [ljy-tomcat]    
21 type = https
22 local_ip = 【我办公电脑的ip】
23 local_port = 8080
24 remote_port = 【frp服务器未使用的一个端口】
25 custom_domains = ljy.域名xxx.top
26 
27 # HTTPS 证书相关的配置
28 plugin = https2http
29 plugin_local_addr = 【我办公电脑的ip】:8080
30 
31 plugin_crt_path = ./ce/cert.pem
32 plugin_key_path = ./ce/key.pem
33 plugin_host_header_rewrite = 【我办公电脑的ip】
34 plugin_header_X-From-Where = frp

下面是代理http服务配置:

[xxx名字]
type = http
local_ip = 192.168.0.xx
local_port = 80
remote_port = 【frp未使用的一个端口】
custom_domains = xxx名字.域名xxx.top

  其中,证书放到同级目录下即可

 

   前台启动是这样的: frpc.exe -c frpc.ini

    最后说下,这种frp客户端方式容易出现假死情况,留意上面红框,会定着不动,需要按回车。至于放到后台运行有没有这种情况,暂时没测过 

  因为已经不使用nginx代理的方式,所以结合路由器配置(文章最前面那个图),http穿透服务端口和https穿透服务端口保持frp默认的80、443即可。

 

      结合路由器配置https服务,其实协议类型选择http,客户端指定https协议即可   

 

标签:xxx,端口,穿透,ssl,frp,proxy,https,内网
From: https://www.cnblogs.com/windysai/p/17065107.html

相关文章

  • OpenStack显卡穿透
    OpenStack显卡穿透注意事项服务器主板CPU虚拟化打开如果只有一张显卡物理机不要安装显卡驱动1.确认是否支持iommucat/proc/cmdline|grepiommu针对Int......
  • 样式穿透
    应用场景Vue组件中写样式,通常如下方代码:<stylescoped>.comA.data{background:red;}</style>因为关键字scoped的原因,style标签内的样式只会对当前......
  • 搭建内网Docker镜像仓库
    需求在局域网内,在一台机器上搭建镜像仓库,其他节点能够通过内网镜像仓库pull、push等实操步骤仓库节点IP:192.168.83.141仓库节点上创建镜像存放目录:mkdir-p/data/reg......
  • iDRAC8内网访问webserver没有任何问题,但是通过公网访问或者二级代理请求访问出现400访
    服务器名:R730XDiDRAC版本:2.83.83.83问题原因的诞生iDRAC提供的webserver很好用,但是在iDRAC2.80.80.80版本后就不能通过外网IP或者二级代理访问了,只要你访问的地址不是......
  • 网络安全之frp内网穿透
    前言内网穿透,也即NAT穿透,进行NAT穿透是为了使具有某一个特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机环境需求一台公网服务器(linux操......
  • 内网Linux下安装Nginx1.23,添加stream模块实现tcp/udp代理转发
    环境:centos7.6ngx_stream_core_module这个模块在1.9.0版本后将被启用。但是并不会默认安装,需要在编译时通过指定--with-stream参数来激活这个模块,window下并不支持udp......
  • 根据经纬度计算距离半径内网点数量
    UntitledIn [9]:#thisarticleisoriginal,sometechnicaldetailsrefertohttps://yeahexp.com/how-to-quickly-calculate-the-distance-between-all-p......
  • 缓存穿透及解决方案
    缓存只是为了缓解数据库压力而添加的一层保护层,当从缓存中查询不到我们需要的数据就要去数据库中查询了。如果被黑客利用,频繁去访问缓存中没有的数据,那么缓存就失去了存在的......
  • 查看 内网所有ip
    首先看你的主机ip,ifconfigwlp2s0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500inet192.168.3.7netmask255.255.255.0broadcast192.168.3.255......
  • 【转载】单网卡、双网卡如何实现同时上内网和外网
    大家在日常办公生活中经常会遇到一个问题就是,办公室同时连接了内网和外网,如何能够同时上内网和外网呢?最近给一家单位调试网络,他们有自己的内部网络,同时还有外网。现在的要......