2016年底集团总部要上新的财务软件系统(金蝶),基于安全考虑要求财务服务器部署内网,但是西安电信,联通,移动不提供公网ip,只有一个虚拟ip,这样不能为集团内分子公司(北京、上海、长沙、海口)提供服务,也就是说其他地区的分子公司无法访问位于西安总部的财务服务器进行财务工作。
====================================================================================================================================
条件:公司有一台带宽5M的aliyum windows2008R2服务器、公司内网带宽2跟电信百兆adsl宽带、公司内部部署一台dellR730服务器(xeoxE5-2609*2+56G内存+600GSAS硬盘*4,做raid5,系统安装vsphere6.0,3vm)
测试:
花生壳,使用公司财务服务器1台vm上安装,测试外网无法访问。询问花生壳售后人员回答为虚拟ip无法穿透,免费收费均无法实现。
packetixvpn4.2,测试可以使用,性能较稳定,穿透后传输文件速度400kbs,公司上行带宽5mbps,aliyum,ecs2服务器5mbps带宽,但是试用期30天过后无法使用,购买商业版很贵,公司不愿意花钱。
openvpn,免费,测试可用,性能不稳定,有时100kbps,有时200kbps,不能满足10个用户登录财务系统的带宽。
frp,免费,测试可用,性能稳定,基本能够跑到3mbps,满足财务系统多用户登录公司内网服务器的带宽需求。
====================================================================================================================================
frp假设穿透的条件:1台有公网ip的服务器(windows、linux均可)并且带宽稳定,公司有一台需要穿透网络向外提供服务的服务器,并且公司内外网络稳定。
====================================================================================================================================
下面以windows版服务端和客户端介绍
1、下载软件
软件下载官方地址(windows、linux版)https://github.com/fatedier/frp/releases
解压后包含
frps.exe frpc.exe frps.ini frpc.ini
其中frps.ini配置文件内容如下
含义 :
bind_addr =x.x.x.x(ip) //拥有公网ip的服务器ip地址。
bind_port=X //拥有公网ip的服务器端口,用于监听客户端。
dashboard_port=x //frp管理web登陆端口
dashboard_user = x //frp管理web登陆账户
dashboard_pwd = x //frp管理web登陆密码
log_file = ./frps.log //frp日志
log_level = info //frp日志级别为信息
log_max_days = 3 //frp日志时间期限
privilege_mode = true //frp开启特权模式
privilege_token = 12345678 //frp特权模式token
privilege_allow_ports = x //frp特权模式端口
max_pool_count = 200 //frp连接池大小
authentication_timeout = 900 //frp超时
dashboard_pwd = x //frp管理web登陆密码
log_file = ./frps.log //frp日志
log_level = info //frp日志级别为信息
log_max_days = 3 //frp日志时间期限
privilege_mode = true //frp开启特权模式
privilege_token = 12345678 //frp特权模式token
privilege_allow_ports = x //frp特权模式端口
max_pool_count = 200 //frp连接池大小
authentication_timeout = 900 //frp超时
其中frpc.ini配置文件内容如下
含义 :
[common] //公共部分
server_addr =x.x.x.x(ip) //拥有公网ip的服务器ip地址。
server_port=X//拥有公网ip的服务器端口,用于监听客户端。
log_file = ./frps.log //frp日志
log_level = info //frp日志级别为信息
log_max_days = 3 //frp日志时间期限
auth_token = 123 //验证token 默认
log_level = info //frp日志级别为信息
log_max_days = 3 //frp日志时间期限
auth_token = 123 //验证token 默认
privilege_token = 12345678 //frp特权模式token,必须与frps.ini中保持一致
[weixin_ssh2]//穿透服务名称
privilege_mode = true //特权模式开启
type = tcp //tcp传输模式
local_ip = 192.168.15.11 //需要穿透,没有公网ip的服务器ip地址
local_port = 8282 //需要穿透,没有公网ip的服务器的端口(本地端口与远程端口不同代表端口转发)
use_encryption = true //数据加密传输,防止防火墙流量拦截
use_gzip = false //不进行gzip压缩传输
remote_port = 8989 //拥有公网ip的服务器端口
privilege_mode = true //特权模式开启
type = tcp //tcp传输模式
local_ip = 192.168.15.11 //需要穿透,没有公网ip的服务器ip地址
local_port = 8282 //需要穿透,没有公网ip的服务器的端口(本地端口与远程端口不同代表端口转发)
use_encryption = true //数据加密传输,防止防火墙流量拦截
use_gzip = false //不进行gzip压缩传输
remote_port = 8989 //拥有公网ip的服务器端口
公网服务器端运行
frps -c frps.ini
需要穿透的服务器端运行下图
实现穿透。
补充:使用特权模式可以将未来需要用到的端口加入白名单中,当有需要穿透的服务器时,只需要配置客户端的frpc.ini即可实现穿透,无需关闭服务端frps,对frps.ini重新进行配置。
====================================================================================================================================