穿透的意思就是把本地的电脑或者是网络暴露到公众网络中。
场景可以有:
-
通过 ssh 访问公司内网机器
-
通过自定义域名访问部署于内网的 web 服务(例如开始的页面验收,直接配置到服务器上麻烦且不利于更改,可以先本地开启一个django服务,通过服务器ip地址访问我们本地的django服务,这样也方便验收和修改)
-
或者是服务器的性能不够好,就可以用内网穿透用上本地的电脑。(如机器学习跑算法,需要高配置的机器,
Python
可以使用jupyter notebook
+frp
进行远程编程,但是jupyter需要配置允许远程访问和密码)
我在寻找的过程中,找到了三个
这三个,我尝试过第一个且成功了。
用法文档里面写得很清楚了。
frp
-
解压下回来的文件,把
frpc
和frpc.ini
文件留在本地电脑,frps
和frps.ini
放在服务器上面,下载的时候注意window版本和linux,还有注意版本问题 -
编辑服务器的
frps.ini
(dashboard_port为frp后台端口)[common]
bind_port = 7000
vhost_http_port = 8080dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
bind_port 为frpc与frps绑定的端口,最好不要与其他的服务冲突。
vhost_http_port 为我们在浏览器上访问的端口。
其他的官方文档写的很清楚了。
-
编辑
frpc.ini
文件[common]
server_addr = x.x.x.x
server_port = 7000[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000[web]
type = http
local_port = 8090
custom_domains = x.x.x.x
server_addr
为服务器的ip地址
local_port 为我们本地开启服务的端口,如django的python manage.py runserver 0.0.0.0:8090
如果要让外网访问本地的web服务就应该在0.0.0.0上运行,在127.0.0.1上是不行的
window本机和linux服务器可以通讯,版本一定要相近或者是相同
有了这两个配置文件,我就可以开启服务了。
先运行server端(linux
),
nohup ./frps -c ./frps.ini &
再运行client
端
nohup ./frpc -c ./frpc.ini &
加上nohup
和&
就可以进行后台运行了。输出结果会在nohup.out
文件里面
可以通过ps -aux | grep frp
进行查找frp
运行的进程号
然后用kill -9
来杀死进程。
window
下
使用.\frpc.exe -c .\frpc.ini
2019.5.17更新.
同学利用android使用即时通讯,使用到openfire
,用spark
进行验证服务通讯的时候.,再进一步使用frp进行内网穿透.
其中spark
使用的是tcp
通讯,在配置frp
的时候,不能够用type=http
进行内网穿透,虽然说http
用的是tcp
协议通讯.
但是进行验证的时候是不成功的.得改成type=tcp
配置文件如下:
frps.ini
[common]
bind_port = 7000
frpc.ini
[web]
type = tcp
local_port = xxx #本地绑定的服务的端口
remote_port = xxx # 用于程序进行通讯的端口号
一般来说local_port
和remote_port
设置成相同,这样会比较好记,也不会容易乱.