阿里云centos7 frp内网穿透

  • Post author:
  • Post category:其他






f






rp介绍





frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是 https://github.com/fatedier/frp,





frp工作原理






服务端运行,监听一个主端口,等待客户端的连接;





客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;





服务端fork新的进程监听客户端指定的端口;





外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;





客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。



简单来说就是




一台没有公网ip的服务器,利用有公网ip的服务器的ip




。让这两台设备连接。然后把这两台看成是一台就行了。然后这个frp就相当于把它俩连接起来的工具。



可以先了解一下其他的知识,比如


正向代理与反向代理


。这篇文章其实讲的挺好的。




vpn就使用了正向代理,frp中使用了反向代理











2 配置教程







想要配置frp穿透,首先必须先要有一台有公网ip的服务器,主要得有公网ip




(即:可以外网访问)的服务器。




如果没有,接下来的教程就不用看了




。配置教程主要分为两个部分,





一是服务器端(外网服务器)的配置;二是客户端(内网服务器)配置。







1、





下载frp


https://github.com/fatedier/frp/releases


frp_0.38.0_linux_amd64.tar.gz是64位系统,frp_0.38.0_linux_386.tar.gz是32位系统,根据自已的云服务器去下载对应的frp文件。


2.解压压缩文件:


tar -zxvf frp_


0.38.0


_linux_amd64.tar.gz


mv


frp_0.38.0_linux_amd64 frp


mv frp /usr/local/




cd






/usr/local/frp



frpc


,


frpc.in


i ,


因为


包含


c结尾代表client,是客户端所使用的,


所以


服务器端用不到


可以


删除


掉,也可以不删除,没有影响





然后配置frps.ini文件。



使用




vim frps.ini




修改文件



如下所示


[common]


# frp监听的端口,默认是7000,可以改成其他的


bind_port =





7000




# 授权码,请改成更复杂的


#


token =


xd


1234


56abc


# 这个token之后在客户端会用到


# frp管理后台端口,请按自己需求更改


dashboard_port = 7500


# frp管理后台用户名和密码,请改成自己的


dashboard_user =


xd


admin


dashboard_pwd =


xd


admin


#


vhost_http_port =


6001


#




访问6001端口,映射到内网web服务



#


vhost_https_port = 10443


#


enable_prometheus = true


# frp日志配置


log_file =


/usr/local/frp


/


log/frps.log


log_level = info


log_max_days = 3





dashboard_port是服务端仪表板的端口




。开启后可使用ip+dashboard_port访问。



token是另外一个没有公网ip的电脑连接的密码。



dashboard_user和dashboard_pwd表示打开仪表板页面登录的用户名和密码.



bind_port表示用于客户端和服务端连接的端口.也就是没有ip电脑所要连接的端口.它俩绑在一起的绳子.



使用守护程序systemctl










/lib/systemd/system






文件夹下创建frps.service





vim frps.service





输入如下内容,保存退出。




[Unit]





Description=frp service





After=network.target





[Service]





TimeoutStartSec=30





ExecStart=#frp绝对路径#/frps -c #frp绝对路径#/frps.ini





ExecStop=/bin/kill $MAINPID





[Install]





WantedBy=multi-user.target



启动服务




s






ystemctl start frps



服务开机自启动



s


ystemctl enable frps




服务器上最终的配置



[Unit]


Description=frp service


After=network.target


[Service]


TimeoutStartSec=30


ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini


ExecStop=/bin/kill $MAINPID


[Install]


WantedBy=multi-user.target





验证服务端是否启动成功




访问:http://服务器IP:后台管理端口” ,输入用户名和密码可以查看连接状态



如:http://62.244.114.4:7500/,用户名和密码分别对应frps.ini文件中的dashboard_user和dashboard_pwd



登录之后界面如下:





如果上述步骤没有问题,则说明frp的服务端配置成功了,也就意味着内网穿透你已经成功了一半!!!




但是要提前到你买的官网打开这个可以访问的端口(我的是阿里云的服务器)(




如何开放端口百度查询即可




)如图:我的已经添加7000端口和3389端口





阿里云开放端口,在







云服务器








—>








ECS










安全组









—>配置规则





还需要iptables或者fillwalld放开相关的端口





iptables




vim /etc/sysconfig/iptables


#自定义frp内网穿透端口


-A INPUT -p tcp -m state –state NEW -m tcp –dport 7000 -j ACCEPT


#frp管理后台端口


-A INPUT -p tcp -m state –state NEW -m tcp –dport 7500 -j ACCEPT


重启 iptables 防火墙服务


# systemctl restart iptables.service





fillwalld






那怎么开启一个端口呢





添加





