title: '使用frp进行内网穿透'
date: 2019-11-06 16:08:42
tags: [tools,frp,shell]
published: true
hideInList: false
feature:
公司内网搭了一台电脑搭了一套服务,由于没有公网ip,需要ssh直接远程的话是不行的。查了很多资料,发现通过内网穿透可以解决这个问题。比较了目前内网穿透的方案(花生壳、ngrok、frp...),最终选择frp进行内网穿透。
环境
一台vps服务器作为frp服务器端,阿里云,腾讯云,亚马逊云都可以。
需要让外网能够远程的机器,必须保证自身可以上外网。
所用的云服务器以及内网机器皆为centos7.7。
部署
#!/bin/bash
[ ! -d /home/soft/frp ] && mkdir -p /home/soft/frp
cd /home/soft/frp
kill -9 `ps -ef | grep frp | grep -v grep | awk '{print $2}'`
rm -rf /home/soft/frp/*
wget https://github.com/fatedier/frp/releases/download/v0.15.1/frp_0.15.1_linux_amd64.tar.gz
tar zxvf frp_0.15.1_linux_amd64.tar.gz
cd frp_0.15.1_linux_amd64
while :
do
read -p 'server or cilent ? input: s or c
' op
if [[ "$op" = "c" ]] || [[ "$op" = "s" ]];then
break
else
echo "please input again;"
fi
done
case $op in
c)
read -p 'input server addr:' server_addr
this_line=`sed -n '/server_addr/=' ./frpc.ini`
sed -i ''${this_line}' d' ./frpc.ini
sed -i ''${this_line}'i server_addr = '${server_addr}'' ./frpc.ini
read -p 'input remote port:' remote_port
this_line=`sed -n '/remote_port/=' ./frpc.ini`
sed -i ''${this_line}' d' ./frpc.ini
sed -i ''${this_line}'i remote_port = '${remote_port}'' ./frpc.ini
this_id=`date "+%y%m%d%H%M"`
this_id='ssh'${this_id}
sed -i 's#ssh#'$this_id'#g' ./frpc.ini
nohup ./frpc -c ./frpc.ini > log &
;;
s)
nohup ./frps -c ./frps.ini >log &
;;
*)
echo 'maybe something wrong...'
;;
esca
以上是linux环境的,windows客户端有所不同;
进入安装包地址,32位选择frp_0.15.1_windows_386.zip,64位选择frp_0.15.1_windows_amd64.zip。
下载解压,frpc.ini配置如下:
#frpc.ini
[common]
server_addr = X.X.X.X
server_port = 7000
[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 789
之后双击frpc.exe运行即可;
另外windows下需要关闭防火墙以及打开可以远程功能,如下图所示。