curl socks5h so với socks5: ai phân giải tên máy chủ
Chữ cái thêm vào di chuyển truy vấn DNS, không phải việc mã hóa. So sánh cả hai dạng, rồi kiểm tra tên máy chủ nào vẫn cần một trình phân giải cục bộ.
Người ta coi socks5h như socks5 với cách viết dễ chịu hơn, và mong cả hai gửi cùng một yêu cầu đến cùng một nơi. Chữ cái thêm vào lại di chuyển truy vấn DNS. Trên một máy mà trình phân giải và proxy nằm ở các mạng khác nhau, đó là khác biệt giữa một yêu cầu chạy được và một yêu cầu thất bại.
Một chữ cái, hai trình phân giải
Lược đồ quyết định nơi tên đích trở thành địa chỉ. Phân giải cục bộ dùng trình phân giải được cấu hình trên máy của bạn. Phân giải từ xa đặt tên máy chủ vào bên trong yêu cầu SOCKS, và proxy tra cứu nó bằng trình phân giải riêng và góc nhìn riêng về mạng. Cả hai dạng vẫn kết nối tới cùng địa chỉ proxy trên cùng cổng, nên khác biệt nằm ở phần thân yêu cầu, không phải ở đường đi.
Không có gì trong lược đồ thay đổi mã hóa hay xác thực; chỉ đường DNS di chuyển. Vì thế chữ cái này dễ bỏ qua và đắt khi làm sai.
Cùng proxy, yêu cầu khác
Hai lệnh gọi khác nhau đúng một ký tự. Mọi thứ còn lại giống hệt:
curl --proxy socks5://proxy.example:1080 https://service.example/
curl --proxy socks5h://proxy.example:1080 https://service.example/The tài liệu tham chiếu proxy của curl ghi lại các lược đồ này riêng biệt, và đó là lý do có thẩm quyền để không coi chúng là bí danh. Chạy cả hai với một điểm cuối vô hại mà bạn được phép dùng và đọc khác biệt. Một lần tra cứu từ xa thành công không nói gì về các ứng dụng khác, bởi vì trình duyệt, trình quản lý gói và môi trường chạy của các ngôn ngữ mỗi thứ tự chọn.
Tên của chính proxy được phân giải cục bộ
Trong lệnh đó, proxy.example phải trở thành địa chỉ trước khi bất cứ điều gì khác xảy ra, và lần tra cứu đó luôn cục bộ. Chuyển việc phân giải service.example sang proxy không làm gì cho tên của chính proxy, thứ vẫn cần một trình phân giải mà máy bạn với tới được. Đây là chỗ VPN thay đổi bức tranh.
Nếu tên proxy chỉ được phân giải bên trong đường hầm, kết nối phụ thuộc vào việc đường hầm đã lên trước khi curl khởi động. Lược đồ nào thắng khi đó phụ thuộc vào bên nào trả lời được. Khi máy bạn không phân giải được đích nhưng proxy thì được, socks5 thất bại và socks5h thành công. Khi máy bạn phân giải nó qua đường hầm còn proxy thì không, socks5 chạy được và socks5h thất bại.
Lược đồ không đặt kết nối tới proxy vào trong hay ngoài VPN; bảng định tuyến làm việc đó, và lược đồ không bao giờ thấy nó. Vì thế một đường hầm có thể sửa lược đồ này và làm hỏng lược đồ kia trên cùng một máy. Chữ cái chỉ quyết định ai đặt câu hỏi.
Mỗi bên phân giải được gì
Proxy công cộng không phân giải được tên chỉ tồn tại trong công ty, nên gửi tên máy chủ tới đó thất bại ở proxy và hiện ra như lỗi proxy chứ không phải lỗi DNS cục bộ. Proxy bên trong cùng mạng riêng thường phân giải được những tên đó, và đó là chỗ socks5h phát huy giá trị. Chọn vị trí trình phân giải theo chính sách bạn thật sự cần, vì DNS từ xa không tự động giỏi hơn và nó thật sự giao tên cho bên thứ ba. Với đích công cộng, cả hai dạng đều chạy được, nên ưu tiên dạng mà các công cụ khác của bạn đã dùng.
Ghi lựa chọn đó vào runbook chứ không phải vào chú thích, và giữ thông tin đăng nhập ngoài lịch sử chia sẻ và đầu ra chẩn đoán. Sau đó đổi từng biến một: cùng đích, cùng tệp nhị phân, cùng trình phân giải, một chữ cái.
Tệp nhị phân nào đã trả lời
Hai tệp nhị phân curl trên cùng máy có thể khác phiên bản và tính năng biên dịch. Trong shell kiểu Unix, type -a curl liệt kê mọi kết quả khớp trên đường dẫn và curl --version hiển thị tính năng của bản sẽ chạy. Một script bọc hoặc bí danh xuất hiện sớm hơn trên đường dẫn là lý do phổ biến khiến kết quả không khớp với tệp nhị phân bạn tưởng đang kiểm tra.
Lược đồ không được hỗ trợ, proxy không phân giải được tên và đích không tới được là ba lỗi khác nhau, nên đọc thông điệp trước khi đổi chữ cái. Bản biên dịch không có cú pháp socks5h báo chuỗi proxy là không được hỗ trợ, điều đó không giống với một tên phân giải thất bại. Đừng biến một báo cáo cũ về curl của hệ thống thành quy tắc vĩnh viễn cho mọi nền tảng.