Frp 内网穿透本地 PostgreSQL 的一个小问题

53 天前
 Koril

问题简述

frp 穿透内网的 PG 库,pg_hba.conf 似乎没生效。


机器

公网 Debian12

本地 Window10


前置条件

公网配置好了 Frps

本地配置好了 Frpc

本地安装好了 PostgreSQL 数据库


需求

  1. 本地 localhost 可以正常登录 postgres 这个超级用户

  2. 通过公网访问内网 PG 时,不能使用 postgres 这个用户,仅仅能用 remote_user 这个用户登录,访问 remote_db 数据库。


配置

我在 pg_hba.conf 的配置如下:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

# 这两行是我自己加的
host    remote_db       remote_user     0.0.0.0/0               scram-sha-256
host    all             all             0.0.0.0/0               reject

问题

我发现公网通过 frp 连接时,依然可以登录 postgres 这个账号,我猜测是因为 frp 穿透以后,PG 把来自公网远程的连接当作了 localhost ?(我是小白,只是会用 frp ,不了解原理)

然而,我用 192.168.0.xxx 的局域网机器测试,局域网的机器只能用 remote_user 登录,这确实符合预期。

我看了文档: https://gofrp.org/zh-cn/docs/features/common/realip/ 里面写了如何把真实 IP 传给 Nginx ,那么 PG 该怎么做呢?

请问各位大佬,有什么好的解决方案么?

729 次点击
所在节点    问与答
3 条回复
lesterholy
53 天前
一个想法,加一台机器放 frpc. Pg 对 frpc ip 做限制,只允许非 postgres 用户登陆,其他内网放开,直连,不走 frpc
yinmin
53 天前
本机的 frpc 配置中,连接 pg 的 ip 地址不要用 127.0.0.1 改成本机的 192.168.0.x 地址试试
Koril
51 天前
@yinmin 厉害,有效果,请问这是为什么呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1083677

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX