iptables bỏ tất cả các yêu cầu ICMP đến ngoại trừ từ một IP


7

Hiện tại, tôi có một cái gì đó như:

iptables -A INPUT -p ICMP --icmp-type 8 -j DROP
iptables -A INPUT -s x.x.x.x -p ICMP --icmp-type 8 -j ACCEPT

Tuy nhiên, khi tôi chạy lệnh thứ hai, có vẻ như iptables chỉ dừng lại. Tôi phải thoát ra khỏi nó để quay trở lại thiết bị đầu cuối. Có lẽ tôi đang làm sai tất cả, nhưng một số hiểu biết sẽ hữu ích.


1
Bạn cũng cần lật nó để ACCEPT là lần đầu tiên hoặc đổi -Athành-I
Patrick

@Patrick khi tôi làm điều đó, có vẻ như nó thoát ra khi bắt đầu và không viết quy tắc.
Quảng trường

2
quy tắc đầu tiên của bạn sẽ phải đến sau nếu bạn nhìn vào iptables -L -nvvà kiểm tra các quầy khi bạn đang kiểm tra quy tắc của mình, bạn sẽ phát hiện ra rằng có lẽ việc tăng các gói không bao giờ đạt đến quy tắc khác của bạn.
xenoterracide

Câu trả lời:


9

Bạn cần chạy các quy tắc của bạn theo thứ tự ngược lại. Iptables nhạy cảm với thứ tự các lệnh đã được chạy. Nếu một quy tắc phù hợp, nó không tiếp tục kiểm tra thêm các quy tắc, nó chỉ tuân theo quy tắc đó. Nếu bạn đặt thả trước, quy tắc chấp nhận sẽ không bao giờ được kiểm tra. Bằng cách đặt chấp nhận cụ thể với IP nguồn, sau đó đặt chính sách chung hơn để loại bỏ, bạn sẽ ảnh hưởng đến hành vi dự kiến.

iptables -A INPUT -s x.x.x.x -p ICMP --icmp-type 8 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type 8 -j DROP

Đối với vấn đề treo bạn dường như đang gặp phải, bạn có chắc chắn đã nhập địa chỉ IP hợp lệ không? Có lẽ bạn có thể thêm tiền tố vào lệnh đó strace iptables …để xem nó đang làm gì trong khi nó dường như bị treo.


Cảm ơn lời giải thích tuyệt vời. Có vẻ như điều này cũng xảy ra với một bộ quy tắc khác, khiến nó bị treo!
Quảng trường

3

Đừng bỏ ICMP willy-nilly! Chắc chắn, một số yêu cầu của ICMP là nguy hiểm, nhưng phần còn lại là hoàn toàn bắt buộc để mạng hoạt động (nghĩ rằng "không thể truy cập đích" và sở thú đó).


ICMP không bắt buộc để mạng hoạt động.
Natalie Adams

1
Lọc icmp phá vỡ MTU khám phá rất may mắn khi cố gắng sử dụng khung jumbo mà không hoạt động icmp!
Stefan Skoglund

-2

Bạn sẽ phải thêm một quy tắc như:

$ iptables -A INPUT -s x.x.x.x -p icmp --icmp-type echo-reply -j ACCEPT

Tôi đã thử điều đó, và nó đã làm điều tương tự - vô ích.
Quảng trường

bạn chạy các lệnh đó theo thứ tự đó ??? Các quy tắc trong iptables, theo như tôi quan tâm, được thực thi từ bippi đến đầu
Luciano Facchinelli

Đây chỉ là một cú pháp thay thế cho quy tắc mà OP đã chạy.
Caleb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.