Truy cập từ xa chuyển sang không khả dụng ngay khi VPN chiếm tuyến mặc định, trong khi cùng máy chủ đó vẫn phát trực tuyến tới LAN mà không phàn nàn. Không có gì trong nhật ký Plex giải thích sự thay đổi, vì Plex không phải phần bị hỏng: nó công bố một địa chỉ mà lưu lượng không còn đến. Nhà cung cấp chia sẻ một địa chỉ công cộng giữa các khách hàng sẽ chuyển tiếp một cổng tới địa chỉ đường hầm của bạn, và một thứ gì đó trên chính máy của bạn vẫn phải chuyển cổng đó tới trình nghe của Plex. Cả ba mắt xích phải thống nhất về một cổng ngoài trước khi bài kiểm tra khả năng tiếp cận chuyển sang xanh.

Chuỗi có ba mắt xích, và Plex chỉ nhìn thấy mắt xích cuối

Nhà cung cấp sở hữu một địa chỉ công cộng và ánh xạ một trong các cổng của nó tới địa chỉ đường hầm của bạn. Máy của bạn lấy mọi thứ đến trên cổng đó và chuyển hướng tới trình nghe của Plex, thường nằm ở cổng vòng lặp 32400. Sau đó Plex được cho biết số cổng ngoài để phép dò của nó khớp với thứ mà thế giới bên ngoài quay số.

Đứt bất kỳ một mắt xích nào và giao diện web báo truy cập từ xa là không khả dụng, không hề gợi ý mắt xích nào đã hỏng. Sự im lặng đó là lý do người ta khởi động lại máy chủ, cài lại ứng dụng và bật tắt cài đặt hết lần này đến lần khác mà kim không nhích. Ba mắt xích hỏng độc lập: một chuyển tiếp nhắm tới địa chỉ đường hầm cũ, một chuyển hướng chỉ bao phủ giao diện Ethernet, và một trường Plex vẫn giữ 32400 đều tạo ra cùng một dòng chữ đỏ. Hãy làm việc từ trình nghe ra ngoài thay vì đoán, và mắt xích hỏng thường tự gọi tên trong vòng một phút.

Mắt xích thứ nhất: chuyển tiếp một cổng tại nhà cung cấp VPN

Mở trang chuyển tiếp cổng của nhà cung cấp và thêm một ánh xạ. Hầu hết các triển khai cho bạn một cổng ngoài ngẫu nhiên và để bạn chọn cổng trong, vì vậy hãy chấp nhận phân bổ và trỏ nó tới địa chỉ đường hầm mà ứng dụng khách của bạn đang giữ. Ghi lại con số đó, vì mọi bước sau đều lặp lại chính xác nó.

Các nhà cung cấp xoay ánh xạ khi kết nối lại là lý do thường gặp khiến cấu hình này sống được một buổi tối rồi chết. Một số cho phép bạn yêu cầu một cổng ổn định, số khác phân bổ cổng mới ở mỗi lần bắt tay, vì vậy hãy đọc trang ánh xạ hiện tại trước khi chạm vào bất cứ thứ gì khác.

Mắt xích thứ hai: chuyển hướng cổng bằng một neo pf

Trên macOS, chuyển hướng thuộc về một neo pf, một quy tắc cho mỗi giao diện có thể mang gói tin. Viết quy tắc đường hầm trước và quy tắc Ethernet sau, với cùng cổng ngoài trên cả hai, nếu không lưu lượng đến qua Wi-Fi trong lúc chuyển đổi dự phòng sẽ không đáp xuống đâu cả.

# /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

Tệp neo tự nó không làm gì cả; cấu hình chính phải tham chiếu và nạp nó. Đặt hai dòng này vào /etc/pf.conf trước mọi quy tắc chuyển hướng hiện có, sau đó nạp lại và đọc lại xem hạt nhân thực sự đã chấp nhận gì.

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

Một lời phàn nàn về cú pháp liên quan đến cổng không xác định nghĩa là một trình giữ chỗ đã sống sót qua chỉnh sửa của bạn. Bảng nat trống nghĩa là neo chưa bao giờ được nạp, và vì pf không được bật mặc định trên macOS hiện tại, sudo pfctl -E thuộc về phần sửa chữa chứ không phải các tiện ích tùy chọn. Nạp lại neo sau mỗi lần khởi động lại và sau mỗi lần thay đổi ánh xạ. Giữ tệp neo trong kiểm soát phiên bản để một thay đổi cổng của nhà cung cấp trở thành chỉnh sửa một dòng thay vì một cuộc khám phá lại.

Mắt xích thứ ba: ghim cùng cổng đó bên trong Plex

Trong Plex, mở Cài đặt, rồi Máy chủ, rồi Truy cập từ xa, và đánh dấu ô cho phép bạn chỉ định cổng bằng tay. Nhập cổng ngoài của nhà cung cấp thay vì 32400, rồi để bài kiểm tra khả năng tiếp cận chạy. Các bản dựng mới hơn đã chuyển điều khiển này khỏi trang Connect cũ, vì vậy hãy xem dưới Truy cập từ xa nếu trường không nằm ở nơi một hướng dẫn khẳng định.

Kiểm tra từ LAN không chứng minh được gì. Một máy tính xách tay trên cùng Wi-Fi đến máy chủ trực tiếp, nên phép dò thành công ngay cả khi đường công cộng đã chết. Hãy dùng điện thoại có dữ liệu di động, hoặc bất kỳ máy chủ nào bên ngoài mạng của bạn, và quay số địa chỉ công cộng cùng cổng ngoài từ đó.

Xác nhận từng mắt xích trước khi đổ lỗi cho Plex

Bắt đầu từ trình nghe và làm việc ra ngoài. Nếu Plex chỉ gắn với địa chỉ LAN, nó sẽ bỏ qua một chuyển hướng nhắm tới vòng lặp, vì vậy lệnh đầu tiên là lệnh chứng minh nó lắng nghe ở đâu.

sudo lsof -nP -iTCP:32400 -sTCP:LISTEN

Tiếp theo, chứng minh chuyển hướng tồn tại và khớp với cổng bạn đã cấp cho nhà cung cấp. Bảng nat phải hiển thị cùng cổng ngoài trên cả hai giao diện.

sudo pfctl -s nat | grep 41893
nc -vz 203.0.113.42 41893

Chạy lệnh cuối đó từ bên ngoài mạng, không phải từ máy Mac. Nếu kết nối TCP hoàn tất từ dữ liệu di động trong khi Plex vẫn hiển thị không khả dụng, cổng đang đến được trình nghe và nghi phạm còn lại là con số đã nhập vào trường Plex. Nếu không có gì trả lời, chỗ đứt nằm ở phía trên: ánh xạ của nhà cung cấp, địa chỉ đường hầm, hoặc pf chưa được bật.

Bài viết liên quan