如何在 4 层协议的基础上实现域名转发

2019-02-15 10:20:38 +08:00
 Y4ssss

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

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

6720 次点击
所在节点    服务器
29 条回复
momocraft
2019-02-15 10:27:00 +08:00
什么叫 4 层协议和域名转发...
xenme
2019-02-15 10:32:07 +08:00
同没看懂,感觉像是反代
iAcn
2019-02-15 10:37:12 +08:00
四层 => 传输层?
域名转发 => 代理?
CMGS
2019-02-15 10:40:59 +08:00
就是 tcp 层面转发吧。。
gam2046
2019-02-15 10:43:13 +08:00
http 层???

OSI 模型并没有所谓的 HTTP 层,HTTP 协议是属于第七层;
而第四层是属于 TCP/UDP 协议这样的;
同样的是,DNS 也属于七层;

所以并不懂你说的什么意思。
Y4ssss
2019-02-15 10:44:32 +08:00
@iAcn @CMGS 是的
Y4ssss
2019-02-15 10:51:52 +08:00
@gam2046 实现一个支持域名分发、负载均衡的 4 层高性能代理服务器,要支持在第四层解析出域名
Y4ssss
2019-02-15 10:53:07 +08:00
原始需求:实现一个支持域名分发、负载均衡的 4 层高性能代理服务器,
关键点在:要支持在第四层,也就是传输层解析出域名
oott123
2019-02-15 11:04:04 +08:00
要解析出域名,你就变成 7 层了,当然你可以解析出来之后原样把 tcp 包发过去……
lychnis
2019-02-15 11:06:05 +08:00
大厂一般都有这些东西
没有就自己写一个
nadoo
2019-02-15 11:06:38 +08:00
看下 glider ?
Y4ssss
2019-02-15 11:10:08 +08:00
@oott123 开启了双向 TLS 验证,没有客户端密钥时,怎么解析
Y4ssss
2019-02-15 11:10:36 +08:00
@lychnis 能提供下思路吗
oott123
2019-02-15 11:13:42 +08:00
@Y4ssss sni 试试? tls 不太熟,不确定 sni 加密了没,握手的时候如果没有 esni 应该是没加密的
lychnis
2019-02-15 11:17:23 +08:00
负载均衡应该做过吧 ? nginx 之类能不能实现我不了解,网上查查
你要是一点背景知识都不会的话,,,这论坛上不可能说的清楚的
xihefeng
2019-02-15 11:17:24 +08:00
没有用的,你了解下 tcp 协议就知道,不可能,在第四层的时候,只有 ip 和端口的,没有域名的概念
gam2046
2019-02-15 11:18:41 +08:00
四层没有域名啊。

域名这个东西是七层搞出来的。同样,DNS 是工作的七层,目的是将七层自定义的“域名”与三层的 IP 做一个映射关系。

所以不存在“支持在第四层解析出域名”的情况。

而 IP 协议是工作在三层的,我们常说的 TCP/IP 是协议簇,而不是一个协议。TCP 与 IP 是分开的。

当信息流进入四层的 TCP 后,已经只存在 IP 信息了。

你这不是一个伪需求,而是一个不存在的需求。

不过四层是可以做负载均衡的。

所以,如果如是我理解错你的意思的话,那就是你对这些概念理解有一点偏差。
Y4ssss
2019-02-15 11:24:51 +08:00
@xihefeng
@gam2046 了解了,谢谢 2 位解惑
AstroProfundis
2019-02-15 11:28:39 +08:00
需求描述有点奇怪,楼上已经说了,在四层是不存在域名的概念的,解析出域名就变成一个七层的事情了

但我猜你需要的是类似 LVS 的东西?
Y4ssss
2019-02-15 11:40:12 +08:00
@AstroProfundis 难点主要在开启 TLS 时如何解析出 host,根据 host 进行分发,我了解的 LVS 主要是负载均衡功能

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

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

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

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

© 2021 V2EX