java要多思考下

成长^_^

   ::  :: 新随笔 ::  ::  :: 管理 ::
  33 随笔 :: 0 文章 :: 19 评论 :: 0 Trackbacks
由于需要在外使用公司内部网络环境,故采用了FRP做了端口转发,以下是一些配置要点:

1、服务端配置
    服务器必须是公网服务器,可以在AWS或ALIYUN开通,得到公网IP。 
    服务器配置非常简单,只需要修改frps.ini文件,加入以下配置: 
[common]
bind_port = 7777          #服务器监听地址,配合公司内网机器使用
vhost_http_port=80      #服务器监听80端口
vhost_https_port=443   #服务器监听443端口,Https
 
2、客户端配置
    客户端配置复杂度随着业务的复杂度的增加而变大。
    客户端配置,修改frpc.ini文件,配置如下:
[common]
server_addr = xxx.xxx.xxx.xx           #公网服务器的外网IP地址
server_port = 7777                          #公网服务器的监听地址,同frps.ini中的bind_port配置

[ssh]                                               #暴露公司内网的ssh服务
type = tcp                                       #选择tcp类型
local_ip = 127.0.0.1                         #内网机器ip,  frp客户端程序所在的内网机器
local_port = 22                                #内网机器允许的ssh服务登录端口
remote_port = 7022                         #内网机器监听的外网ssh登录端口, 比如在家里访问公司内网服务器,只需要输入 ssh -p 7022 user@xxx.xxx.xxx.xxx即可 

[web]                                              #暴露公司内网的git代码托管服务
type = http                                      #选择http类型
local_port = 88                                #gitlab本地监听地址,默认是80,需要修改gitlab配置为88或其他端口,以避免与内网nginx端口占用的冲突
custom_domains = git.domain.com   #外网域名,该域名可以在dns解析到xxx.xxx.xxx.xxx的外网服务器ip上,这样在外就可以通过域名访问公司内部服务         

[web2]                                            #暴露更多的公司内网测试环境服务
type = http
local_port = 80                                #nginx本地监听地址,外网进来的服务通过nginx匹配各种domain来区分请求,转发
custom_domains = test.domain.com

[web3]
type = http
local_port = 80
custom_domains = test2.domain.com

[tcp1]                                             #暴露公司内网的socket服务
type = tcp                                       #选择tcp类型
local_port = 1111                            #本地socket监听端口
remote_port = 1111                        #外网服务器的接收端口

[tcp2]                                             #暴露更多内网socket服务
type = tcp
local_port = 2222
remote_port = 2222

[mysql]                                           #暴露内网mysql服务
type = tcp                                       #选择tcp类型
local_port = 3306                            #mysql监听端口
remote_port = 3306

3、启动服务
    ./start.sh  client启动脚本如下:(server端类似)
#!/bin/sh

PID=`ps aux|grep frp|grep -v 'grep'|awk '{print $2}'`
if [ "$PID" = "" ]; then
 echo 'start frpc now.'
 ./frpc -c ./frpc.ini > c.log &
 sleep 2
 tail -n 20 c.log
 echo 'start finished'
else
 echo $PID 'stop frpc'
 kill -9 $PID
 ./frpc -c ./frpc.ini > client.log &
 echo 'start it now'
 sleep 2
 tail -n 20 client.log
 echo 'start finished'
fi

4、其他问题
    1、如果使用了云服务,如aliyun,aws等,需要在安全组中开通以上端口(remote_port)的访问权限,否则外网到内网的链路无法通过。
    2、服务端运行后,客户端运行,随后可以通过外网域名直接访问内网服务



posted on 2018-11-13 15:06 java要多思考下 阅读(5568) 评论(0)  编辑  收藏 所属分类: 系统运维技术研究

只有注册用户登录后才能发表评论。


网站导航: