有一个特殊的需求:需要在 4 层协议上实现域名转发
正常情况下域名在 http 层,
这个能实现吗?各位有没有好的方案
目前尝试过 nginx 和 haproxy 都实现不了
1
momocraft 2019-02-15 10:27:00 +08:00
什么叫 4 层协议和域名转发...
|
2
xenme 2019-02-15 10:32:07 +08:00
同没看懂,感觉像是反代
|
3
iAcn 2019-02-15 10:37:12 +08:00 via Android
四层 => 传输层?
域名转发 => 代理? |
4
CMGS 2019-02-15 10:40:59 +08:00
就是 tcp 层面转发吧。。
|
5
gam2046 2019-02-15 10:43:13 +08:00
http 层???
OSI 模型并没有所谓的 HTTP 层,HTTP 协议是属于第七层; 而第四层是属于 TCP/UDP 协议这样的; 同样的是,DNS 也属于七层; 所以并不懂你说的什么意思。 |
8
Y4ssss OP 原始需求:实现一个支持域名分发、负载均衡的 4 层高性能代理服务器,
关键点在:要支持在第四层,也就是传输层解析出域名 |
9
oott123 2019-02-15 11:04:04 +08:00
要解析出域名,你就变成 7 层了,当然你可以解析出来之后原样把 tcp 包发过去……
|
10
lychnis 2019-02-15 11:06:05 +08:00 via Android
大厂一般都有这些东西
没有就自己写一个 |
15
lychnis 2019-02-15 11:17:23 +08:00 via Android
负载均衡应该做过吧 ? nginx 之类能不能实现我不了解,网上查查
你要是一点背景知识都不会的话,,,这论坛上不可能说的清楚的 |
16
xihefeng 2019-02-15 11:17:24 +08:00 via Android
没有用的,你了解下 tcp 协议就知道,不可能,在第四层的时候,只有 ip 和端口的,没有域名的概念
|
17
gam2046 2019-02-15 11:18:41 +08:00
四层没有域名啊。
域名这个东西是七层搞出来的。同样,DNS 是工作的七层,目的是将七层自定义的“域名”与三层的 IP 做一个映射关系。 所以不存在“支持在第四层解析出域名”的情况。 而 IP 协议是工作在三层的,我们常说的 TCP/IP 是协议簇,而不是一个协议。TCP 与 IP 是分开的。 当信息流进入四层的 TCP 后,已经只存在 IP 信息了。 你这不是一个伪需求,而是一个不存在的需求。 不过四层是可以做负载均衡的。 所以,如果如是我理解错你的意思的话,那就是你对这些概念理解有一点偏差。 |
19
AstroProfundis 2019-02-15 11:28:39 +08:00
需求描述有点奇怪,楼上已经说了,在四层是不存在域名的概念的,解析出域名就变成一个七层的事情了
但我猜你需要的是类似 LVS 的东西? |
20
Y4ssss OP @AstroProfundis 难点主要在开启 TLS 时如何解析出 host,根据 host 进行分发,我了解的 LVS 主要是负载均衡功能
|
21
rockyou12 2019-02-15 12:26:06 +08:00
@Y4ssss 确实没读懂 lz 的需求,但 nginx 的反代是支持单机、对多个开启 tls 的域名分别进行反代的,我司生产也是这么用的
|
24
lty1993 2019-02-15 14:20:36 +08:00
我能想到的只有 SNI 了。如果客户端不支持 SNI 就没办法了。
|
25
lty1993 2019-02-15 14:21:03 +08:00
如果只是要根据 SNI 进行转发,我记得 HAProxy 应该是可以的。
|
27
reus 2019-02-15 14:52:49 +08:00
不就是中间人攻击嘛
如果可以实现,那还要 tls 之类的干嘛? 定期做 dns 查询,根据域名对应的 ip 做转发即可 当然也只是转发,想解析是不可能的 |
28
coderscala 2019-02-15 15:15:23 +08:00
DNS 负载均衡
|