iptables --uid-owner khớp với socket cục bộ của Squid, không phải người dùng LAN
Dùng ý nghĩa --uid-owner là bên tạo socket cục bộ khi lý giải lưu lượng ra của Squid và tách riêng các gói LAN được chuyển tiếp.
Khớp owner của iptables có thể nhận diện các gói do socket của một tiến trình cục bộ tạo ra. Ví dụ, -m owner --uid-owner 1234 chỉ một socket cục bộ thuộc sở hữu của UID 1234; nó không nhận diện tên người dùng proxy HTTP.
Trên máy chạy Squid, hãy phân biệt các đường đi sau:
| Lưu lượng | Khác biệt liên quan |
|---|---|
| Một máy khách kết nối tới Squid trên máy này | Kết nối đến đi vào trình lắng nghe proxy |
| Squid mở kết nối tới đích | Socket đi ra được tạo cục bộ |
| Một máy khách LAN định tuyến trực tiếp qua máy này | Lưu lượng được chuyển tiếp không có socket tạo cục bộ |
Phần mở rộng này hợp lệ trong OUTPUT và POSTROUTING. Các gói được chuyển tiếp không có socket cục bộ liên kết cho khớp này, nên quy tắc FORWARD không thể phát hiện người dùng của máy tính từ xa bằng cách hỏi UID của Squid.
Vì vậy, chính sách cho phép socket đi ra của chính Squid chỉ xử lý một phần của thiết kế mạng chỉ dựa vào proxy. Việc chuyển tiếp qua cổng, truy cập trình lắng nghe, các dịch vụ được phép khác và tài khoản dịch vụ proxy thực tế phải được xử lý trong phạm vi phù hợp.
Hãy dùng danh tính thời gian chạy đã cấu hình thay vì giả định Squid chạy dưới nobody. Nhiều tiến trình có thể dùng chung một UID, nên cấp phép dựa trên UID là ranh giới tài khoản, không phải bằng chứng rằng một tệp thực thi cụ thể đã tạo mọi kết nối được phép.