firewall-cmd –zone=public –add-port=80/tcp –permanent    (–permanent永久生效,没有此参数重启后失效)





重新载入





firewall-cmd –reload





查看





firewall-cmd –zone= public –query-port=80/tcp





删除





firewall-cmd –zone= public –remove-port=80/tcp –permanent



测试地址:http://182.92.232.14:7500/static/#/





客户端相关配置(也就是另外一台内网的服务器)




解压压缩文件:


tar -zxvf frp_


0.38.0


_linux_amd64.tar.gz


mv


frp_0.38.0_linux_amd64 frp


mv frp /usr/local/




cd






/usr/local/frp





因为是客户端所以编辑包含c的文件




然后配置frp


c


.ini文件。



使用




vim frp






c






.ini




修改文件



如下所示




[common]





server_addr = 公网ip





server_port = 7000



[ssh]


type = tcp


local_ip =


192.168.1.88


local_port = 22


remote_port =


6000




[




web1




]





type = tcp





local_ip=




192.168.1.88    #这个地方是没有公网ip的服务器地址





local_port =




80      #这个地方是没有公网ip的服务器部署的服务的端口





remote_port=




8080   #绑定的远程有公网ip的服务器的端口



# frp日志配置


log_file =


/usr/local/frp


/


log/frp


c


.log


log_level = info


log_max_days = 3






客户端配置







[common]





server_addr = 公网ip





server_port = 7000





[ssh]





type = tcp





local_ip=




192.168.1.88





local_port =




22





remote_port=600




0





查看frp




c




.ini配置文件(C代表客户端),在命令窗口直接输入frpc.ini即可打开。server_addr = 114.119.110.120是你买的服务器的公网IP要对应上。




server_port




= 7000是监听端口与服务器的




bind_port




对应一致。local_port =




22




,remote_port =




6000




是在买服务器的官网开通的可访问端口。





最终配置






[common]





server_addr =








182.92.232.14









server_port =






7000





[ssh]


type = tcp


local_ip =


192.168.1.88


local_port = 22


remote_port =


6000


[web]


type =


tcp


local_ip =


192.168.1.88


#访问本地80web服务


local_port = 80


#必须已经备案



custom_domains = www.


ddzhl


.c


om


# frp日志配置


log_file =


/usr/local/frp


/


log/frp


c


.log


log_level = info


log_max_days = 3





注意:代理端口好像限制最大8888(





remote_port


)



使用守护程序systemctl










/lib/systemd/system






文件夹下创建frp




c




.service





vim frp








c








.service





输入如下内容,保存退出。




[Unit]





Description=frp service





After=network.target





[Service]





TimeoutStartSec=30





ExecStart=






/usr/local






/






frp/






frp






c






-c






/usr/local






/






frp






/frp






c






.ini





ExecStop=/bin/kill $MAINPID





[Install]





WantedBy=multi-user.target



启动服务




s






ystemctl start frp






c



服务开机自启动



s


ystemctl enable frp


c





最终实验的最终版本







服务端部分






vim frps.ini





[common]





# frp监听的端口,默认是7000,可以改成其他的





bind_port = 7000





authentication_method = token





# 授权码,请改成更复杂的





token = xd123456abc





# 这个token之后在客户端会用到





# frp管理后台端口,请按自己需求更改





dashboard_port = 7500





# frp管理后台用户名和密码,请改成自己的





dashboard_user = xdadmin





dashboard_pwd = xdadmin





# 访问10080端口,映射到内网web服务





#vhost_http_port = 10080





#vhost_https_port = 10443





#enable_prometheus = true





# frp日志配置





log_file = /usr/local/frp/log/frps.log





log_level = info





log_max_days = 3





客户端部分





vim frp






c






.ini





[common]





server_addr = 182.92.232.14





server_port = 7000





authentication_method = token





token = xd123456abc





[ssh]





type = tcp





local_ip = 192.168.1.88





local_port = 22





remote_port = 6000





[web]








type = tcp






local_ip = 192.168.1.88





local_port = 80





#访问本地80web服务





remote_port = 8080





custom_domains = www.ddzhl.com





#必须已经备案





# frp日志配置





log_file = /usr/local/frp/log/frpc.log





log_level = info





log_max_days = 3





注意需要阿里云和防火墙开放需要的哪些端口,不然还是没有办法访问的





访问web服务的时候





type=tcp





如果是type=http的话,访问不了





测试







访问






现在访问服务器IP:访问内部的ssh端口 就可以访问内网的设备





比如我现在要访问我内网的设备就访问:




182.92.232.14:




6000







连接成功








frp如何加token?







在 frps.ini 和 frpc.ini中均添加


authentication_method = token


token = changeit





版权声明:本文为weixin_39337506原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。