Khi đang sử dụng bộ lọc mạng
, bạn phải hiểu làm thế nào một gói tin chảy qua nhân, tức là cái nào xiềng xích (tương tự như 'điểm kiểm tra trên đường') mà nó ghé thăm và loại Chế biến nó đi vào từng chuỗi (được gọi bằng thuật ngữ cái bàn). Chế biến và dây chuyền được thể hiện trong hình minh họa này, mỗi hộp có chuỗi ở phần dưới và loại xử lý ở phần trên. (Bạn phải tập trung vào lớp Mạng.) Tùy thuộc vào đường dẫn gói, chỉ có một tập hợp con các chuỗi tham gia: các gói đi qua quả mâm xôi của bạn sẽ chỉ đi qua ĐẶT TRƯỚC
, PHÍA TRƯỚC
và SAU ĐƯỜNG
.
Đang có PHÍA TRƯỚC
chain, không ngụ ý rằng nó định tuyến các gói tin. Bạn phải kích hoạt nó bằng lệnh sysctl -w net.ipv4.ip_forward=1
(không kiên trì).
Hơn nữa, như thể hiện trong hình, không có tự nhiên
xử lý trong PHÍA TRƯỚC
chuỗi, chỉ mang nặng đẻ đau
và lọc
, vì vậy lệnh
iptables -t nat -d <danh sách IP> -A FORWARD -j NFQUEUE --queue-num 1
là không chính xác.
Quá trình xử lý gói cho mỗi bảng/chuỗi thực sự được điều khiển bởi một danh sách quy tắc được sắp xếp theo thứ tự, bảng, mà bạn xác định bằng lệnh iptables
chỉ huy. Mỗi quy tắc được tạo thành từ các tiêu chí phù hợp và một hành động phụ thuộc vào loại bảng (nfqueue
chỉ được phép trong lọc
những cái bàn, hóa trang
Trong tự nhiên
bảng, v.v.)
Bây giờ, đến với nfqueue
. Chúng tôi sử dụng hành động như vậy khi việc xử lý thêm một số gói được thực hiện bên ngoài hạt nhân, bởi một chương trình do chính bạn tạo ra (xem phần ví dụ python ở đây, ví dụ, trong các hệ thống phát hiện xâm nhập.Các gói được đặt trên một hàng đợi (được xác định bằng số 16 bit), được xử lý sau đó được trả lại cho nhân để tiếp tục luồng của chúng ở bảng/chuỗi tiếp theo. (Chúng cũng có thể được thả vào không gian người dùng).
Trong một kịch bản phổ biến, thông thường bạn sẽ chỉ muốn gửi các gói được chấp nhận tới không gian người dùng (những gói được lọc sẽ bị bỏ qua ở cấp nhân).
Bạn phải cẩn thận về những nhu cầu chính xác của mình, những nhu cầu chưa rõ ràng. Tôi sẽ cố gắng đưa ra một ví dụ để giải thích cách thức hoạt động của nó khi sử dụng kịch bản của bạn:
Sudo iptables -F
Sudo iptables -t nat -F
sudo iptables -t nat -A POSTROUTING -o $eth -j MASQUERADE
sudo iptables -A FORWARD -i $eth -o $wlan -m state --state LIÊN QUAN, THÀNH LẬP -j NFQUEUE --queue-num 1
sudo iptables -A FORWARD -i $wlan -o $eth -j NFQUEUE --queue-num 1
Điều này có nghĩa là các gói tin chảy giữa $eth
và $wlan
sẽ được đưa vào cùng một hàng đợi. Bạn phải đảm bảo rằng một số chương trình đang xử lý hàng đợi số. 1 và sẵn sàng xử lý các gói tin.