如何使用frp配置内网穿透

last modified: 2024-08-06

Posted by Tony on 2024-08-05

1.介绍

本文主要介绍了基于frp的内网穿透。 frp是一款开源的内网穿透工具,可以用于将内网的服务器暴露到公网,方便远程访问。

2.frp

frp可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机;frp有服务端和客户端,服务端需要装在有公网ip的服务器上,客户端装在内网主机上。 alt text

2.1 准备工作

1.一台有公网IP的服务器(阿里云、腾讯云等都行)
2.一台内网主机
3.下载frp,选择适合的版本下载 alt text

解压如下: alt text

这里服务器端和客户端都放在了/usr/local/frp/目录下

2.2 配置

1.添加权限

# 服务器端给执行文件添加权限
cd /usr/local/frp
sudo chmod 777 frps

# 客户端给执行文件添加权限
cd /usr/local/frp
sudo chmod 777 frpc

2.修改配置文件

1.公网服务器端:

# 打开服务器端配置文件
vim ./frps.ini

# 我的填写内容如下:
[common]
bind_port = 7000         # 服务端与客户端通信端口
dashboard_port = 7500    # 后台管理端口
dashboard_user = admin   # 后台登录用户名
dashboard_pwd = admin

vhost_http_port = 7002   # http穿透端口
vhost_https_port = 7003  # https穿透端口
max_pool_count = 50

token = aaa123			# 身份验证令牌,frpc要与frps一致
tcp_mux = true

log_file = /usr/local/frp/frps.log  # 日志相关
log_level = info
log_max_days = 3

authentication_timeout = 0  # 服务器与客户端时间相差15min会连接失败,0表示不验证
privilege_mode = true

注意:访问的端口一定要开放

启动frps:

# 前台启动
./frps -c ./frps.ini

# 后台启动
./frps -c ./frps.ini &

2.客户端(内网主机):

# 打开客户端配置文件
vim ./frpc.ini

# 我的填写内容如下:
[common]
server_addr = 10.10.xxx.xxx  # 公网服务器ip
server_port = 7000   		# 公网服务端通信端口

token = aaa123				# 令牌,与公网服务端保持一致
tcp_mux = true

[ssh]							# 添加ssh节点 
type = tcp
local_ip = 192.168.xxx.xxx
local_port = 22
remote_port = 7001				# 指明由公网服务器的7001端口代理

启动frpc:

# 前台启动
./frpc -c ./frpc.ini

# 后台启动
./frpc -c ./frpc.ini &

frpc启动成功示例如下: alt text

3.测试

1.测试ssh节点: 使用xshell连接通过公网服务器连接内网主机 alt text

测试连接成功: alt text

4.设置开机自启

使用systemd管理frp: 1.服务端:

# 需要先 cd 到 frp 解压目录.
# 复制文件
cp frps /usr/local/bin/frps
mkdir /etc/frp
cp frps.ini /etc/frp/frps.ini
# 编写 frp service 文件,以 ubuntu 为例
vim /usr/lib/systemd/system/frps.service # 有时候需要手动创建system文件夹

# frps.service内容如下
[Unit]
Description=frps
After=network.target
 
[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
ExecStop=/bin/kill $MAINPID
 
[Install]
WantedBy=multi-user.target

# 启动 frp 并设置开机启动
systemctl enable frps
systemctl start frps
systemctl status frps

# 部分服务器上,可能需要加 .service 后缀来操作,即:
systemctl enable frps.service
systemctl start frps.service
systemctl status frps.service

2.客户端:

# 需要先 cd frp 解压目录.
# 复制文件
cp frpc /usr/local/bin/frpc
mkdir /etc/frp
cp frpc.ini /etc/frp/frpc.ini
# 编写 frp service 文件,以 centos7 为例
vim /usr/lib/systemd/system/frpc.service  # 有时候需要手动创建system文件夹

# frpc.service内容如下
[Unit]
Description=frpc
After=network.target
 
[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecStop=/bin/kill $MAINPID
 
[Install]
WantedBy=multi-user.target

# 启动 frp 并设置开机启动
systemctl enable frpc
systemctl start frpc
systemctl status frpc

# 部分服务器上,可以需要加 .service 后缀来操作,即:
systemctl enable frpc.service
systemctl start frpc.service
systemctl status frpc.service

3.致谢

本文参考了以下文章,如果您是这些文章的作者,觉得有侵权,请联系我删除。

感谢您阅读本文,希望本文能够帮助到您。如果您有任何问题或建议,请随时联系我。