Có cách nào thuận tiện để hiển thị danh sách mô-đun đã tải iptables không? Tôi có thể hiển thị các mô-đun được cài đặt bằng cách liệt kê/lib/iptables/(hoặc/lib64/iptables /) thư mục nhưng tôi cần danh sách mô-đun hoạt động.Danh sách các Mô-đun iptables được tải
Trả lời
Tải iptables mô-đun có thể được tìm thấy trong /proc/net/ip_tables_matches mục nhập hệ thống tệp proc.
cat /proc/net/ip_tables_matches
Trong PHP tôi có thể truy cập vào nạp iptables module bằng cách tải và nổ nội dung file:
$content = file_get_contents('/proc/net/ip_tables_matches');
$modules = explode("\n", $content);
Tất nhiên nó đòi hỏi proc hệ thống tập tin được gắn kết (distro Hầu hết GNU Linux gắn kết nó bằng cách mặc định)
đây là một bài thực sự cũ nhưng ở đây chúng tôi đi:
# lsmod | grep ip
cho thấy một danh sách các module được nạp, mà tôi nghĩ rằng hầu hết đều liên quan đến iptables ... /proc/net/ip_tables_matches
không hiển thị module (ít nhất là không trong RHEL 6)
Như Gonio đã gợi ý danh sách lsmod tất cả các module kernel được nạp, nhưng grepping "ip" sẽ không cung cấp cho bạn tất cả các mô-đun iptables.
Tôi thà sử dụng
lsmod|grep -E "nf_|xt_|ip"
và vẫn còn, tôi không chắc chắn trong danh sách sẽ được hoàn thành.
Hãy xem trong thư mục sau (thay thế mỗi phiên bản kernel):
ls /lib/modules/2.6.32-504.8.1.el6.x86_64/kernel/net/netfilter/
Bạn có thể nạp module sử dụng (thả .ko
như được liệt kê trong thư mục):
modprobe nf_conntrack_ftp
Ngoài ra, bạn có thể đảm bảo nó được tải lúc khởi động bằng cách thêm nó vào:
/etc/sysconfig/iptables-config (RHEL/CENTOS)
IPTABLES_MODULES="nf_conntrack_ftp"
Điều này có vẻ kém tài liệu.
Tôi thực sự đánh giá cao lưu ý về cách tải nó khi khởi động. Woauh. Đã dành quá nhiều thời gian để tìm kiếm điều này. – MrJames
Hãy thử điều này cho một cái nhìn tổng quan nhanh trên các module netfilter có mặt trên hệ thống của bạn, ở đây một lớp lót để dán:
for i in /lib/modules/$(uname -r)/kernel/net/netfilter/*; do echo "\e[33;1m$(basename "$i")\e[0m"; strings "$i" | \grep -e description -e depends| sed -e 's/Xtables: //g' -e 's/=/: /g' -e 's/depends=/depends on: /g'; echo; done
Một lần nữa cho dễ đọc, với dòng mới thêm vào:
#!/bin/bash
for i in /lib/modules/$(uname -r)/kernel/net/netfilter/*
do
echo "\e[33;1m$(basename "$i")\e[0m"
strings "$i" | \grep -e description -e depends | sed -e 's/Xtables: //g' -e 's/=/: /g' -e 's/depends=/depends on: /g'
echo
done
Tên tập tin sẽ xuất hiện màu vàng, từ đó bạn có thể đoán được liệu mô-đun đang đề cập có tồn tại hay không. Mô tả và phụ thuộc là hai dòng tiếp theo bên dưới.
Điều này sẽ không bao gồm mọi thứ (vì điều này sẽ quá dễ dàng, ofc). Chỉ tìm kiếm các mô-đun theo cách thủ công, để xem chúng có tồn tại hay không, cung cấp cho bạn thông tin chính xác 100%.
iptables -m <match/module name> --help
Nếu một module tồn tại trên hệ thống của bạn, ở phần cuối của văn bản giúp bạn sẽ nhận được một số thông tin về làm thế nào để sử dụng nó:
ctr-014# iptables -m limit --help
iptables v1.4.14
Usage: iptables -[ACD] chain rule-specification [options]
iptables -I chain [rulenum] rule-specification [options]
...
[!] --version -V print package version.
limit match options:
--limit avg max average match rate: default 3/hour
[Packets per second unless followed by
/sec /minute /hour /day postfixes]
--limit-burst number number to match in a burst, default 5
ctr-014#
Nó module không có mặt trên hệ thống của bạn:
ctr-014# iptables -m iplimit --help
iptables v1.4.14: Couldn't load match `iplimit':No such file or directory
Try `iptables -h' or 'iptables --help' for more information.
ctr-014#
Có lẽ bạn nên thử '/ proc/net/ip_tables_names' để thay thế ... –