犹记当年想搭建个人博客,想用内网穿透简单搭个本地服务器,结果大家都知道的,花生壳那些所谓的内网穿透真心搞笑,废话我也懒得说了。(当然有的还是很良心的,比如我记得有个叫做 Sakura frp 的,的确免费能用,当然免费的嘛速度就很捉急了)
现在疫情期间宅在家里无事可做,打算把以前的树莓派什么的折腾一下,然后又有一台闲置的硅谷 Ubuntu 服务器,就试了试搭建自己的内网穿透服务。
下面讲正题
使用文档
请大致阅读,将有助于理解下文每条配置的含义
服务端
感谢 MvsCode 提供的一键安装脚本
安装过程中有几个值得注意的地方:
- Bind port:走流量的端口
- vhost http port:http web 网站走的端口(我用的默认 80)
- vhost https port:https web 网站走的端口(我用的默认 443)
- Dashboard port:安装后会有一个概览后台网页,这是它的访问端口
- token:相当于是密码,只有客户端和服务端用同样的 token 才能获得代理权限
其它的看不懂什么意思就直接留空回车用默认的配置即可
安装完成后脚本将显示你的各项配置,建议复制至本地保存备忘
此时你可以用frps {start|stop|restart|status|config|version}
来控制 frps
客户端
请去 Github - releases 中下载 frp
下载至本地后修改 frpc.ini
示例 1:自定义域名并访问内网 http web 服务
将 frpc.ini 修改为如下所示:
[common]
server_addr = 服务端 ip
server_port = 服务端 Bind port
token = 服务端 token
[web]
type = http
local_port = 本地 web 端口(通常是 80)
custom_domains = 自定义的域名(需添加 A 记录至服务端 ip)
保存后运行frpc -c frpc.ini
,显示 success 后可通过服务端 ip:vhost http port
(若 vhost http port 为 80 则可不加端口号)访问本地 web 服务
示例 2:转发 tcp 流量
[common]
server_addr = 服务端 ip
server_port = 服务端 Bind port
token = 服务端 token
[tcpproxy]
type = tcp
local_ip = 127.0.0.1
local_port = 本地 tcp 端口
remote_port = 远程访问端口
保存后运行frpc -c frpc.ini
,显示 success 后可通过服务端 ip:远程访问端口
访问本地 tcp 服务
值得注意的是,中括号中的web
和tcpproxy
经过实验验证应该是可以随便怎么写的。
附
Ubuntu 客户端启用 frpc 服务,开机将自启动
首先tar -xzf
解压压缩包
进入压缩包后执行以下代码:
chmod +x ./frpc
cp ./frpc /usr/bin/
mkdir /etc/frp
cp ./frpc.ini /etc/frp
cp ./systemd/frpc.service /lib/systemd/system
systemctl enable frpc.service
service frpc start
附 2
我发现 frp 客户端的服务配置文件虽然有这么一行:
After=network.target
但是实际上服务并不会在网络真正连接后才启动,这会导致一些问题,比如连不上。
因此我们需要把这一行改成:
After=network-online.target
UJSACCN · 2020-04-09 00:40
用frp访问内网http的话,只能走http,不能走https,http就是在互联网上裸奔。应该可以用nginx反代frps的端口,然后开启TLS,这样可以实现frps到用户端的https,不过前半段就没办法了。
还有,中括号里的内容,会显示在frps的面板里,方便识别。
冷曜 · 2020-03-20 08:45
很棒的样子,有时间试试。有一说一,oray已经日暮西山,但是之前我用过它的忘记几块钱了的NAT,卡归卡,还不错哦