iptables и connlimit
kwak 29 января, 2008 - 19:08
Привет друзья.
А как вы думаете, почему нет этого модуля:
# iptables -m connlimit --help
iptables v1.3.8: Couldn't load match `connlimit':/lib64/iptables/libipt_connlimit.so: cannot open shared object file: No such file or directory
# ls -l /lib64/iptables/ | grep connlimit
<пусто>
# emerge -pv iptables
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] net-firewall/iptables-1.3.8-r2 USE="-extensions* -imq -ipv6 -l7filter -static" 0 kB
Total: 1 package (1 reinstall), Size of downloads: 0 kB
# grep CONNLIMIT /usr/src/linux/.config
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
В MAN'е описание connlimit есть.
»
- Для комментирования войдите или зарегистрируйтесь
один из флагов
один из флагов extensions или l7filter его включает, а может и в ядре нужно до кучи посмотреть.
iptables как раз и
iptables как раз и собран с USE=extensions.
Попробуйте export
Попробуйте export USE='extensions'; emerge -1 iptables.
Возможно iptables собирался до того, как соответствующие опции были добавлены в ядро.
Ладно парни, не
Ладно парни, не надо тут голову ломать, похоже я сам перемудрил.
Вы только скажите, есть ли у кого этот модуль, в случае установки iptables через emerge?
Всем спасибо за участие.
toogle:~% ls -l
toogle:~% ls -l /lib/iptables/ | grep connlimit
-rwxr-xr-x 1 root root 5.5K Янв 30 12:17 libxt_connlimit.so*
toogle:~% sudo emerge -vp iptables
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] net-firewall/iptables-1.4.0-r1 USE="extensions -imq -ipv6 -l7filter -static" 0 kB
А у вас x86-64? В
А у вас x86-64?
В общем понятно, у меня все модули ничанаются с libipt_, а ваш libxt_ видимо это и есть "extensions".
iptalbles-1.3.5 no extensions
В iptables-1.3.8 многие extensions отсутствуют. Убрать extensions - это не моё решение так upstream решил: все расширения, которые ещё долго не будут включены в ядро, типа TARPIT, IPMARK, но которые были в iptables-1.3.5 теперь исчезли:
https://bugs.gentoo.org/show_bug.cgi?id=206038
Остались только CLUSTERIP, SET, quota, set, statistic. connlimit там вообще нет, я не понимаю, в каком man'е вы прочитали, что там есть connlimit. Чтобы получить connlimit вам нужно наложеть patch-o-matic вручную.
Правда commlimit уже включён в 1.4.0 и даже без extensions USE-флага у вас он будет.
libxt и libipt с точки зрения пользователя одно и тоже. xt это сокращение от xtables, а ipt от iptables. Просто netfilter потихоньку переписывают на использование более общих структур данных, что в частности должно упростить поддрежку ipv6.
Спасибо за
Спасибо за разъяснения.
Теперь все понятно.
Обновил до
Обновил до iptables-1.4.0-r1.
Беру правило из man'а:
# iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT
iptables: Invalid argument
Что теперь-то не так?
execve("/sbin/iptables",
execve("/sbin/iptables", ["iptables", "-A", "INPUT", "-p", "tcp", "--syn", "--dport", "23", "-m", "connlimit", "--connlimit-above", "2", "-j", "REJECT"], [/* 30 vars */]) = 0
brk(0) = 0x610000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b72c4c50000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b72c4c51000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=32212, ...}) = 0
mmap(NULL, 32212, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b72c4c52000
close(3) = 0
open("/lib/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14528, ...}) = 0
mmap(NULL, 2109728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2b72c4e51000
mprotect(0x2b72c4e53000, 2097152, PROT_NONE) = 0
mmap(0x2b72c5053000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x2b72c5053000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\334\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1293456, ...}) = 0
mmap(NULL, 3399928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2b72c5055000
mprotect(0x2b72c518b000, 2093056, PROT_NONE) = 0
mmap(0x2b72c538a000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x135000) = 0x2b72c538a000
mmap(0x2b72c538f000, 16632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2b72c538f000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b72c5394000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b72c5395000
arch_prctl(ARCH_SET_FS, 0x2b72c5394b00) = 0
mprotect(0x2b72c538a000, 16384, PROT_READ) = 0
mprotect(0x2b72c5053000, 4096, PROT_READ) = 0
mprotect(0x60e000, 4096, PROT_READ) = 0
mprotect(0x2b72c4e4f000, 4096, PROT_READ) = 0
munmap(0x2b72c4c52000, 32212) = 0
brk(0) = 0x610000
brk(0x631000) = 0x631000
open("/etc/nsswitch.conf", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=508, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b72c4c52000
read(3, "# /etc/nsswitch.conf:\n# $Header:"..., 4096) = 508
read(3, "", 4096) = 0
close(3) = 0
munmap(0x2b72c4c52000, 4096) = 0
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=32212, ...}) = 0
mmap(NULL, 32212, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b72c4c52000
close(3) = 0
open("/lib64/tls/x86_64/libnss_db.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64/tls/x86_64", 0x7fffe5e730c0) = -1 ENOENT (No such file or directory)
open("/lib64/tls/libnss_db.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64/tls", 0x7fffe5e730c0) = -1 ENOENT (No such file or directory)
open("/lib64/x86_64/libnss_db.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64/x86_64", 0x7fffe5e730c0) = -1 ENOENT (No such file or directory)
open("/lib64/libnss_db.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/usr/lib64/tls/x86_64/libnss_db.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/tls/x86_64", 0x7fffe5e730c0) = -1 ENOENT (No such file or directory)
open("/usr/lib64/tls/libnss_db.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/tls", 0x7fffe5e730c0) = -1 ENOENT (No such file or directory)
open("/usr/lib64/x86_64/libnss_db.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/x86_64", 0x7fffe5e730c0) = -1 ENOENT (No such file or directory)
open("/usr/lib64/libnss_db.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64", {st_mode=S_IFDIR|0755, st_size=36864, ...}) = 0
munmap(0x2b72c4c52000, 32212) = 0
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=32212, ...}) = 0
mmap(NULL, 32212, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b72c4c52000
close(3) = 0
open("/lib/libnss_files.so.2", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200 \0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=43344, ...}) = 0
mmap(NULL, 2139464, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2b72c5396000
mprotect(0x2b72c53a0000, 2093056, PROT_NONE) = 0
mmap(0x2b72c559f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x2b72c559f000
close(3) = 0
mprotect(0x2b72c559f000, 4096, PROT_READ) = 0
munmap(0x2b72c4c52000, 32212) = 0
open("/etc/protocols", O_RDONLY) = 3
fcntl(3, F_GETFD) = 0
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=1623, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b72c4c52000
read(3, "# /etc/protocols\n#\n# Internet (I"..., 4096) = 1623
close(3) = 0
munmap(0x2b72c4c52000, 4096) = 0
open("/lib64/iptables/libxt_tcp.so", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\f\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14632, ...}) = 0
mmap(NULL, 2109920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2b72c55a1000
mprotect(0x2b72c55a4000, 2093056, PROT_NONE) = 0
mmap(0x2b72c57a3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x2b72c57a3000
close(3) = 0
mprotect(0x2b72c57a3000, 4096, PROT_READ) = 0
open("/lib64/iptables/libxt_connlimit.so", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\10\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=10472, ...}) = 0
mmap(NULL, 2105760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2b72c57a5000
mprotect(0x2b72c57a7000, 2093056, PROT_NONE) = 0
mmap(0x2b72c59a6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x2b72c59a6000
close(3) = 0
mprotect(0x2b72c59a6000, 4096, PROT_READ) = 0
open("/lib64/iptables/libxt_REJECT.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/iptables/libipt_REJECT.so", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\v\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=10344, ...}) = 0
mmap(NULL, 2105632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2b72c59a8000
mprotect(0x2b72c59aa000, 2093056, PROT_NONE) = 0
mmap(0x2b72c5ba9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x2b72c5ba9000
close(3) = 0
mprotect(0x2b72c5ba9000, 4096, PROT_READ) = 0
socket(PF_INET, SOCK_RAW, IPPROTO_RAW) = 3
getsockopt(3, SOL_IP, 0x40 /* IP_??? */, "filter\0\0@0\0_\2\201\377\377\0\340*\327\1\201\377\377\4\0\0\0\0\0\0\0"..., [84]) = 0
getsockopt(3, SOL_IP, 0x41 /* IP_??? */, "filter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., [7960]) = 0
setsockopt(3, SOL_IP, 0x40 /* IP_??? */, "filter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8280) = -1 EINVAL (Invalid argument)
write(2, "iptables: Invalid argument\n", 27iptables: Invalid argument
) = 27
exit_group(1) = ?
у меня почти
у меня почти аналогичная проблема, разве что
iptables: No chain/target/match by that name
если решили, расскажите как
спасибо