服务器问答

如何在 4 层协议的基础上实现域名转发
0
2021-05-11 15:04:55
idczone

有一个特殊的需求:需要在 4 层协议上实现域名转发
正常情况下域名在 http 层,

这个能实现吗?各位有没有好的方案
目前尝试过 nginx 和 haproxy 都大带宽服务器实现不了



什么叫 4 层协议和域名转发...

同没看懂,感觉像是反代

四层 => 传输层?
域名转发 => 代理?

就是 tcp 层面转发吧。。

http 层???
OSI 模型并没有所谓的 HTTP 层,HTTP 协议是属于第七层;
而第四层是属于 TCP/UDP 协议这样的;
同样的是,DNS 也属于七层;
所以并不懂你说的什么意思。

是的

实现一个支持域名分发、负载均衡的 4 层高性能代理服务器,要支持在第四层解析出域名

原始需求:实现一个支持域名分发、负载均衡的 4 层高性能代理服务器,
关键点在:要支持在第四层,也就是传输层解析出域名

要解析出域名,你就变成 7 层了,当然你可以解析出来之后原样把 tcp 包发过去……

大厂一般都有这些东西
没有就自己写一个

开启了双向 TLS 验证,没有客户端密钥时,怎么解析

能提供下思路吗

sni 试试? tls 不太熟,不确定 sni 加密了没,握手的时候如果没有 esni 应该是没加密的

负载均衡应该做过吧 ? nginx 之类能不能实现我不了解,网上查查
你要是一点背景知识都不会的话,,,这论坛上不可能说的清楚的

没有用的,你了解下 tcp 协议就知道,不可能,在第四层的时候,只有 ip 和端口的,没有域名的概念

四层没有域名啊。
域名这个东西是七层搞出来的。同样,DNS 是工作的七层,目的是将七层自定义的“域名”与三层的 IP 做一个映射关系。
所以不存在“支持在第四层解析出域名”的情况。
而 IP 协议是工作在三层的,我们常说的 TCP/IP 是协议簇,而不是一个协议。TCP 与 IP 是分开的。
当信息流进入四层的 TCP 后,已经只存在 IP 信息了。
你这不是一个伪需求,而是一个不存在的需求。
不过四层是可以做负载均衡的。
所以,如果如是我理解错你的意思的话,那就是你对这些概念理解有一点偏差。


了解了,谢谢 2 位解惑

需求描述有点奇怪,楼上已经说了,在四层是不存在域名的概念的,解析出域名就变成一个七层的事情了
但我猜你需要的是类似 LVS 的东西?

难点主要在开启 TLS 时如何解析出 host,根据 host 进行分发,我了解的 LVS 主要是负载均衡功能

确实没读懂 lz 的需求,但 nginx 的反代是支持单机、对多个开启 tls 的域名分别进行反代的,我司生产也是这么用的

可以贴下 nginx 的 tls 域名反代 配置信息吗

这边有一点不同,代理服务器上没有证书,TLS 握手不能成功,所以正常情况下取不到域名,所以才有上述需求

我能想到的只有 SNI 了。如果客户端不支持 SNI 就没办法了。

如果只是要根据 SNI 进行转发,我记得 HAProxy 应该是可以的。

谢谢,我去试试

不就是中间人攻击嘛
如果可以实现,那还要 tls 之类的干嘛?
定期做 dns 查询,根据域名对应的 ip 做转发即可
当然也只是转发,想解析是不可能的

DNS 负载均衡

没证书别想了……就像 27 楼说的,你这是做中间人攻击

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服