단일 소켓에서 * BSD가 IPv4 및 IPv6 트래픽을 모두 수락하도록 강제


8

나는 많은 물건을 시험해 보았고 계속 빈손으로 왔습니다.

상황을 틀어 놓을 수 있습니다.

Plex Media Server (Plexpass)를 실행하는 FreeBSD에 * BSD Jail 설정이 있습니다. IPv6 액세스 권한이 있으며이를 사용하도록 구성되어 있습니다. Plex는 현재 단일 소켓 (이 동작을 지원하는 RFC가 있으므로 표준 내에 있음)을 사용하도록 빌드되었습니다. 보안 문제로 인해 BSD는 단일 소켓에서 두 프로토콜을 모두 수신하지 못하므로 IPv4 및 IPv6에 대해 다른 소켓을 사용하도록 명시 적으로 프로그래밍되지 않은 응용 프로그램은 소켓이 바인딩되지 않은 프로토콜과 통신 할 수 없습니다.

웹 브라우저에서 리터럴 IPv6 주소를 사용하여 관리 페이지에 액세스 할 수 있습니다. MyPlex는 원격 액세스를 위해 서버에 액세스 할 수 없습니다 (MyPlex는 현재 IPv4 만 지원합니다).

추가 정보:

root @ plexmediaserver_plexpass : / # netstat -a | grep 32400
tcp6 0 * .32400 . 들리다

나는 다음을 시도했다.

  • rc.conf에서 ipv6_ipv4mapping = "YES"설정
  • sysctl net.inet6.ip6.v6only = 0 설정
  • 주소 [:: 1] : 32400에서 포트의 TCP4를 32400에서 TCP6으로 프록시하기 위해 socat 사용
  • 주소 [Public-IPv6-Address] : 32400에서 포트의 TCP4를 32400에서 TCP6으로 프록시하기 위해 socat 사용 :: 32400
  • 상기의 혼합물

나는 절대 손실입니다. ISP가 IPv6 en-mass로 전환하기 시작했기 때문에 이것이 유럽의 많은 사람들에게 중요한 문제라는 것을 알고 있습니다. 그들에게는 그다지 심각하지는 않지만 그것은 나에게 무한한 좌절입니다. Plex에서 문제를 영구적으로 해결하는 상태에 대한 정보를 찾을 수 없습니다. 내가 알 수있는 한 가장 좋은 해결책은 여러 포트를 바인딩하고 MyPlex가 두 포트를 모두 가져 와서 트래픽을 가져올 수 있는지 여부에 따라 사용할 프로토콜을 결정하는 것입니다. 이것은 포럼의 문제입니다.

필자의 질문은 * BSD가 IPv6 소켓과 관련하여 RFC 표준을 준수하도록하는 다른 방법이 있는지 또는 완전히 지원을 중단했는지 여부입니다.

도움을 주시면 감사하겠습니다.


이것이 서버 결함에 대해 더 나은 질문입니까?
Nathanial Meek


이 질문에 가장 적합한 사이트는 확실하지 않습니다. unix.stackexchange.com 도 있습니다. 다양한 unix 변형의 정확한 차이점에 대한 답변을 얻을 수있는 가장 좋은 곳입니다. 정보를 검색하려는 첫 번째 시도는 Linux 고유의 결과를 보여 주었으며 이중 스택 소켓을 처리 할 때 Linux와 BSD간에 약간의 차이가있는 것으로 보입니다.
kasperd

답변:


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.