Lệnh này cho biết "nếu lưu lượng truy cập mạng đến từ địa chỉ IP X, nhưng không có trên giao diện Y, thì hãy DROP nó." Lưu ý rằng nó nằm trong bảng thô, đây là lần truy cập bảng đầu tiên và nhanh nhất khi lưu lượng truy cập mạng đến với IPtables.
iptables -t raw -A PREROUTING -s ${X} ! -i ${Y} -j THẢ
Bạn nên có một hoán vị khác của quy tắc này theo hướng ngược lại:
iptables -t raw -A PREROUTING ! -s ${X} -i ${Y} -j DROP
Bạn có thể ghi nhật ký vi phạm các quy tắc này bằng bốn lệnh sau:
iptables -t raw -A PREROUTING -s ${X} ! -i ${Y} -j LOG --log-prefix "Sai IP: "
iptables -t raw -A PREROUTING -s ${X} ! -i ${Y} -j THẢ
iptables -t raw -A PREROUTING ! -s ${X} -i ${Y} -j LOG --log-prefix "Giao diện sai: "
iptables -t raw -A PREROUTING ! -s ${X} -i ${Y} -j DROP
CHỈNH SỬA: Đã chỉnh sửa sau khi tôi nhận được thông tin rõ hơn trong nhận xét.
Quy tắc này cho biết "nếu lưu lượng truy cập đến từ địa chỉ IP X và không dành cho địa chỉ IP Z, thì hãy hủy lưu lượng truy cập."
iptables -t raw -A PREROUTING -s ${X} ! -d ${Z} -j DROP
Quy tắc này cho biết "nếu lưu lượng truy cập đến trên giao diện Y và không dành cho địa chỉ IP Z, thì hãy loại bỏ lưu lượng truy cập."
iptables -t raw -A PREROUTING -i ${Y} ! -d ${Z} -j DROP
Đây là sự kết hợp của hai quy tắc đó, có nội dung "nếu lưu lượng truy cập đến từ địa chỉ IP X và đến trên giao diện Y và không dành cho địa chỉ IP Z, thì hãy bỏ lưu lượng truy cập."
iptables -t raw -A PREROUTING -s ${X} -i ${Y} ! -d ${Z} -j DROP.
Chỉ cần một lưu ý: Tôi thích sử dụng thô
table nếu các quy tắc không yêu cầu theo dõi kết nối. Các thô
table không theo dõi bất kỳ kết nối nào. Trong trường hợp này, không cần theo dõi kết nối cho các quy tắc này. Theo dõi kết nối là cần thiết cho tự nhiên
bảng và cho theo dõi
mô-đun (-m conntrack
). Các thô
table có hiệu suất cao hơn nhiều so với các bảng khác vì tính năng theo dõi kết nối chiếm nhiều tài nguyên hơn đáng kể trên máy chủ của bạn. Tuy nhiên, bạn có thể sử dụng bảng bộ lọc và nếu nó đơn giản hơn và có ý nghĩa hơn đối với bạn, thì hãy sử dụng bảng bộ lọc. Các quy tắc sẽ hoàn toàn giống nhau, nhưng chỉ -t thô
sẽ trở thành -t bộ lọc
Khi các gói vào IPtables, chúng đi qua các bảng như sau:
raw -> mangle (nơi bắt đầu theo dõi kết nối) -> nat -> filter