frp-简单而强大的内网穿透工具

1,821 阅读3分钟

需求

想要在公司的 Window 电脑上连接家里的 Linux 电脑,进行 ssh 连接

寻找

经过向群里大佬咨询得知, frp (gofrp.org) 工具应该可以满足我目前的需求。

实现

提前说明:所有的操作为最简化操作,完整操作可以查看官方文档

以下操作都是单服务,但官方也提供了 frps@.serverfrpc@.server 的启动文件,这意味着可以同时启动多个服务,监听不同的端口。

材料

  • 一台具有公网 IP 的云服务器 ( Linux ), 版本 CentOS 7
  • frp 服务端 && 客户端 版本 v0.37
  • 一台自用 Linux 电脑 版本 OpenSUSE Leap 15.3
  • 公司发的 Window 电脑 版本 Window 10

云服务器

云服务器一般会把 Linux 的防火墙关闭,但同时他们会进行安全组设置,因此可能需要配置对应安全组策略来将需要的端口打开。

另外,国内的云服务器厂商要是没去备案的话,那么 80 和 443 端口无法使用。


# 查看信息,下载对应的压缩包,比如 x86_64 对应的就是 amd64
uname -a

wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz

tar -xf frp_0.37.1_linux_amd64.tar.gz
cd frp_0.37.1_linux_amd64

cp frps /usr/bin
mkdir -p /etc/frp
cp frps.ini /etc/frp
cp systemd/frps.service /usr/lib/systemd/system

systemctl start frps
systemctl enable frps

## 查看状态,正常为 active(running)
systemctl status fps

现在 frps (服务端)已经开启,默认端口是 7000, 如果需要修改监听,可以修改 /etc/frp/frps.ini 文件。设置的端口不能与其他进程监听的端口有所冲突。

vim /etc/frp/frps.ini

## 文件内容
[common]
bind_port = 7000

systemctl restart frps

自用 Linux 电脑

## 打开指定端口
firewall-cmd --permanent --add-port=22/tcp
systemctl restart firewalld.service

## 或者直接关闭防火墙

systemctl stop firewalld
systemctl disable firewalld


uname -a

wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar -xf frp_0.37.1_linux_amd64.tar.gz
cd frp_0.37.1_linux_amd64

cp frpc /usr/bin
mkdir -p /etc/frp
cp frpc.ini /etc/frp
cp systemd/frpc.service /usr/lib/systemd/system

需要修改 /etc/frp/frpc.ini 配置文件后,才能正常启动。

vim /etc/frp/frpc.ini

## 文件内容

[common]
server_addr = 127.0.0.1 # 需要改成服务端的服务器公网ip
server_port = 7000 # 需要改成服务端 监听的端口

[ssh_mylinux] # 默认 [ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8000 # 默认 6000



systemctl start frpc
systemctl enable frpc

# 查看状态,正常为 active(running)
systemctl status fpc

注意:

  1. [ssh] 字段,不应该与其他的客户端重名。
  2. [remote_port] 字段,不应与本机、服务端的其他进程监听的端口冲突。

公司的 Window 电脑

如果只是想用 Window 去连接家里的 Linux 电脑,那么就不需要配置了,直接使用 XShell 等 ssh 工具进行连接即可。

image.png 但是,如果你想在家里连接公司的 Window 电脑的话,那么就需要做一些配置了。当然还是通过 ssh 连接,之后去使用 Window 的 Powershell 进行操作。

可以参考一下下面两篇文章

Window 安装 OpenSSH

适用于 Windows 10 1809 和 Windows Server 2019 的 OpenSSH 服务器配置

其中设置 openssh 的默认 shell,可以改成 powershell 7。

同样也是需要配置客户端,并执行 ./frpc.exe -c ./frpc.ini 命令,如果不想每次都手动在 cmd 或者 powershell 中去执行,可以使用 nssm 工具写成开机自启服务。

其他

TeamViewer 这样的工具,可以进行可视化的远程操作,但我不知道有啥样的开源项目能够对标 TeamViewer另外如果有更好的工具,希望能有小哥哥小姐姐能够在下面评论一下。