如何解决java.net.PortUnreachableException: ICMP 端口无法访问 - Kerberos 错误
我正在尝试运行启用了 Kerberos 身份验证的 kafka 集群。 kafka 代理、zookeeper 和 kdc(kerberos)服务器作为 docker 网络内的容器启动。
Kafka 代理端口 9092 已映射到主机,因此可以从主机网络调用代理。
由于客户端必须首先与 Kdc 交互以进行 kerberos 身份验证,因此 KDC 容器的端口 88 也已从主机公开并打开。
docker ps(用于 kdc 容器): a856bfe3f330 plaintext_kdc "/bin/sh -c '/usr/sb..." 11 小时前 Up 11 hours 0.0.0.0:88->88/tcp,:::88->88/tcp kdc
/etc/krb5.conf :
[realms]
TEST.CONFLUENT.IO = {
kdc = 10.0.1.207 --(tried localhost also here)
}
能够从主机 telnet localhost 88。 但是当我尝试从主机运行生产者时出现以下错误: (注意:能够在 docker 网络内生产和消费消息,从同一个 docker 网络内的客户端 docker 容器生产)
/home/ubuntu/kafka-docker-for-nifi-integration/kafka_install/kafka_2.11-2.4.0/bin/kafka-console-producer.sh --broker-list localhost:29092 --topic kafka- nifi-sasl_gssapi_plaintext --producer.config producer_kt.properties org.apache.kafka.common.KafkaException:无法构建 kafka 生产者 在 org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:432) 在 org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:298) 在 kafka.tools.ConsoleProducer$.main(ConsoleProducer.scala:45) 在 kafka.tools.ConsoleProducer.main(ConsoleProducer.scala) 引起:org.apache.kafka.common.KafkaException:javax.security.auth.login.LoginException:ICMP 端口不可达 在 org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:158) 在 org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:146) 在 org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:67) 在 org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:99) 在 org.apache.kafka.clients.producer.KafkaProducer.newSender(KafkaProducer.java:450) 在 org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:421) ... 3个 引起:javax.security.auth.login.LoginException:ICMP 端口不可达 在 jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:786) 在 jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:592) 在 java.base/javax.security.auth.login.LoginContext.invoke(LoginContext.java:726) 在 java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:665) 在 java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:663) 在 java.base/java.security.AccessController.doPrivileged(Native Method) 在 java.base/javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:663) 在 java.base/javax.security.auth.login.LoginContext.login(LoginContext.java:574) 在 org.apache.kafka.common.security.authenticator.AbstractLogin.login(AbstractLogin.java:60) 在 org.apache.kafka.common.security.kerberos.KerberosLogin.login(KerberosLogin.java:103) 在 org.apache.kafka.common.security.authenticator.LoginManager.(LoginManager.java:62) 在 org.apache.kafka.common.security.authenticator.LoginManager.acquireLoginManager(LoginManager.java:112) 在 org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:147) ... 8个 引起:java.net.PortUnreachableException: ICMP Port Unreachable 在 java.base/java.net.PlainDatagramSocketImpl.receive0(Native Method) 在 java.base/java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:181) 在 java.base/java.net.DatagramSocket.receive(DatagramSocket.java:814) 在 java.security.jgss/sun.security.krb5.internal.UDPClient.receive(NetClient.java:205) 在 java.security.jgss/sun.security.krb5.KdcComm$KdcCommunication.run(KdcComm.java:404) 在 java.security.jgss/sun.security.krb5.KdcComm$KdcCommunication.run(KdcComm.java:364) 在 java.base/java.security.AccessController.doPrivileged(Native Method) 在 java.security.jgss/sun.security.krb5.KdcComm.send(KdcComm.java:348) 在 java.security.jgss/sun.security.krb5.KdcComm.sendIfPossible(KdcComm.java:253) 在 java.security.jgss/sun.security.krb5.KdcComm.send(KdcComm.java:229) 在 java.security.jgss/sun.security.krb5.KdcComm.send(KdcComm.java:200) 在 java.security.jgss/sun.security.krb5.KrbAsReqBuilder.send(KrbAsReqBuilder.java:345) 在 java.security.jgss/sun.security.krb5.KrbAsReqBuilder.action(KrbAsReqBuilder.java:498) 在 jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:754)
谢谢 马亨德拉
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。