使用frp进行内网穿透
之前使用花生壳来进行内网穿透,只能穿透一个,相当于没有,然后发现了frp这个神仙项目。
frp可以通过一个有公网IP的服务器来进行转发,服务器启动frps,内网机器启动frps,然后就可以访问内网机器啦。
搭建过程
硬件条件
Jetson Nano B01 ,阿里云服务器一台,域名一个。
下载frp
首先下载frp项目,https://github.com/fatedier/frp/releases,阿里云服务器应该是要下载frp_0.36.2_linux_amd64.tar.gz,然后解压。Jetson nano需要下载frp_0.36.2_linux_arm.tar.gz,然后解压。
观察frp配置文件
里面一共有一个systemd文件夹和frpc、frpc.ini、frpc_full.ini、frps、frps.ini、frps_full.ini。systemd先不用管,后面才会用到。
其中frpc和frps是两个启动程序。其余四个ini分别是启动程序的简单配置例子和详细配置例子。
实现ssh
如果要实现ssh ,服务器和内网机器分别要进行以下配置。
服务器需要配置frps.ini文件,其实不用变哈哈,本来就是这样。
1 | [common] |
然后内网机器需要进行一哈配置frpc.ini
1 | [common] |
实现http
服务器的frps.ini配置
1 | [common] |
本地的frpc.ini配置
1 | [common] |
因为每个web中的custom_domains都必须不同,如果直接写服务器的公网ip的话,只能实现一个http的转发,如果你有域名的话,是可以创建很多子域名,因此可以实现很多http转发。只需要在本地机器的frpc.ini中增加local_port和custon_domains即可。
将其注册成服务
我是看着这个教程做的https://blog.csdn.net/fjh1997/article/details/103672631,但是文中应该是有一个错误,“我们把下载好的所有*.ini文件放到/etc/frpc/目录下”,因为frpc@.service中的路径是 /etc/frp 所以应该放在 /etc/frp下。如果放在了frpc下需要改一下service中的路径。
还记得之前的systemd文件夹吗,那个就是注册成服务用的。
cd systemd进入文件夹 ls
一共有四个文件 frpc.service 和 frpc@.service还有frps的,带@和不带@的区别就是带@可以在启动服务的时候指定配置文件,不带@的只能使用文件中固定的配置文件
下面是frpc@.service的内容
1 | [Unit] |
比较重要的就是这两个
1 | ExecStart=/usr/bin/frpc -c /etc/frp/%i.ini |
所以我们重点就是将 frpc 移动到 /usr/bin/下 , 将 frpc.ini移动带 /etc/frp/下 , 将frpc@.service移动到/etc/systemd/system/下。
然后通过
1 | systemctl enable frpc@frpc #这步用来注册服务 第一个frpc表示在/etc/systemd/system/下的frpc@.service,第二个frpc表示配置文件的前缀 |
对于frps也一样哦,移动三个文件,然后注册服务、启动,大功告成啦。