谢谢大家的回复,我的确没有将情况说清楚,我所说的服务器是具有公网IP地址的,而内网机器是没有公网IP地址的。我想要的就是:对“多台具有公网IP地址的服务器”的请求,其实会经过/落在“没有公网IP地址的内网机器”。
我最后使用fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.实现了我的需求。
比如说我有两台服务器,分别为server_1和server_2,按照Access your computer in LAN by SSH,我先在两台服务器上运行frps,然后在本地启动两个frpc(一个使用frpc.ini1,其中的server_addr是server_1的公网地址;另一个使用frpc.ini2,其中的server_addr是server_2的公网地址)。这样,我就实现了“不管是访问server_1还是server_2,最终都会落在本地机器”。
1
andyzhshg 2020-10-19 18:51:00 +08:00
任意一个 http 代理都行吧,比如 privoxy?
|
2
coderxy 2020-10-19 18:52:10 +08:00
SSR 就可以
|
3
ai277014717 2020-10-19 18:57:44 +08:00
透明代理
|
4
eudore 2020-10-19 19:14:13 +08:00
ssr 自带负载均衡
nginx 监听隧道代理的地址,tcp 转发给后端多个代理服务器 |
5
misaka19000 2020-10-19 19:21:57 +08:00
旁路由
|
6
farmer01 2020-10-19 19:29:45 +08:00
socks5 代理
http 代理 |
7
gxgxxn 2020-10-19 19:44:55 +08:00
代理服务器是不是可以记录客户端的访问记录?
|
8
opengps 2020-10-19 20:22:45 +08:00 via Android 1
楼主其实没说明白环境,我盲猜一下阿里云服务器集群环境,也欢迎其他阿里云问题咨询我:
统一入口,使用 SLB 统一出口,使用 NAT 网关 这样来保证,无论后端多少台机器,都是共同的出口和入口,对接其他系统,也可以轻松的配置一次白名单即可 |
9
JasonLaw OP @andyzhshg #1
@coderxy #2 @ai277014717 #3 @eudore #4 @misaka19000 #5 @farmer01 #6 @gxgxxn #7 @opengps #8 谢谢大家的回复,我在附言补充了信息。我最后使用 frp 来实现我的需求。 |
10
kerro1990 2020-10-19 23:07:10 +08:00
iptables 不就行了吗?搞这么复杂
|
11
snoopygao 2020-10-20 08:56:52 +08:00
frp 小心被爆破
|
13
wizardoz 2020-10-20 10:13:32 +08:00
配置一下 iptables 就可以了,将有工网 IP 的主机设置为其它主机的默认网关。
|
16
GM 2020-10-20 12:54:36 +08:00
@JasonLaw
希望在这些服务器上浏览网页时,使用一台内部机器作为代理,而不是服务器直接请求资源 “在这些服务器上浏览网页”,指的是在这些服务器上使用浏览器或者 curl 之类的访问外部页面吗? 如果是,那么“服务器是具有公网 IP 地址的,而内网机器是没有公网 IP 地址”,没外网 IP 的内物机器怎么请求外部页面? |
17
joesonw 2020-10-20 13:39:44 +08:00
你想问的是 DNAT 吗?
|
18
JasonLaw OP @GM #16
“在这些服务器上浏览网页”,指的是在这些服务器上使用浏览器或者 curl 之类的访问外部页面吗? 是的 “而内网机器是没有公网 IP 地址”其实不太恰当,应该是没有自己独自占有的公网 IP 地址才对。内网机器是在 NAT 后面的。 |
19
JasonLaw OP @joesonw #17 看了 aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya19hZGRyZXNzX3RyYW5zbGF0aW9uI0ROQVQ=,是的,我是想实现“publish a service located in a private network on a publicly accessible IP address”。
|
20
snoopygao 2020-10-20 14:29:24 +08:00
虽然我没看懂你的问题,但是使用 haproxy 或者 squid 应该是能解决的
|
21
GM 2020-10-20 15:16:57 +08:00
@JasonLaw 其实我碰到一个类似的场景,就是做公众号开发的时候,新增一台服务器就要到公众号后台添加一次 IP 白名单,非常麻烦且恶心( TX 看过来:凸),最终我的做法找一台服务器统一做出口,公众号那边只需要配置一次 IP 白名单即可,方法如下:
在出口服务器安装 nginx,配置监听 8888 端口成代理服务器,把所有请求转发到 https://api.weishit.扣扣.com 其他所有需要访问公众号接口的服务,统一修改成使用上面配置好的代理服务器,比如本来需要请求 https://api.weishit.扣扣.com/login/sns,全部改成请求 http://内网代理 IP:8888/login/sns 这个方法用了很久了,很好用。 |