VPN 뒤에서 Plex 원격 접속이 실패하는 이유와 해결 방법
VPN 뒤의 Plex 원격 접속에는 세 가지 연결 고리가 필요합니다. 공급자 측 포트 포워딩, 로컬 pf 리디렉션, 그리고 Plex에 입력하는 동일한 외부 포트입니다.
VPN이 기본 경로를 넘겨받는 순간 원격 접속은 사용할 수 없음으로 바뀌지만, 같은 서버는 아무 불평 없이 LAN으로 계속 스트리밍합니다. Plex 로그에 이 변화를 설명하는 내용이 없는 것은 망가진 부분이 Plex가 아니라, Plex가 트래픽이 더 이상 도착하지 않는 주소를 게시할 뿐이기 때문입니다. 하나의 공인 주소를 고객 사이에 공유하는 공급자는 포트 하나를 당신의 터널 주소로 전달하고, 당신의 컴퓨터에 있는 무언가는 여전히 그 포트를 Plex 리스너로 옮겨야 합니다. 연결 가능성 테스트가 초록색이 되려면 세 연결 고리가 모두 하나의 외부 포트에 합의해야 합니다.
체인에는 세 개의 고리가 있고, Plex는 마지막 하나만 봅니다
공급자는 공인 주소를 소유하고 그 포트 중 하나를 당신의 터널 주소로 매핑하며, 당신의 컴퓨터는 그 포트로 들어오는 모든 것을 받아 Plex 리스너로 리디렉션합니다. 리스너는 보통 루프백 포트 32400에 있습니다. 그다음 Plex에 외부 포트 번호를 알려 주어 Plex 자체 점검이 외부 세계가 다이얼하는 것과 일치하게 합니다.
어느 한 고리만 끊어도 웹 인터페이스는 원격 접속을 사용할 수 없음으로 보고하며, 어느 고리가 실패했는지는 전혀 알려 주지 않습니다. 이 침묵 때문에 사람들은 서버를 다시 시작하고, 앱을 다시 설치하고, 설정을 몇 번이고 토글하지만 바늘은 움직이지 않습니다. 세 고리는 독립적으로 실패하며, 오래된 터널 주소를 겨냥한 포워딩, Ethernet 인터페이스만 덮는 리디렉션, 그리고 여전히 32400을 들고 있는 Plex 필드는 모두 같은 빨간 텍스트를 만듭니다. 추측하는 대신 리스너에서 바깥으로 작업하면, 실패한 고리는 보통 일 분 안에 스스로를 밝힙니다.
첫 번째 고리: VPN 공급자에서 포트를 포워딩하세요
공급자의 포트 포워딩 페이지를 열고 매핑을 추가하세요. 대부분의 구현은 무작위 외부 포트를 주고 내부 포트를 고르게 하므로, 할당을 받아들이고 클라이언트가 현재 가진 터널 주소로 향하게 하세요. 이후의 모든 단계가 그것을 정확히 반복하므로 그 번호를 적어 두세요.
재접속할 때 매핑을 회전하는 공급자가 이 구성이 저녁 하나를 버티고 죽는 흔한 이유입니다. 어떤 곳은 고정 포트를 요청하게 해 주고, 다른 곳은 핸드셰이크마다 새로 할당하므로, 다른 무엇을 건드리기 전에 현재 매핑 페이지를 읽으세요.
두 번째 고리: pf 앵커로 포트를 리디렉션하세요
macOS에서 리디렉션은 pf 앵커에 속하며, 패킷을 실을 수 있는 인터페이스마다 규칙 하나입니다. 터널 규칙을 먼저, Ethernet 규칙을 다음에 쓰고 둘 다 같은 외부 포트를 쓰지 않으면 장애 조치 중 Wi-Fi로 도착한 트래픽은 아무 데도 착륙하지 않습니다.
# /etc/pf.anchors/plex.forward
rdr pass on tun0 inet proto tcp from any to any port 41893 -> 127.0.0.1 port 32400
rdr pass on en0 inet proto tcp from any to any port 41893 -> 127.0.0.1 port 32400
앵커 파일만으로는 아무 일도 하지 않으므로 기본 구성이 그것을 참조하고 로드해야 합니다. 이 두 줄을 /etc/pf.conf 에, 기존 리디렉션 규칙보다 앞에 넣은 다음 다시 로드하고 커널이 실제로 무엇을 받아들였는지 읽어 보세요.
rdr-anchor "plex"
load anchor "plex" from "/etc/pf.anchors/plex.forward"
sudo pfctl -vnf /etc/pf.anchors/plex.forward
sudo pfctl -f /etc/pf.conf
sudo pfctl -s nat
알 수 없는 포트에 대한 구문 불평은 편집에서 자리 표시자가 살아남았다는 뜻입니다. 빈 nat 테이블은 앵커가 한 번도 로드되지 않았다는 뜻이고, 현재 macOS에서 pf가 기본으로 활성화되어 있지 않으므로 sudo pfctl -E 는 수정의 일부이지 선택적 추가 기능이 아닙니다. 재부팅할 때마다 그리고 매핑을 바꿀 때마다 앵커를 다시 로드하세요. 앵커 파일을 버전 관리 아래 두면 공급자 포트 변경이 재발견 작업이 아니라 한 줄 편집이 됩니다.
세 번째 고리: Plex 안에서 같은 포트를 고정하세요
Plex에서 설정을 열고, 서버, 원격 접속 순서로 들어가, 포트를 직접 지정할 수 있는 상자를 체크하세요. 32400 대신 공급자의 외부 포트를 입력하고, 그다음 연결 가능성 테스트를 실행하세요. 최신 빌드는 이 컨트롤을 예전 Connect 페이지에서 옮겼으므로, 필드가 가이드가 말하는 곳에 없으면 원격 접속 아래를 보세요.
LAN에서 테스트하는 것은 아무것도 증명하지 못합니다. 같은 Wi-Fi의 노트북은 서버에 직접 닿으므로 공개 경로가 죽어 있어도 점검은 성공합니다. 셀룰러 데이터의 휴대폰이나 네트워크 밖의 아무 호스트를 사용해 거기서 공인 주소와 외부 포트를 다이얼하세요.
Plex를 탓하기 전에 각 고리를 확인하세요
리스너에서 시작해 바깥으로 나가세요. Plex가 LAN 주소에만 바인딩되어 있으면 루프백을 향한 리디렉션을 무시하므로, 첫 명령은 어디서 듣고 있는지 증명하는 명령입니다.
sudo lsof -nP -iTCP:32400 -sTCP:LISTEN
다음으로 리디렉션이 존재하고 공급자에게 준 포트와 일치하는지 증명하세요. nat 테이블은 두 인터페이스 모두에서 같은 외부 포트를 보여야 합니다.
sudo pfctl -s nat | grep 41893
nc -vz 203.0.113.42 41893
그 마지막 명령은 Mac이 아니라 네트워크 밖에서 실행하세요. 셀룰러에서 TCP 연결이 완료되는데 Plex가 여전히 사용할 수 없음을 보여 준다면, 포트는 리스너에 도달하고 있고 남은 용의자는 Plex 필드에 입력한 번호입니다. 아무것도 전혀 응답하지 않는다면 끊김은 상류, 즉 공급자 매핑, 터널 주소, 또는 pf가 활성화되지 않은 데에 있습니다.