注意
笔者的云服务器和内网服务器安装的均为Ubuntu18.04系统,以下步骤命令也基于此系统所写。
下载和安装frp
用户可以通过 frp 的github源选择合适的版本下载这里我们选择的是v0.34.0版本(可以根据需要自由选择),然后上传至云服务器和内网服务器,也可以在两个机器输入如下命令直接下载:
wget https://github.com/fatedier/frp/releases/tag/v0.34.0/frp_0.34.0_linux_amd64.tar.gz
下载完毕,可以将下载好的压缩文件移动到自己选定的安装目录,笔者选择的是/usr/local/frp
文件夹,命令为:
mv frp_0.34.0_linux_amd64.tar.gz -t /usr/local/frp/
然后使用cd
命令进入/usr/local/frp
文件夹下将压缩包解压,命令为:
cd /usr/local/frp
tar -xzvf frp_0.34.0_linux_amd64.tar.gz
以上操作在云服务器和内网服务器通用,读者注意:从以下步骤开始,命令有所不同。
配置frp文件
进入解压后的文件夹:
cd /frp_0.34.0_linux_amd64
其中frps开头的文件均为服务器端配置文件,frpc开头的均为客户端配置文件。我们需要在阿里云服务器上将frpc相关文件全部删除,在内网服务器上将frps文件全部删除,具体命令为:
(阿里云服务器端命令)
sudo rm -f frpc.ini
sudo rm -f frpc_full.ini
sudo rm -f frpc
(内网服务器端命令)
sudo rm -f frps.ini
sudo rm -f frps_full.ini
sudo rm -f frps
下一步是修改配置文件,我们首先查看云服务器的配置文件:
vim frps.ini
云服务器端配置内容为:
[common]
bind_port = 7000
我们无需修改。然后查看内网服务器端的配置文件:
vim frpc.ini
我们需要将内容修改为:
[common]
server_addr = xx.xx.xx.xx # 修改为阿里云服务器公网ip
server_port = 7000 # 与阿里云服务器中所开端口相同
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 通过ssh连接的开放端口
[web]
type = http
local_port = 80
custom_domains = xx.xx.xx # 解析到云服务器ip的域名
两端都修改完毕后,分别运行配置文件:
(阿里云服务器端)
./frps -c ./frps.ini
(内网服务器端)
./frpc -c ./frpc.ini
注意!!! 此步骤中云服务器端基本不会出现问题,但内网服务器大概率会出现connection failed
提示,解决方案:进入阿里云服务器控制台,查看云服务器实例,依次选择"更多"->“网络和安全组”->“安全组配置”,如下图:
进入安全组后,查看安全组列表,点击配置规则开始修改:
进入安全组规则编辑界面后,在"入方向"列表下添加新规则,由于阿里云服务器端frps.ini文件中的默认开放端口设置为7000,所以我们需要将7000端口添加到允许外部访问的端口列表中(笔者为了方便,顺便将6000端口外部访问也开启了),如下:
其中,授权对象的源设为0.0.0.0/0代表此端口接收任意ip地址的访问,将新规则保存后,就可以关闭控制台,然后再次尝试启动内网服务器端的frpc服务,命令同上。
结语
通过上述步骤,我们已经完成了内网服务器到阿里云服务器的frp穿透,用户通过阿里云服务器连接内网服务器的配置为:
remote host: xx.xx.xx.xx # 阿里云服务器的ip地址,或者解析到此ip地址的域名
username:xxxx # 用户在内网服务器的用户名
port: 6000 # 端口号为内网服务器端frpc.ini文件中设置的remote_port
以上为笔者在使用阿里云服务器通过frp进行校园网内网穿透的过程,希望可以帮助有类似需求的读者,文中有不足之处,还请各位读者不吝赐教!