机器在学习
家里没有公网IP,因此导致家里的GPU服务器,NAS在外网访问起来非常困难,尝试过使用花生壳、零遁出的内网穿透工具。但效果都不太好,链接速度不稳定,所以就尝试搞了个frp做了个内网穿透
其中,服务端是指能提供公网IP的服务器,客户端C需要将端口Port_c映射到公网服务器S的端口Port_s上,通过访问公网服务器S的端口Port_s,就可以访问内网客户端C的Port_c端口了。
进入Git-frp,下载对应的frp文件,我下载的是frp_0.32.0_linux_amd64.tar.gz,可以在GitHub页面直接点击下载,也可以使用下面的命令。
注意,客户端C与客户端C都需要下载frp文件
wget https://github.com/fatedier/frp/releases/download/v0.32.0/frp_0.32.0_linux_amd64.tar.gz
新建路径/usr/local/frp,将刚才下载的frp文件,解压到这个路径下
mkdir -p /usr/local/frptar -zxvf frp_0.32.0_linux_amd64.tar.gz -C /usr/local/frpcd /usr/local/frp/frp_0.32.0_linux_amd64
进入/usr/local/frp后,需要关注4个文件:分别是frpc、frpc.ini和frps、frps.ini。
frpc、frpc.ini是客户端所关注文件,frps、frps.ini是服务端所关注两个文件。配置服务器端,将客户端的配置文件删除
rm /usr/local/frp/frp_0.32.0_linux_amd64/frpc*
接下来,对frps.ini进行配置。默认的frps.ini中,只包含了端口一项,出于安全考虑,可以添加一个token,我的frps.ini是这样的
[common] bind_port = 7000 token = 82#¥F95f45@3f #客户端连接服务器端的口令
[common] bind_port = 7000 token = 8
95f
配置完成后,执行下面命令,就可以启动frp了
/usr/local/frp/frp_0.32.0_linux_amd64/frps -c /usr/local/frp/frp_0.32.0_linux_amd64/frps.ini
需要注意的是,要检查你的公网服务器,7000端口是否对外开放了,不开放端口,是没有办法进行访问的
客户端配置与服务端配置其实大同小异,在新建路径/usr/local/frp,将刚才下载的frp文件,解压到这个路径下
frpc、frpc.ini是客户端所关注文件,frps、frps.ini是服务端所关注两个文件。配置客户端,将服务器端的配置文件删除
rm /usr/local/frp/frp_0.32.0_linux_amd64/frps*
接下来,对frps.ini进行配置。我的frps.ini是这样的
[common] server_addr = xxx.xxx.xxx.xxx # 服务端ip server_port =7000 #服务端端口 token = 82#¥F95f45@3f #连接服务端口令[ssh] type = tcp local_ip = 127.0.0.1 #127.0.0.1或者本地ip local_port = 22 #要穿透的本地端口 remote_port =6661 # 暴露到外网的端口
8
/usr/local/frp/frp_0.32.0_linux_amd64/frpc -c /usr/local/frp/frp_0.32.0_linux_amd64/frpc.ini
需要注意的是,要检查你的公网服务器6661端口,内网客户端22端口是否开放。
通过 ssh 访问内网机器,假设用户名为 test:ssh -oPort=6661 test@x.x.x.x这里ip为服务端ip,端口为我们暴露到外网的端口即 6661。
ssh -oPort=6661 test@x.x.x.x
使用xshell等ssh链接工具,也可以进行测试
为增加内网穿透的稳定性,需要添加开机自启动,我使用systemctl来控制启动。
以服务端为例,首先,编写脚本
sudo vim /lib/systemd/system/frps.service
[Unit] Description=fraps service After=network.target network-online.target syslog.target Wants=network.target network-online.target [Service] Type=simple #启动服务的命令(此处写你的frps的实际安装目录) ExecStart=/usr/local/frp/frp_0.32.0_linux_amd64/frps -c /usr/local/frp/frp_0.32.0_linux_amd64/frps.ini [Install] WantedBy=multi-user.target
客户端的脚本,与服务器端脚本没啥区别,将frps替换成frpc就可以了
[Unit] Description=fraps service After=network.target network-online.target syslog.target Wants=network.target network-online.target [Service] Type=simple #启动服务的命令(此处写你的frps的实际安装目录) ExecStart=/usr/local/frp/frp_0.32.0_linux_amd64/frpc -c /usr/local/frp/frp_0.32.0_linux_amd64/frpc.ini [Install] WantedBy=multi-user.target
然后分别在客户端与服务器端启动 frpssudo systemctl start frps再打开自启动sudo systemctl enable frps
sudo systemctl start frps
sudo systemctl enable frps
几条有用的命令
sudo systemctl restart frps
sudo systemctl stop frps
sudo systemctl status frps
The End
已发布
分类
标签:
您的电子邮箱地址不会被公开。 必填项已用*标注
评论 *
显示名称
电子邮箱地址
网站地址
Δ
发表回复