1
rrfeng 2022-11-12 16:42:13 +08:00 via Android
listen 后面加 proxy_protocol
这个 on 改成 off 。 |
2
cpstar 2022-11-12 16:44:23 +08:00
你这个带 IP 的需求,基本上就,额,需要看协议。
HTTP 可以带 X-FORWARDED-FOR 塞进 HEADER 里告诉服务器客户的 IP ,但是确实无法修改 IP 包里的源 IP 实现服务器的 IP 认证。同样的,如果 RDP 协议只认 TCP 包里的源 IP 。 然后如果 Proxy_Protocol on 的时候,RDP 服务器拒绝了链接,那只能说,RDP 不支持这个插帧。 https://www.jianshu.com/p/cc8d592582c9 |
3
ZeroClover 2022-11-12 16:44:36 +08:00
RDP 服务端应该不支持 PROXY Protocol ,做 IP Transparent 吧
|
4
1260475686 2022-11-12 16:45:17 +08:00
nginx 四层开了 proxy_protocol 那后端肯定也得支持对 proxy_protocol 的接入呀
|
5
ihciah 2022-11-12 17:37:38 +08:00 via iPhone
转发常见的有 4 层和 7 层,7 层可以用 http 头携带原始请求者 ip ,4 层不太容易,可以用 SO_ORIGINAL_DST 。不过无论是哪种,都需要转发目标服务手动感知原始 ip 。
你这个需求其实是三层转发,只有类似 iptables 这种面向 ip 包的手段能搞,一般都是内核态搞,ng 这种不可能的。 iptables 直接配一个 SNAT+DNAT 应该就 ok 。 |
6
beyondgamp 2022-11-12 19:54:52 +08:00 via iPhone
nginix 功能很强 但要搞明白还得自己花时间
|
7
Tianao 2022-11-12 20:01:09 +08:00
TCP Option Address (TOA) 了解一下?
|
8
salmon5 2022-11-12 21:56:01 +08:00 1
|
9
salmon5 2022-11-12 21:58:19 +08:00
TOA 还是算了,几乎已经没价值了。
|
10
salmon5 2022-11-12 22:04:49 +08:00
|
11
cus 2022-11-12 22:58:31 +08:00
开启代理协议后需要后端服务支持代理协议。
> The Proxy Protocol works by adding a header that contains the client’s IP address to the beginning of a TCP connection. https://www.haproxy.com/blog/use-the-proxy-protocol-to-preserve-a-clients-ip-address https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol |
12
bugfan 2022-11-12 23:06:44 +08:00
|
13
bugfan 2022-11-12 23:06:59 +08:00
vpc -> vnc
|
16
loovezsh 2022-11-15 10:23:43 +08:00
要 Windows 获取到真实 IP ,那需要 Windows 那边对 proxy_protocol 支持才行。因为 proxy_protocol 会进行特殊封包的。这是 proxy_protocol 的文档: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt?spm=a2c4g.11186623.0.0.618564e8nKffLD&file=proxy-protocol.txt
|