Đường hầm đầy đủ hay tuyến đường đến điểm cuối: giữ máy chủ VPN có thể truy cập
Đường hầm đi qua chính mạng mà nó thay thế. Hãy so sánh ngoại lệ tuyến đường máy chủ với dấu socket ở cấp ứng dụng, và biết khi nào mỗi cách thất bại.
Thêm một tuyến mặc định qua đường hầm, và các gói của chính đường hầm sẽ đi theo nó. Bảng khi đó chứa một quy tắc tự đánh bại chính nó. Kết nối được mã hóa tới máy chủ cố gắng đi bên trong kết nối mà nó đang cố thiết lập.
Hai cơ chế ngăn vòng lặp đó. Một cơ chế hiển thị trong bảng định tuyến, cơ chế kia sống bên trong ứng dụng.
Lưu lượng bên trong và bên ngoài là những quyết định khác nhau
Một gói ứng dụng đi vào giao diện ảo và được đóng gói. Kết quả là một gói mới được gửi đến địa chỉ công khai của máy chủ. Gói đó cần một tuyến trên mạng vật lý, vì không phần nào của nó được đi vào đường hầm.
Cả hai đều là quyết định về định tuyến, và chỉ cái đầu tiên thuộc về đường hầm. Khi ứng dụng khách cài đặt tuyến mặc định cũng bao phủ máy chủ, gói bên ngoài cũng bị bắt.
Các triệu chứng tức thì và toàn phần. Quá trình bắt tay hoàn tất và sau đó không có gì chảy, hoặc kết nối rớt ngay khoảnh khắc tuyến được cài đặt. Trong cả hai trường hợp keepalive không còn có thể đi ra.
Lựa chọn một: tuyến máy chủ cho điểm cuối
Cách trực tiếp thêm một tuyến cho địa chỉ máy chủ qua cổng gốc. Chỉ cần một dòng. Ai đọc bảng cũng thấy nó. Cũng dễ giải thích trong bản ghi thay đổi.
Điểm yếu của nó xuất hiện khi đường đi bên dưới thay đổi. Tuyến đã lưu nêu tên một cổng và một giao diện từ mạng cũ. Sau khi chuyển Wi-Fi, cổng đó có thể không tồn tại, và tuyến vẫn ở lại, trông đúng và không làm gì.
# before the tunnel: which path reaches the endpoint?
ip route get 198.51.100.7
# pin it through the current gateway
ip route add 198.51.100.7/32 via 192.168.1.1 dev wlan0
# after the tunnel is up, confirm the pin survived
ip route get 198.51.100.7
Tên máy chủ khiến việc này khó hơn. Nếu điểm cuối là một tên phân giải thành nhiều địa chỉ, ngoại lệ phải bao phủ địa chỉ thực sự đang dùng. Một lần tra cứu sau đó có thể trả về thứ mà tuyến chưa bao giờ bao phủ.
Lựa chọn hai: bảo vệ socket
Cách còn lại không bao giờ chạm vào bảng định tuyến. Ứng dụng khách đánh dấu hoặc bảo vệ socket mang đường hầm, nên hệ điều hành gửi lưu lượng của socket đó ra ngoài đường hầm theo chính sách. Android cung cấp cơ chế này trực tiếp cho các ứng dụng VPN. Ứng dụng khách trên máy tính triển khai tương đương bằng dấu tường lửa hoặc lệnh gọi liên kết với thiết bị.
Ưu điểm là ngoại lệ đi theo kết nối thay vì một cổng đã lưu. Thay đổi mạng ghi lại đường đi bên dưới, và socket được bảo vệ di chuyển cùng vì nó chưa bao giờ bị ghim vào một địa chỉ. Bảng tuyến vẫn sạch.
Cái giá là khả năng hiển thị. Không có gì trong bảng định tuyến cho thấy ngoại lệ, nên người đánh giá tìm tuyến máy chủ không thấy gì và có thể kết luận thiết kế không an toàn. Sự bảo vệ sống trong mã của ứng dụng khách và trong các quy tắc chính sách mà mã đó cài đặt.
Chọn giữa hai cách
Hãy chọn cơ chế cấp socket khi ứng dụng khách hỗ trợ, vì nó sống sót qua những thay đổi mạng làm hỏng một tuyến bị ghim. Hãy chọn tuyến máy chủ khi ngoại lệ phải hiển thị với công cụ khác, hoặc khi ứng dụng khách không cung cấp gì tốt hơn.
Không cơ chế nào loại bỏ nhu cầu địa chỉ máy chủ phải truy cập được ngay từ đầu. Một cổng riêng có địa chỉ lắng nghe công khai, và chính địa chỉ đó phải ở ngoài đường hầm. Các mạng nội bộ phía sau chỉ truy cập được sau khi đường hầm tồn tại.
Dù bạn chọn gì, hãy giữ nó cùng thành phần sở hữu đường hầm. Một tuyến máy chủ lạc được thêm bằng tay hoạt động đến mạng tiếp theo, rồi nó trở thành sự cố bí ẩn của ngày mai.