在看了好多篇文章之后,总算弄懂了是怎么配置的,我这里是参考的是几个大神的文章,并把自己遇到的坑写出来了
1.https://blog.csdn.net/weixin_36241363/article/details/78457359
2.https://blog.csdn.net/u012198893/article/details/82348605
3.https://blog.csdn.net/u013144287/article/details/78589643
1.环境准备
需要准备的东西有一台需要做内网穿透的内网服务器(客户端),一台可以访问外网的服务器(服务端)(阿里云等)以及一个已经备案的域名(若仅做ssh内网穿透不需要)。
2.外网服务器(阿里云服务器)SSH环境配置
先下载frp(建议放到/usr/local/frps目录下)
cd usr/local
mkdir frps
cd frps
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz
tar -zxvf frp_0.13.0_linux_amd64.tar.gz
进入到frp的解压目录下
cd /usr/local/frps/frp_0.13.0_linux_amd64
ls
进入目录中可以看到 frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE 这七个文件
1.frpc:客户端可执行程序
2.frpc_full.ini:客户端所有配置项(可以再此文件查看frp的所有的配置项)
3.frpc.ini:客户端配置项
4.frps:服务端可执行程序
5.frps_full.ini:服务端所有配置项(可以再此文件查看frp的所有的配置项)
6.frps.ini:服务端配置项
7.LICENSE:许可证
在服务端我们不需要客户端的可执行程序和配置,为了避免误操作,我们可以先删除掉所有客户端的配置
rm -rf frpc frpc_full.ini frpc.ini
接下来可以对服务端配置进行修改:
vi frps.ini
可以看到只有一行代码 :bind_port = 7000
默认的配置信息中只有一个绑定端口为7000,意思是我们在外网服务器中绑定7000端口和客户端进行通信。注:端口可以自定义,但是需要客户端和服务端进行统一。阿里云服务器需要在esc管理中配置安全组规则中添加7000端口
我们要把它改为:
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
我们将请求域名作转发处理,因为vhost_http_port=80占用了80端口,导致生产环境上得网站不能直接通过域名来访问,如果vhost_http_port不等于80则导致访问通过子域名访问内网环境都需要在url后面加上81端口。
保存然后启动服务./frps -c ./frps.ini,这是前台启动,后台启动命令为nohup ./frps -c ./frps.ini &
建议后台启动前先前台启动看有无报错
nohup ./frps -c ./frps.ini &
若出现了 nohup: ignoring input and appending output to ‘nohup.out’
或者nohup: failed to run command `xxx.sh’: Permission denied
错误原因:文件没有写入权限。就算你用sudo chmod给文件加权限也没用。
解决方法:
nohup ./frps -c ./frps.ini > /dev/null 2> /dev/null &
这样他会给你输入到 /dev/null 这个特别的文件下面。它像一个linux黑洞,所有重定向到它的信息都会自动消失。如果你的输入日志很重要的话就不建议重定向到/dev/null中了
若是说80端口已被占用
则通过netstat -nap 查看程序运行的pid,查找80端口,记住PID
然后执行 kill PID杀死进程
以上是外网服务器最基本的一个配置。十分简单
3.内网服务器SSH环境配置
内网服务器与外网服务器一样,首先将安装包下载到内网服务器的/usr/local/frpc目录下,然后删除掉我们不需要的服务端文件
cd usr/local
mkdir frpc
cd frpc
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz
tar -zxvf frp_0.13.0_linux_amd64.tar.gz
rm -rf frps frps_full.ini frps.ini
接着修改我们的客户端配置文件frpc.ini
vi frpc.ini
客户端默认配置改为如下:
[common]
server_addr = xxx.xx.xx.xxx #公网服务器ip
server_port = 7000 #与服务端bind_port一致
#公网通过ssh访问内部服务器
[ssh]
type = tcp #连接协议
local_ip = xxx.xx.xx.xxx#内网服务器ip
local_port = 22 #ssh默认端口号
remote_port = 6000 #自定义的访问内部ssh端口号 注:阿里云服务器需要在esc管理中配置安全组规则中添加6000端口
#通过tcp来连接mysql
[mysql]
type = tcp
local_port = 3306
remote_port = 3306
#公网访问内部web服务器以http方式
#[web01]
#type = http #访问协议
#local_port = 81 #内网web服务的端口号
#custom_domains = yuming1.com #所绑定的公网服务器域名,一级、二级域名都可以
#[web02]
#type = http #访问协议
#local_port = 82 #内网web服务的端口号
#custom_domains = yuming2.com #所绑定的公网服务器域名,一级、二级域名都可以
注意 custom_domains表示配置为一个已经备案的域名(必填,并且需要域名可用),并且域名解析配置为外网服务器ip
保存前把frpc.ini文件里的注释都删掉,以免报错
保存然后执行./frpc -c ./frpc.ini启动,这是前台启动,后台启动命令为nohup ./frpc -c ./frpc.ini &
建议后台启动前先前台启动看有无报错
nohup ./frpc -c ./frpc.ini &
现在可以愉快的访问内网的域名了!