[英]what is the disadvantage using hostSNI(*) in traefik TCP route mapping
現在我使用HostSNI(
* )
來映射 TCP 服務,如mysql\\postgresql...
in traefik 2.2.1 in Kubernetes cluster v1.18 。 因為我在我的本地機器上並且沒有有效的認證。 這是配置:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
name: mysql-ingress-tcp-route
namespace: middleware
spec:
entryPoints:
- mysql
routes:
- match: HostSNI(`*`)
services:
- name: report-mysqlha
port: 3306
配置在我的本地機器上工作正常。 但我仍然想知道使用HostSNI(
)
映射策略的HostSNI(
。 使用HostSNI(
)
而不是域名有什么缺點? 是否可以在我的本地機器上使用假域名?
截至最新的 Traefik 文檔(此時為2.4 ):
如果 HTTP 路由器和 TCP 路由器都偵聽相同的入口點,則 TCP 路由器將在 HTTP 路由器之前應用
需要注意的是,Server Name Indication 是 TLS 協議的擴展。 因此,只有 TLS 路由器才能使用該規則指定域名。 但是,非 TLS 路由器必須明確地使用帶有 *(每個域)的規則來聲明每個非 TLS 請求都將由路由器處理。
因此,回答您的問題:
HostSNI(`*`)
是在沒有tls 的ingressRouteTCP
下使用ingressRouteTCP
的唯一合理方法——因為您明確要求使用 TCP 路由器,而 TCP 不使用 TLS。
ingressRouteTCP
和HostSNI(`some.fqdn.here`)
上取得了不同的成功,並帶有一個tls:
部分,但它似乎是2 中受支持的配置entrypoint
(即mysql
)的任何流量都將通過此ingressRouteTCP
路由
ingressRoute
用相同的entrypoint
,與ingressRouteTCP
將優先為每1entrypoint: mysql
路由多個不同的mysql
服務entrypoint: mysql
,您將無法基於此配置對於那些需要具有 TLS 直通和 SNI 路由的 TCP 示例的人
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
name: test-https
namespace: mynamespace
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: HostSNI(`my.domain.com`)
services:
- name: myservice
port: 443
tls:
passthrough: true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.