2010-01-07 7 views
12

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

20

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)

3

đâ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)

+0

Có lẽ bạn nên thử '/ proc/net/ip_tables_names' để thay thế ... –

0

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.

2

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.

+0

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

1

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#