DNAT proxy trong suốt: vì sao tuyến trả về quan trọng
Hiểu vì sao DNAT có thể chuyển yêu cầu tới một proxy riêng trong khi phản hồi vòng qua cổng và làm đứt kết nối.
Một SYN được chuyển hướng có thể đến Squid trong khi máy khách vẫn hết thời gian chờ. Trong cấu hình DNAT, gói trả về cũng phải đến cổng nắm giữ trạng thái dịch địa chỉ.
Hãy xem xét LAN giả định này:
client 192.168.40.25 → gateway 192.168.40.1
DNAT → proxy 192.168.40.10
proxy 192.168.40.10 → client 192.168.40.25 directlyMáy khách ban đầu kết nối tới địa chỉ một trang web. Sau DNAT, proxy thấy nguồn của máy khách và có thể dùng tuyến mạng con cục bộ để trả lời trực tiếp. Phản hồi đó bỏ qua phép dịch ngược của cổng và có thể đến máy khách từ địa chỉ proxy thay vì địa chỉ trang web mong đợi. Cổng không thể sửa những gói mà nó không bao giờ nhận được.
| Cách tiếp cận | Hệ quả |
|---|---|
| Đưa phản hồi của proxy qua cổng thực hiện dịch địa chỉ | Kết nối đi vào proxy có thể giữ địa chỉ nguồn của máy khách |
| Áp dụng cả phép dịch nguồn phù hợp | Proxy trả lời cổng với tư cách ngang hàng, nhưng giờ thấy nguồn đã dịch đó thay vì máy khách gốc |
Đừng gỡ SNAT để có nhật ký đẹp hơn mà chưa kiểm tra tuyến trả về. Áp dụng rộng rãi cũng thay đổi ACL nguồn và việc quy gán; hãy chấp nhận hệ quả đó như một phần của thiết kế.
Một chặng HTTP đáng tin cậy có thể truyền siêu dữ liệu máy khách trong tiêu đề chuyển tiếp, nhưng NAT không tạo ra tiêu đề đó cũng không biến nó thành danh tính ngang hàng TCP. Giữ nguồn trên kết nối tới Squid cũng không giữ nó trên kết nối trang web riêng của Squid.
Cuối cùng, thiết kế chặn bắt vẫn phải cung cấp thông tin đích mà Squid yêu cầu. Định tuyến trả về đối xứng giải quyết cơ chế hết thời gian này, không phải toàn bộ cấu hình proxy trong suốt.