frp内网穿透代理访问http服务
需要一台具有公网ip的服务器,windows、linux都可以,本次以Linux为例,系统版本:centos 7.6,frp版本:0.46
下载地址:
https://github.com/fatedier/frp/tags
1、服务端配置
frp解压后的路径和配置文件如下
[root@server frp]# pwd
/data/frp
[root@server frp]# ls
frpc frpc_full.ini frpc.ini frp.log frps frps_full.ini frps.ini
[root@server frp]# cat frps.ini
[common]
#frps使用的端口,用来和frpc通信
bind_port = 7000
#面板端口,可以不开启,
dashboard_port = 7500
#面板绑定ip
dashboard_addr = 0.0.0.0
#面板认证用户和密码
dashboard_user = admin
dashboard_pwd = admin
#认证方式,用于和frps和frpc之间的认证,
authentication_method = token
#frpc也要配置
token = 1234@abcd
#日志文件
log_file = /data/frp/frp.log
#日志级别
log_level = debug
#日志保留天数
log_max_days = 3
#使用http代理端口
vhost_http_port = 7080
#服务端的subdomain_host需要和客户端配置文件中的subdomain、local_port配合使用
# 可通过{subdomain}.{subdomain_host} 的域名格式来访问自己本地的 web 服务。
# 假如服务端的subdomain_host为zhazha.vip,客户端某个配置组中的
# subdomain为a,local_port为8080,
# 则访问 a.zhazha.vip ,等同于访问本地的localhost:8080
subdomain_host = zhazha.vip
# 开启prometheus监控
enable_prometheus = true
# 开启tcp穿透端口范围(可选)
allow_ports = 20000-30000
[root@server frp]#
将服务写入到系统服务,方便启动
[root@server frp]# cat /etc/systemd/system/frps.service
[Unit]
Description=frps service
[Service]
ExecStart=/data/frp/frps -c /data/frp/frps.ini
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=frp-service
User=root
[Install]
WantedBy=multi-user.target
[root@server frp]# systemctl start frps.service
如果使用http代理服务,需要一台http服务器,这里使用的是nginx,下面是nginx配置:
server {
listen 80;
server_name *.zhazha.vip;
location / {
#将来自*.zhazha.vip这个域名的请求全部转发到本地7080端口,也就是frps服务的vhost_http_port端口
proxy_pass http://127.0.0.1:7080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
}
2、客户端配置
[root@client frp]# pwd
/data/frp
[root@client frp]# ls
frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE
[root@client frp]# cat frpc.ini
[common]
server_addr = 222.11.22.33
server_port = 7000
[web-a]
type = http
local_ip = 192.168.9.9
local_port = 8080
subdomain = a
#是否加密(可选)
use_encryption = true
#是否压缩(可选)
use_compression = true
[web-b]
type = http
local_ip = 192.168.9.9
local_port = 8081
subdomain = b
[web-c]
type = http
local_ip = 192.168.9.9
local_port = 80
subdomain = c
[root@client frp]#
服务启动和frps相同,参照上面,将frps改成frpc即可
3、域名解析
将要使用的域名解析道frps服务器的ip
例如:
a.zhazha.vip 222.11.22.33
b.zhazha.vip 222.11.22.33
c.zhazha.vip 222.11.22.33
4、其他服务
ssh和rdp,在frpc.ini文件中添加如下内容
[ssh]
type = tcp
local_ip = 192.168.9.1
local_port = 22
remote_port = 222
[rdp]
type = tcp
local_ip = 192.168.9.1
local_port = 3389
remote_port = 33890
通过frps的公网ip加remote_port端口就可以访问对应的内网服务,如访问22端口:
ssh 222.11.22.33 222