frp反向代理

近日,在网上找到了免费的frp服务,可以把家里的树莓派挂到网上。

首先,解释一下这两个名词:

  • 正向代理: Client -> Proxy -> Server

     你在监狱里服刑,没办法直接去厂家买东西,需要有关系的狱友带货

      (狱友就是你的“正向代理“)

  • 反向代理: Client -> Proxy <- Server

     监狱里开个小卖部,厂家发货到小卖部,你直接去买即可

     (小卖部就是厂家的“反向代理“)


从frp项目的releases页面下载并解压获取到frpc二进制程序,然后再写2个配置文件:

/usr/local/bin
└── frpc (解压缩后去获取)

/etc/frp
└── us.ini (见下面)

/etc/systemd/system
└── frpc@.service (见下面)
# /etc/frp/us.ini

[common]
server_addr = frp4.freefrp.net
server_port = 7000
token = freefrp.net
admin_port = 7400

[KiQ5NTFG]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 17244
use_encryption = true
use_compression = true

[Ncr5pFtE]
type = http
local_ip = 157.255.77.215
local_port = 80
subdomain = news
host_header_rewrite = news.baidu.com
为了让name和proxy不和其他用户冲突:
  • [KiQ5NTFG] 是随机生成的
  • remote_port = 17244 也是随机生成的
# /etc/systemd/system/frpc@.service

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

[Service]
User=nobody
ExecStart=/usr/local/bin/frpc -c /etc/frp/%i.ini
ExecReload=/usr/local/bin/frpc reload -c /etc/frp/%i.ini
LimitNOFILE=65536
RestartSec=5
Restart=always

[Install]
WantedBy=multi-user.target
# 复制ssh公钥
$ sudo ssh-copy-id pi@192.168.1.xxx

# 禁用密码登录
$ sudo vi /etc/ssh/sshd_config
(把PasswordAuthentication从yes改成no)
$ sudo systemctl restart sshd

# 启动frpc服务
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now frpc@us
$ sudo systemctl status frpc@us

# 远程ssh登录
$ ssh -p 17244 pi@frp4.freefrp.net

另外:上面的us.ini里定义了另一个http反向代理,其工作原理类似于nginx的proxy_pass:

http://news.d.freefrp.net -> http://news.baidu.com