Một laptop giữ đường hầm, phần còn lại của ngôi nhà muốn cùng quyền truy cập, và lần thử đầu tiên là trỏ mọi thứ vào chiếc máy đang kết nối. Nó thất bại vì những lý do không liên quan gì đến VPN: máy host nhận gói tin phải chuyển tiếp gói tin, viết lại nguồn của nó và bảo đảm các phản hồi tìm được đường quay về. Thiếu một trong ba thứ đó, chiếc laptop đang kết nối vẫn hoạt động trong khi mọi thiết bị khác không nhận được phản hồi. Giải pháp là một thiết kế định tuyến, không phải một cài đặt của client.

Vì sao trỏ thiết bị vào máy host thất bại

Một máy host nhận gói tin được gửi đến một mạng từ xa sẽ trở thành router trong khoảnh khắc đó, dù có ai đã cấu hình nó như vậy hay không. Chuyển tiếp mặc định bị tắt trên Linux và trên Windows trừ khi một tính năng bật nó lên. Dịch địa chỉ quan trọng vì phía từ xa phải biết gửi phản hồi đi đâu, và một địa chỉ LAN riêng không có ý nghĩa gì với nó. Tuyến quay về là mảnh thứ ba, và đó là mảnh người ta quên khi lần ping đầu tiên có vẻ thành công.

Hãy chẩn đoán theo thứ tự đó thay vì bật tắt cài đặt một cách ngẫu nhiên. Mỗi mảnh thiếu tạo ra một triệu chứng hơi khác.

Bật chuyển tiếp và dịch địa chỉ trên máy host

Hai thay đổi trên máy host đang kết nối bao trùm hai mảnh đầu tiên: bật chuyển tiếp IPv4 và dịch lưu lượng LAN sang giao diện đường hầm.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Lưu giá trị sysctl trong một tệp dưới /etc/sysctl.d, và kiểm tra lại quy tắc masquerade sau khi khởi động lại, vì phần giao diện của tường lửa có thể xóa các chuỗi tùy chỉnh. Trên Windows, tính năng chia sẻ thực hiện cả hai bước, nhưng nó cũng gán lại địa chỉ cho bộ điều hợp LAN sang một subnet cố định và xóa gateway của nó, điều này phá vỡ địa chỉ tĩnh và chuyển tiếp cổng. Khôi phục tuyến của router tới máy host ở địa chỉ mới trước khi kết luận rằng việc chia sẻ đã thất bại. Sau đó quan sát bộ đếm của quy tắc tăng lên trong khi thiết bị thứ hai gửi lưu lượng.

Cho LAN một tuyến tồn tại qua các lần khởi động lại

Các thiết bị khác cần một tuyến tới tiền tố từ xa, và hai cách cung cấp tuyến đó khác nhau về phạm vi ảnh hưởng.

ip route add 10.8.0.0/24 via 192.168.1.20 dev eth0

Trỏ gateway mặc định của một client vào máy host sẽ đưa toàn bộ lưu lượng của nó qua máy host, kể cả in ấn cục bộ và chia sẻ tệp, nên những thứ không liên quan dừng lại khi máy host ngủ. Thêm một tuyến cụ thể trên router cho tiền tố từ xa thì hẹp hơn: chỉ những đích nằm sau đường hầm đi tới chiếc máy đang kết nối, và phần còn lại của LAN vẫn hoạt động. Các subnet ở trên chỉ là ví dụ, nên hãy thay bằng dải LAN và dải đường hầm của bạn. Dù thế nào, hãy thử từ thiết bị thứ hai khi đường hầm bật rồi tắt.

Để ý MTU trước khi đổ lỗi cho đường hầm

Đường hầm thu nhỏ kích thước gói tin khả dụng, và thiết bị thứ hai không hề biết. Các lần truyền lớn và bắt tay TLS bị khựng trong khi các yêu cầu nhỏ thành công.

ping -M do -s 1400 10.8.0.5

Một phản hồi chứng minh rằng kích thước đó đi qua tuyến mà không bị phân mảnh; hết thời gian chờ nghĩa là phần chi phí đóng gói đã đẩy gói tin vượt quá MTU của đường hầm. Hạ MTU trên giao diện chia sẻ hoặc giới hạn kích thước phân đoạn tối đa trên bộ chuyển tiếp, rồi lặp lại phép thử tương tự. Hãy thử cùng kích thước ở phía LAN trước, vì lỗi cục bộ chỉ ra LAN chứ không phải đường hầm. Ghi lại kích thước hoạt động, vì thay đổi nhà cung cấp hoặc đường hầm về sau có thể làm nó dịch đi.

Với một thiết bị thêm, chia sẻ từ máy host là đủ. Với cả gia đình, hãy đặt tuyến trên router. Khi quyền truy cập phải tồn tại dù laptop rời đi cùng bạn, bản thân đường hầm nên nằm trên một gateway chuyên dụng.

Bài viết liên quan