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