Handshake OpenVPN trên Synology thất bại? Kiểm tra chuyển tiếp LAN
Trên NAS hai cổng, gói VPN chỉ lắng nghe trên một giao diện. Chuyển tiếp sang địa chỉ kia cho lỗi handshake TLS mà không chứng chỉ nào sửa được.
Laptop của bạn báo rằng handshake TLS đã thất bại, nên rất dễ muốn dựng lại chứng chỉ. Trước đó, hãy hỏi một câu nhàm hơn: Synology thực sự lắng nghe trên cổng Ethernet nào? NAS có hai cổng LAN có hai địa chỉ, và gói VPN Server trong DSM gắn trình lắng nghe OpenVPN của nó vào một trong hai. Khi router chuyển tiếp 1194 sang địa chỉ kia, không gói tin nào đến được dịch vụ, và máy khách không có gì để thương lượng.
Văn bản lỗi gây nhầm lẫn vì nó mô tả việc cuối cùng máy khách đã thử, không phải việc đầu tiên bị sai. Hai phút so sánh trang gói với quy tắc router là đủ để kết luận.
Tìm địa chỉ mà trình lắng nghe được gắn vào
DSM gọi các cổng của mình là LAN 1 và LAN 2, mỗi cổng có một địa chỉ và một mạng con riêng. Mở VPN Server, đọc giao diện được nêu trên tab OpenVPN, sau đó mở Panel điều khiển và ghi lại địa chỉ IPv4 mà DSM có trên cùng giao diện đó. Chuyển tiếp phải nêu hai giá trị này, không phải tên máy chủ của NAS.
Cắm thêm một sợi cáp không tạo ra trình lắng nghe thứ hai. Cả hai liên kết đều có thể hiện là đã kết nối trong khi chỉ một địa chỉ nhận lưu lượng, và khi hai giao diện nằm trong cùng một mạng con, hai địa chỉ chỉ khác nhau một chữ số mà không ai đọc lại trước khi lưu quy tắc.
Hãy xem chính socket qua SSH, vì đây là nơi duy nhất cho thấy daemon thực sự gắn vào đâu, chứ không phải điều trang cài đặt muốn.
sudo netstat -anp | grep 1194
Sửa quy tắc chuyển tiếp đang có thay vì thêm quy tắc mới
Hai quy tắc cho một cổng ngoài khiến router được tự do chọn, và quy tắc nó chọn có thể thay đổi sau khi cập nhật firmware hoặc khởi động lại. Mở quy tắc đã có, đổi địa chỉ bên trong, lưu, rồi mở lại và đọc giá trị. Đặt tên quy tắc theo dịch vụ sẽ giúp ích, vì danh sách năm quy tắc chuyển tiếp giống hệt nhau chính là cách quy tắc sai tồn tại.
external 1194/udp -> 192.0.2.20:1194/udp
Giữ cổng trong bằng cổng lắng nghe và giữ giao thức nhất quán. UDP 1194 là trình lắng nghe mặc định, còn một cấu hình TCP cần trình lắng nghe riêng ở phía gói và một chuyển tiếp tương ứng trên router. Chuyển tiếp TCP đến dịch vụ chỉ lắng nghe UDP cho ra sự im lặng, không phải lỗi.
Nếu địa chỉ của NAS đến từ DHCP, hãy đặt trước nó trước khi lưu quy tắc. Khi hợp đồng thuê hết hạn, địa chỉ được cấp lại, chuyển tiếp vẫn trỏ vào giá trị cũ, và handshake bắt đầu thất bại vào một ngày không ai chạm vào NAS. Cấu hình tĩnh ở phía NAS cũng giải quyết vấn đề đó, miễn là địa chỉ nằm ngoài dải DHCP của router.
Chứng minh xem gói tin có đến hay không
Trước tiên hãy bắt đầu bắt gói trên NAS, sau đó kết nối từ máy khách, và đọc địa chỉ nguồn trong kết quả. Một lần bắt gói bắt đầu sau khi lỗi xảy ra không cho thấy gì và không chứng minh gì.
sudo tcpdump -i any -n udp port 1194
Im lặng nghĩa là lưu lượng đã chết trước khi đến dịch vụ: địa chỉ bên trong sai, cổng bị đóng trên tường lửa DSM, hoặc giao diện bị tắt về mặt quản trị. Có gói tin trong kết quả nghĩa là chuyển tiếp hoạt động, và lỗi còn lại nằm trên tầng mạng, một phạm vi tìm kiếm nhỏ hơn nhiều.
Bản bắt gói cũng nêu giao diện mà gói tin đi vào, và chính chi tiết đó tách quy tắc nhắm vào cổng sai khỏi quy tắc nhắm vào cổng chưa mở. Trong cùng lần thử, hãy xem bộ đếm của chính router nếu nó hiển thị. Bộ đếm không nhúc nhích trong khi bản bắt gói vẫn rỗng là chỉ vào router, còn bộ đếm nhúc nhích với bản bắt gói rỗng là chỉ vào đường đi giữa hai thiết bị.
Khi gói tin đến, đừng đổ lỗi cho chuyển tiếp nữa
Cấu hình là nghi phạm tiếp theo, và lý do thường gặp là tuổi tác. Tệp .ovpn được xuất chứa thẩm quyền và vật liệu tại thời điểm xuất, nên gói mà chứng chỉ được thay sau đó sẽ từ chối máy khách vẫn mang bản sao cũ.
Truyền tải là điểm không khớp khác đáng kiểm tra rõ ràng, vì cấu hình và gói được sửa ở hai nơi khác nhau. Đổi cấu hình từ UDP sang TCP mà không chuyển gói sẽ khiến máy khách chờ một trình lắng nghe không tồn tại, và máy khách báo cùng một đoạn văn bản handshake chung như với mọi thứ khác. Đọc dòng proto trong tệp, sau đó xem giao thức được chọn trên trang máy chủ, và chỉ khi đó mới kết luận là chúng khớp nhau. Đọc các quy tắc tường lửa của DSM là bước kiểm tra thứ ba: một quy tắc cho phép cổng từ mạng con cục bộ nhưng không từ internet rất dễ bị bỏ lại sau khi thử, và nó tạo ra kết nối chạy được từ nhà bếp và thất bại ở mọi nơi khác.
Thử con đường mà người dùng từ xa thực sự đi
Máy khách trong cùng LAN có thể đến NAS mà không cần chạm vào chuyển tiếp, nên nó không chứng minh gì về truy cập từ xa. Hãy dùng một chiếc điện thoại đã tắt Wi-Fi, hoặc nhờ ai đó ngoài mạng, và theo dõi bộ đếm router trong lần thử đó. Nếu lần thử từ xa thất bại trong khi lần thử cục bộ thành công, chuyển tiếp hoặc tường lửa vẫn còn trong cuộc.
Ghi lại trạng thái đang hoạt động khi nó còn hoạt động: cổng ngoài, địa chỉ trong, giao thức, giao diện của gói, cùng tên cấu hình và ngày xuất. Khi handshake lại thất bại, khác biệt giữa ghi chú đó và cấu hình hiện tại chính là lỗi, và không ai phải khám phá lại dịch vụ dùng cổng nào trong hai cổng.