0001_20190327_使用frp搭建内网穿透
1. 环境
a) 公网服务器为阿里云的ECS Windows 2008 R2服务器, 有公网IP地址; 这个作为frp的服务器
b) 内网是开发服务器, Centos 7
c) 在https://github.com/fatedier/frp/releases 下载最新的frp包 ;当前最新的是0.25.3(2019年3月27日21:55:28)
d) 其中windows_amd64对应的就是windows 64位系统; linux_amd64对应的就是64位linux系统;
2. 先说配置windows服务器端:
a) 把frp_0.25.3_windows_amd64.zip复制到服务器上, 解压到C:\frp的目录下, 没有用的删除, 下图:
b) 修改frps.ini文件, 输入以下内容:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
log_file = ./frps.log
log_level = error
token = 12345678
下图:
c) 管理员命令打开cmd, 输入下图命令回车, 启动frps服务:
C:\Users\Administrator>c:\frp\frps.exe -c c:\frp\frps.ini
d) 打开任务管理器, 看看frps.exe启动没有
e) 使用浏览器访问公网IP地址:7500,在输入admin/admin后将看到下图界面:
2. Frp服务器端配置完毕; 接下来配置frp客户端, 因为客户端是内网用的Centos 7开发服务器, 所以需要先下载frp_0.25.3_linux_amd64.tar.gz; 使用xftp工具上传到指定目录:
a) 这里上传到/thisdirsavfile/, 这个目录是我自己建的,当然使用wget也可以, 下图:
b)解压到指定目录:
[root@localhost thisdirsavfile]# mkdir /usr/frp [root@localhost thisdirsavfile]# tar zxvf frp_0.25.3_linux_amd64.tar.gz -C /usr/frp
c) 编辑frpc.ini文件:
[root@localhost frp]# vim frp_0.25.3_linux_amd64/frpc.ini
#输入下面的内容
[common] server_addr =你的IP地址 server_port = 7000 token = 12345678(这个token一定要和服务器的对应) [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
d) 启动客户端的frp服务:
[root@localhost frp]# cd frp_0.25.3_linux_amd64/
[root@localhost frp_0.25.3_linux_amd64]# ./frpc -c ./frpc.ini
2019/03/28 03:45:14 [I] [service.go:221] login to server success, get run id [8a139b4ec11a8e1b], server udp port [0 2019/03/28 03:45:14 [I] [proxy_manager.go:137] [8a139b4ec11a8e1b] proxy added: [ssh] 2019/03/28 03:45:14 [I] [control.go:144] [ssh] start proxy success
e)使用Xshell进行测试连接:
i. 新建会话
ii. 这里是输入内网linux服务器的用户名和密码:
iii.输入完密码之后即可穿透成功
f) 注意的问题:
i. 因为是阿里云的服务器, 所以一定要在安全组放行frp使用到的端口
ii. 我这里内网开发的服务器, 所以直接把Centos 的防火墙关了, 端口放行的问题根据自己的实际情况
iii. 注意服务端和客户端frp的token一定要对应
iv. 停止windows的服务器端, 到任务管理器中把frps.exe结束任务
v. 停止linux上的frpc, 则使用下面的命令:
[root@localhost frp_0.25.3_linux_amd64]# ps -aux|grep frp root 793 0.0 0.0 112724 988 pts/1 S+ 04:39 0:00 grep --color=auto frp root 32303 0.0 0.0 112648 12332 pts/0 Sl+ 04:22 0:00 ./frpc -c ./frpc.ini [root@localhost frp_0.25.3_linux_amd64]# ps -aux|grep frp|grep -v grep root 32303 0.0 0.0 112648 12332 pts/0 Sl+ 04:22 0:00 ./frpc -c ./frpc.ini [root@localhost frp_0.25.3_linux_amd64]# kill -9 32303
vi. 作为后台服务启动, 如果不作为后台服务启动, 你的ssh一关闭, 服务也关闭了
[root@localhost ~]# nohup /usr/frp/frp_0.25.3_linux_amd64/frpc -c /usr/frp/frp_0.25.3_linux_amd64/frpc.ini
vii. 使用脚本设置开机启动, 并后台运行
[root@localhost ~]# vim /usr/lib/systemd/system/frpc.service [Unit] Description=frpc After=network.target [Service] TimeoutStartSec=30 ExecStart=/usr/frp/frp_0.25.3_linux_amd64/frpc -c /usr/frp/frp_0.25.3_linux_amd64/frpc.ini ExecStop=/bin/kill $MAINPID [Install] WantedBy=multi-user.target
viii. 执行脚本命令:
[root@localhost ~]# systemctl enable frpc --开机启动 [root@localhost ~]# systemctl start frpc --启动frpc [root@localhost ~]# systemctl stop frpc --停止frpc
iv. token错误:
[root@localhost frp_0.33.0_linux_amd64]# ./frpc -c ./frpc.ini 2020/06/24 15:35:02 [E] [service.go:273] token in login doesn't match token from configuration 2020/06/24 15:35:02 [W] [service.go:101] login to server failed: token in login doesn't match token from configuration token in login doesn't match token from configuration
不知道怎么回事, 后来把 frpc.ini里的token直接删了, 就可以了