内网穿透服务器 2018-11-04 记录 2 条评论 5055 次阅读 ## FRP实现内网穿透 之前使用花生壳进行内网穿透,通过三级域名来绑定服务地址,但一个月只有 1G 流量,带宽带大小为 1M,访问响应速度有待提高。为了解决没有外网地址的问题,使用云服务器当做中继服务器,来进行数据传输,实现反向代理,内网穿透。 ### 一、什么是内网穿透 在网络中ip是唯一定位一台设备的逻辑地址,如果我们要在互联网中找到一台设备或访问一个网站,最终都需要通过ip来进行定位。 ![img](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tdWZlbmctYmxvZy5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vd29ya2VyLzIwMjAwNTI5MDg0NzQ5LmpwZw?x-oss-process=image/format,png) ### 二、NAT NAT(Network Address Translation)即网络地址转换,NAT能将其本地地址转换成全球IP地址。 内网的一些主机本来已经分配到了本地IP地址(如局域网DHCP分配的IP),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。 通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。 NAT不仅能解决了lP地址不足与共享上网的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 ### 三、proxy Proxy即网络代理,被广泛应用于计算机领域,主要分为正向代理与反向代理: #### 1.正向代理 最常用的实现就是科学上网,国内不能访问国外的google,只能通过国外的服务器进行代理访问,这就是典型的正向代理。 ![proxy.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tdWZlbmctYmxvZy5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vdXNyL3VwbG9hZHMvMjAxOS8wMy8zMzU4MjcwMjM3LnBuZw?x-oss-process=image/format,png) #### 2.反向代理 简单的来说,客户端发送的请求通过代理服务器转发给指定服务器,我们只需要知道代理服务器而不需要关心代理服务器最后会发请求发给谁。 ![proxy2.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tdWZlbmctYmxvZy5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vdXNyL3VwbG9hZHMvMjAxOS8wMy83MDU2MTA1OTAucG5n?x-oss-process=image/format,png) ###四、frp搭建 frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。[frp开发文档](https://github.com/fatedier/frp/blob/master/README_zh.md#%E9%80%9A%E8%BF%87-ssh-%E8%AE%BF%E9%97%AE%E5%85%AC%E5%8F%B8%E5%86%85%E7%BD%91%E6%9C%BA%E5%99%A8%E3%80%82) 具体的介绍可以看文档,这里就不多说了。下载地址在这里:[frp下载](https://github.com/fatedier/frp/releases),如果觉得github上下载慢可以到[这里](https://file.kskxs.com/?dir=frp "这里")下载 我们先简单的实现ssh外网连接功能。 1. 下载压缩包,因为树莓派是armv7l,所以下载32位软件,服务器使用的是amd64。 ![frp.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tdWZlbmctYmxvZy5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vdXNyL3VwbG9hZHMvMjAxOS8wMy8zOTYxMDcwMzk0LnBuZw?x-oss-process=image/format,png) 把`frp_0.21.0_linux_amd64.tar.gz`上传到服务器并解压到目录/usr/local/frp中。直接启动frps,在此不进行配置。 ``` tar -zxvf frp_0.9.3_linux_amd64.tar.gz -C /usr/local/frp # 解压 ./frps -c ./frps.ini # 启动程序 ``` 同样的在树莓派中也上传解压到/usr/local/frp中,这里就需要对 frp client 进行配置。打开目录下的frpc.ini ``` # frpc.ini [common] server_addr = x.x.x.x # vps的ip server_port = 7000 [ssh]type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 // 默认不修改 ``` > remote_port = 6000 表示通过远程frp服务器6000端口来访问客户端frpc 使用前需要对云服务器和树莓派端口的开启,debain系统和ubuntu系统,都使用ufw工具开放端口,centos 可以使用 firewall 来进行端口管理 ``` ufw status # 查看端口开放情况 ufw allow 6000 # 开放指定端口 ufw allow 7000 # 开放指定端口 ufw reload # 加载规则 ``` 使用站长端口检查工具可以查看云服务器的端口是否开放,如果没开,使用 ``` sudo netstat -ntlp # 查看软件占用端口是否开着 ``` 之后启动树莓派frpc客户端 ``` ./frpc -c ./frpc.ini ``` 你可以在云服务器上看到多出了一个监听端口6000,如果没有,那么就是配置出现问题或端口没有开放 > 注:frp服务器可以配置仪表盘管理,在云服务器下的frps.ini下添加 ``` # 仪表盘端口,只有设置了才能使用仪表盘(即后台) dashboard_port = 7500 # 仪表盘访问的用户名密码,如果不设置,则默认都是 admin dashboard_user = admin dashboard_pwd = admin ``` 浏览器直接ip:7500 就能打开仪表盘(记得开放端口) ![frp2.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tdWZlbmctYmxvZy5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vdXNyL3VwbG9hZHMvMjAxOS8wMy8zMDM0MDIwMjUyLnBuZw?x-oss-process=image/format,png) 基本上配置就是这些,~~如果想反向代理二级域名就得在frps.ini中添加subdomain_host配置。~~在多人同时使用一个 frps 时,通过自定义二级域名的方式来使用会更加方便。在服务器上配置`subdomain_host`,之后在客户端只需要配置域名前缀就行,例如test,访问客户端的地址为test.{subdomain_host} ![frp-config.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tdWZlbmctYmxvZy5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vdXNyL3VwbG9hZHMvMjAxOS8wMy8zMzY2NzM2MTk3LnBuZw?x-oss-process=image/format,png) 在树莓派中添加subdomain ![frp-config2.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tdWZlbmctYmxvZy5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vdXNyL3VwbG9hZHMvMjAxOS8wMy8xMjU3NzQ3Nzc5LnBuZw?x-oss-process=image/format,png) 然后重启服务,在浏览器中访问test.mufeng.info就是远程客户端(树莓派)的地址,当然,这个域名得进行解析。 ![parse域名.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tdWZlbmctYmxvZy5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vdXNyL3VwbG9hZHMvMjAxOS8wMy8yMTQwODI0MzE4LnBuZw?x-oss-process=image/format,png) --- ### 2019年9月28日 http中的frpc.ini配置 ``` [common] server_addr = 服务器ip server_port = 7000 # [ssh] # type = tcp # local_ip = 127.0.0.1 # local_port = 22 # remote_port = 6000 [web] type = http local_port = 8080 subdomain = ng # locations = test ``` 服务端的配置 ``` [common] bind_port = 7000 dashboard_port = 7500 # 仪表盘访问的用户名密码,如果不设置,则默认都是 admin dashboard_user = admin dashboard_pwd = admin vhost_http_port = 8080 ``` 如果需要设置http的代理,可以现在frps.ini中添加配置项 ``` vhost_http_port = 8080 ``` 否则启动frpc的时候会报以下错误 ``` [web] start error: type [http] not support when vhost_http_port is not set ``` 便于管理,我也把他放到docker上,我开始慢慢的喜欢上docker了,真的是方便,启动一些程序直接使用docker,不再使用nohup或写脚本,[下载地址](https://hub.docker.com/r/cloverzrg/frps-docker "下载地址") ``` docker pull cloverzrg/frps-docker # 拉取容器 mkdir conf cp /usr/local/frp/frps.ini /root/docker/frp/conf # 把之前写好的server配置拷贝到统一的地方,便于管理 docker run -d --name frp-server -p 7000:7000 -p 7500:7500 -p 8080:8080 -v $PWD/conf:/conf --restart=always cloverzrg/frps-docker # 做好端口映射 docker ps # 查看启动情况,如果status 是up 说明启动成功 ``` 之后需要修改frp服务器的参数可以直接在conf目录下的 `frps.ini` 文件下修改 打赏: 微信, 支付宝 标签: 树莓派, 内网穿透, nextcloud, 代理服务器 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
dns域名怎么配置的? 解析记录需要指定ip:port吗
你购买的域名商会提供 dns 解析的服务