frp内网穿透

  1. 1. frp介绍
  2. 2. 准备工作
  3. 3. 服务器端配置
    1. 3.1 frps配置
    2. 3.2 启动frps
    3. 3.3 设置开机自启
  4. 4. 电脑端
    1. 4.1 frpc配置
    2. 4.2 启动frpc
    3. 4.3 设置开机自启桌面
  5. 5. 其他

放假回家需要远程实验室的电脑,虽然可以通过Windows自带的远程功能加VPN访问,但有时电脑会重启,开机后电脑IP地址也就变了。为了确保万无一失,设置了内网穿透,实现通过公网IP访问内网机器的功能。

1. frp介绍

frp是一个开源的内网穿透工具,支持TCP、UDP、HTTP、HTTPS等协议,可以将内网的机器安全、便捷的通过具有公网IP的机器暴露到公网中。(太过抽象,可以跳过这一部分,直接进入准备工作,配置好之后再回来看就会明白了)

  • frp项目地址:frp

  • frp工作原理

    frp需要一台具有公网IP地址的机器作为服务端,内网中的机器作为客户端。frp包括两部分,frps以及frpc,服务端运行frps,客户端运行frpc,其工作原理如下:

    • 服务端运行frps,对设置的主端口进行监听,等待客户端的连接
    • 客户端运行frpc,连接到服务端,同时告诉服务端要监听的端口转发类型
    • 服务端开启新的进程监听客户端指定的端口
    • 公网用户连接到服务端的端口(该端口是第二步中客户端指定的端口),服务端将数据转发到客户端

2. 准备工作

这里我的服务端是一台Linux服务器,客户端是一台Windows电脑。

  1. 下载frp:frp下载地址

    需要根据对应的操作系统和CPU架构,分别在服务端和客户端下载对应的frp。

  2. 解压frp

    下载解压之后,服务器端保留frps、frps.ini、LICENSE这三个文件,电脑保留frpc、frpc.ini、LICENSE这三个文件即可。

  3. Linux以及Windows需设置防火墙开放对应的端口,根据下面的配置,Linux需开启7000(该端口用于服务端与客户端之间建立联系)以及9000端口(该端口用于公网用户连接内网Windows),Windows需开启3389端口(该端口用于远程桌面)。

3. 服务器端配置

3.1 frps配置

打开 frps.ini 文件,输入以下内容:

[common]
bind_port = 7000 # 主端口,可设置为其他端口,客户端将通过该端口与服务端建立通信
token = thisispassword # 用于身份验证

3.2 启动frps

在解压后的文件夹内输入以下内容:

./frps -c ./frps.ini

3.3 设置开机自启

经过以上设置,frps已经在服务器上启动并监听7000端口了,但服务器重启后需要手动启动frps,因此这里再设置一下frps开机自启。

  1. 在**/lib/systemd/system** 下面新建一个文件frps.service:

    vim /lib/systemd/system/frps.service
    
  2. 写入以下内容

    [Unit]
    Description=frps
    
    [Service]
    Type=simple
    ExecStart=frps所在文件夹/frps -c frps所在文件夹/frps.ini
    
    [Install]
    WantedBy=multi-user.target
    
  3. 启动

    systemctl start frps
    
  4. 设置开机自启

    systemctl enable frps
    

4. 电脑端

4.1 frpc配置

打开frpc.ini文件,输入以下内容:

[common]
server_addr = 服务器的公网IP地址
server_port = 7000 # frps.ini里面设置的主端口
token = thisispassword # 与frps.ini里面设置的保持一致

[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # 本地需要映射到服务器上的端口
remote_port = 9000 # 映射到服务器上的端口

4.2 启动frpc

frpc.ini 所在的文件夹进入命令行窗口,输入:

./frpc -c ./frpc.ini

启动成功后:

  1. 服务器端的7000端口将监听到有个frpc客户端想要与服务器建立连接
  2. 服务器端根据客户端的设置开始监听9000端口
  3. 若此时有台电脑访问服务器的9000端口,则根据frp的映射,将实际访问客户端的3389端口也就是访问Windows电脑的远程

4.3 设置开机自启桌面

同样,为了避免手动启动的麻烦,frpc也需要设置开机自启。借助winsw设置Windows下frpc的开机自启:

  1. 根据需要下载winsw-*.exe

  2. 将下载的 winsw-*.exe 放到 frpc 所在的文件夹

  3. 新建一个名为 winsw.xml 的文件,写入以下内容:

    <service>
        <id>frp</id>
        <name>frp</name>
        <description>frp</description>
        <executable>frpc</executable>
        <arguments>-c frpc.ini</arguments>
        <logmode>reset</logmode>
    </service>
    
  4. 管理员权限打开命令行窗口,进入到 frpc 所在的文件夹,输入以下内容

    winsw install
    

5. 其他

frp还提供了后台管理等功能,具体可参考frp文档


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至header-files@foxmail.com。