클라이언트가 인터넷을 통해 서버와 통신 할 수있는 Akka 프로그램으로 포트 포워딩을 수행하려고합니다. 내 라우터를 구성하고 포트 포워딩 메커니즘이 작동하지만 Akka에 문제가있는 것 같습니다.Akka 포트 전달
문제는 클라이언트가 원격 액터를 서버에서 가져올 수 없다는 것입니다. 받는 사람이 다른 서버 쪽에서 오류가 계속 발생합니다. 클라이언트는 "akka.tcp://[email protected]:5150/user/remote"
을 통해 원격 액터를 얻고 있습니다. 여기서 67.18.67.18
은 내 글로벌 IP 주소입니다. 그런 다음 원격 액터는 "akka.tcp://[email protected]6:5150/user/remote"
경로에서 원격 처리합니다. 여기서 192.168.0.106
은 서버의 로컬 IP입니다. 클라이언트가 동일한 경로를 사용하여 원격 액터에 액세스해야한다는 것을 알고 있지만 public-localname
을 정의했지만 서버는 여전히 글로벌 IP를 로컬 IP로 변환하지 않거나 글로벌 IP를 통해 액세스를 허용하지 않습니다. 거기에 어떤 해결 방법이 있습니까? 아래는 서버의 application.conf
입니다.
akka {
loglevel = "INFO"
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = ""
port = 5150
public-hostname = "67.18.67.18"
}
log-sent-messages = on
log-received-messages = on
}
}
은 그 문서를 놓쳤다. 나는 어딘가 전에 그것을 본 것을 기억합니다. 나는 public-hostname이 올바른 메커니즘이라고 생각한다. 고마워. – Ginsan
그런데 conf에 로컬 주소를 얻는 방법을 알고 있습니까? hostname = ""이 (가) 자동으로 InetAddress.getLocalHost.getHostAddress를 사용한다는 것을 알고 있습니다. 그러나 bind-hostname의 경우에는 작동하지 않습니다. 나는 bind-hostname = "InetAddress.getLocalHost.getHostAddress"를 시도했지만 작동하지 않습니다. conf에 주소를 명시 적으로 정의하고 싶지는 않습니다. 고맙습니다. – Ginsan
구성 파일에 선택적으로 시스템 속성 재정의를 기본값으로 제공하고 시작할 때이 값을 시스템 속성으로 제공하십시오. https://github.com/typesafehub/config#optional-system-or-env-variable-overrides –