Alomerry Wu @ alomerry.com

搭建内网穿透教程

Jul 12, 2021 · 3min · 767 · · updated at 3 years ago

起因

原来住处的宽带是有 IPv6 的,使用 ddns 服务主动请求阿里云解析 API 映射 AAAA 记录到住处的 IPv6 地址上,IPv6 配上 moonlight 高码率远控体验出奇的好。但是由于六月份的时候换了地方,宽带没有 IPv6 了,只能使用内网穿透来访问屋内的局域网设备,尝试 frp 之后记录一下过程。

搭建

服务器和待访问机器都需要安装 frp,并配置好各自参数,开放服务器相关端口即可。如果网络条件可以打洞的话,可以使用 xtcp 方式穿透,这样流量基本不会流过服务器,可以减少一定成本。

下载安装

服务端和客户端下载 frp 安装包并解压到 /root/apps/frp/

wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz -qO /tmp/frp.tar.gz
rm -rf /root/apps/frp && mkdir /root/apps/frp -p
tar -xf /tmp/frp.tar.gz --strip-components 1 -C /root/apps/frp/
rm -rf /tmp/frp.tar.gz

修改配置

修改服务端的 frps.ini 和客户端的 frpc.ini。frps.ini 需要设置自定义令牌(token)用于和客户端验证身份,bind_port 为 frps 运行端口,vhost_http_port 为 http 协议复用端口;frpc.ini 同理。

TIP

服务端注意开放 bind_port 入网防火墙,以下例子中客户端设置了 22 端口由服务端 60022 端口转发,如果需要此功能,需要同时开放 60022 端口。

[common]
bind_port = 7000
bind_udp_port = 7000
vhost_http_port = 7951
vhost_https_port = 7952
token = 令牌
log_file = /root/apps/frp/log
log_max_days = 1
[common]
token = 令牌
server_addr = 服务器域名
server_port = 7000
log_file = /root/apps/frp/log
log_max_days = 1

[ssh]
type = tcp
local_port = 22
remote_port = 60022
use_encryption=true
use_compression=true

启动/运行

在服务端和客户端的 /lib/systemd/system//etc/systemd/system/ 目录下创建 frp.service 用于自启动

TIP

注意高亮行是服务端配置,客户端需要改成 ExecStart=/root/apps/frp/frpc -c /root/apps/frp/frpc.ini

[Unit]
Description=Frp Service
After=network.target

[Service]
Type=simple
User=root
Restart=always
RestartSec=5s
ExecStart=/root/apps/frp/frps -c /root/apps/frp/frps.ini

[Install]
WantedBy=multi-user.target

执行 systemctl enable frp.service 开启自动,执行 systemctl status frp.service 观察运行状态

 frp.service - frp service
     Loaded: loaded (/lib/systemd/system/frp.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-07-27 08:24:37 CST; 6h ago
   Main PID: 3909 (frp)
      Tasks: 16 (limit: 38382)
     Memory: 11.4M
     CGroup: /system.slice/frpservice
             └─3909 /root/apps/frpc -c /root/apps/frpc.ini

此时服务端与客户端已建立连接,并且可以通过 ssh 从外部访问内网客户端

ssh root@服务端域名 -p 60022

接下来可以查阅 官方文档 获取更多功能。

Reference

 
 comment..
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.0.1
Theme by antfu
2018 - Present © Alomerry Wu