TUN làm gì và giao thức VPN vẫn phải làm gì
TUN di chuyển các gói IP giữa nhân hệ điều hành và một chương trình. Truyền tải, xác thực và mã hóa thuộc về giao thức mà chương trình đó nói.
Coi tun0 và giao thức VPN là một thứ sẽ đưa người ta đến nhật ký sai. Giao diện là một ranh giới cục bộ nơi một chương trình trong không gian người dùng trao đổi gói IP với nhân. Giao thức là việc chương trình đó làm với các gói sau khi đã có chúng: truyền tải, xác thực, mã hóa và một đối tác. Việc tạo thiết bị không chọn bất kỳ điều nào trong số đó.
Hai thành phần, một đường đi của gói
Nhân ghi một gói IP vào thiết bị, và chương trình đọc nó từ một bộ mô tả tệp. Ở chiều ngược lại chương trình ghi một gói trở lại và nhân định tuyến nó như thể nó đến trên một giao diện thật. TUN mang IP, còn TAP mang khung Ethernet. Đọc một gói tại ranh giới đó cho thấy cách đóng khung, và thiết bị chính là để làm việc đó.
Mọi thứ bên kia ranh giới đó là việc của chương trình. Hai chương trình có thể dùng cùng một khái niệm giao diện và làm những việc hoàn toàn khác nhau với các gói. Bản thân thiết bị không có ý kiến gì về điều xảy ra tiếp theo. Bộ mô tả tệp là tay nắm duy nhất mà chương trình có ở phía nhân.
Tạo thiết bị, rồi quan sát ranh giới
Hãy tạo thiết bị một cách có chủ đích khi bạn kiểm tra ranh giới. Thiết bị thường trú tồn tại sau khi tiến trình tạo ra nó kết thúc, điều này hữu ích cho thí nghiệm và sau đó là nguồn nhầm lẫn phổ biến. Kiểm tra cờ và chủ sở hữu trước khi đổ lỗi cho VPN.
sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9Chi tiết liên kết cho thấy loại thiết bị và chủ sở hữu được gắn. Nếu không tiến trình nào giữ nó mở, các gói ghi vào đó sẽ không đi đâu cả. Một thiết bị không có tiến trình gắn kèm có thể trông khỏe mạnh trong danh sách liên kết mà không cho gì đi qua.
Điều tên giao diện không thể hứa
Tên giao diện không nói gì về mã hóa hay xác thực. Một chương trình có thể bọc các gói trong TLS, trong giao thức riêng, trong IPsec hoặc không bọc gì. Chọn TUN thay vì TAP thay đổi cách đóng khung tại ranh giới, không thay đổi thiết kế bảo mật. Lựa chọn đóng khung là có thật, và nó nhỏ hơn nhiều so với câu hỏi bảo mật.
Việc phát hiện hoạt động theo cùng cách: người quan sát thấy giao thức bên ngoài trên dây, không phải một nhãn cho biết thiết bị cục bộ nào đã tạo ra nó. Một đường hầm trông như thứ khác làm vậy vì giao thức bên ngoài của nó, không phải vì tên giao diện. Người quan sát không thể thấy thiết bị cục bộ nào đã tạo ra gói, chỉ thấy gói trông như thế nào. Hãy tách hai câu hỏi đó khi so sánh sản phẩm, vì một câu trả lời không bao giờ hàm ý câu kia.
Khớp cách khắc phục với giai đoạn thất bại
Hãy tách các giai đoạn thất bại khi có thứ gì đó hỏng. Thiết bị thiếu, lỗi quyền và đăng nhập bị từ chối tạo ra bằng chứng và cách khắc phục khác nhau. Đọc trạng thái cục bộ trước, rồi nhật ký của chính chương trình, rồi góc nhìn của đối tác. Đọc cả ba trước khi thay đổi bất cứ điều gì.
ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'Nếu thiết bị tồn tại và một tiến trình giữ nó, ranh giới cục bộ đang hoạt động và vấn đề nằm xa hơn. Nếu thiết bị thiếu, mọi kiểm tra thông tin đăng nhập đều không giúp được. Một giai đoạn bạn có thể gọi tên là giai đoạn bạn có thể kiểm tra. Tài liệu TUN/TAP mô tả ranh giới và mô hình thiết bị.