解决阿里云服务器开启frp服务端,内网服务器开启frp客户端却连接不上的问题

时间:2024-03-11 09:53:30

解决方法: 把阿里云自带的Alibabxxxxxxxlinux系统 换成centos 7系统!!!!

说一下我的过程和问题:由于我们内网的服务器在校外是不能连接的,因此我弄了个阿里云服务器做内网穿透,所谓内网穿透就是当学校或者公司这种网络设置了私有,校园网之外的连接不了学校或者公司的服务器,因此得在学校或者公司的服务器内搭建一个穿透软件服务,那样就绕过学校的网关可以与外界联系,但这需要一个带公网ip的服务器当新的网关媒介。
搭建穿透服务可以用frp来打通一个隧道连接中介服务器与内网服务器。

我租了个阿里云服务器(一个月免费的,唉,我哪有钱),并在两端都下载好了frp包,再解压,并配置好了frps.ini,frpc.ini文件,在两台机器上各自开启了服务。
我检查两个配置文件对齐了7000连接端口,并且在阿里云服务器的控制台的安全组开放了6000-6005,7000-7005端口等等等等,甚至把两边的防火墙都关了,做了很多尝试但还是无效。

最后分析了一下日志,发现frpc这边每次都连接超时,日志说连不上阿里云服务器,但阿里云服务端明明开启了服务,是正常的,而且我也在阿里云服务器也ping过百度等网站,证明阿里云服务器网没问题,是可以与外界连通的。
最后我只能猜测是阿里云这边端口应该是做了某些设置,也许是系统的问题,对于这个兼容centos的Alibaba linux系统我第一次用,因此尝试重装,一次解决 ,ccccccnmcccccc!@!!!浪费我两天时间。

于是干脆记录一下,以备配置一次到位。

下面是linux版本的frp压缩包,里面的配置除了ip要把x.x.x.x改成自己的中继服务器之外,其他的可以直接复用(如果仅仅是用到ssh远程服务的话,是不需要更改的):
链接:https://pan.baidu.com/s/14D2YOwVaayqOHCX_b4x4PA
提取码:kr34

这里用unzip frp.zip命令解压之后,进入目录,记得赋予frps, frpc两个文件可执行权限,命令是: chmod +x frps, chmod +x frps

中继服务器的frps.ini的配置:

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin

内网服务器frpc.ini文件的配置

[common]
tls_enable = true
server_addr = x.x.x.x
server_port = 7000
token = 12345678

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[tensorboard]
type = tcp
local_ip = 127.0.0.1
local_port = 6006
remote_port = 6006

中继服务器用nohup ./frps -c frps.ini & 命令开启服务,看到返回信息下面说明开启成功。(后面会说后台开启服务,并且开机自启动)
在这里插入图片描述

内网服务器用nohup ./frpc -c frpc.ini &命令开启服务,看到下面返回信息说明正常的开启。
在这里插入图片描述
没有返回信息说明,服务开启不正常,二者不能正常通信。两个都有返回,那就是成功了!

另外,阿里云组最好开放的端口有:
在这里插入图片描述
优先级都是1。
最好把两边的防火墙都开一一下端口,或者直接关闭(防火墙命令在我的tomcat那篇文章中有)。

然后在任何一台本地机器的ssh软件中,填写内网服务器的地址,端口是配置文件中ssh服务模块设置的remote_port 端口 6000,再填写用户名和密码,就可以远程连接登录内网服务器搞开发了。

另外,如果需要服务稳定,最好在中继服务器中设置开机自启动。

在中转服务器中编辑文件:

vim /etc/systemd/system/frps.service

把下面的ExecStart这个属性的两个路径都换成自己的文件路径,然后保存即可。

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/root/frp/frps -c /root/frp/frps.ini

[Install]
WantedBy=multi-user.target

再执行运行,以及开机自启动:

sudo systemctl start frps
sudo systemctl enable frps

同理,创建内网服务器的连接服务:

vim /etc/systemd/system/frpc.service
[Unit]
Description=frpc service
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/frp/frpc -c /home/frp/frpc.ini
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

再执行运行,以及开机自启动:

sudo systemctl start frps
sudo systemctl enable frps

停止服务:

sudo systemctl stop frps
sudo systemctl stop frpc

禁止开机自启动:

sudo systemctl disable frps
sudo systemctl disable frpc

再记一个命令,查看端口是否被监听:

netstat -tunlp | grep 7000