Как отключить модуль ядра nf_conntrack в CentOS 5.3 без перекомпиляции ядра
Я использую CentOS 5.3 и хочу отключить модуль nf_conntrack, чтобы улучшить производительность сети для haproxy. Я запускаю iptables с некоторыми простыми правилами. Мне действительно не нужно отслеживать соединение.
Я работаю на облачных серверах Rackspace, поэтому не могу запустить собственное ядро. Я попытался запустить modprobe, но это не работает.
[mmarano@w1 w1]$ sudo modprobe -n -r nf_conntrack
FATAL: Module nf_conntrack is in use.
[mmarano@w1 w1]$ uname -a
Linux w1.somewhere.com 2.6.24-23-xen #1 SMP Mon Jan 26 03:09:12 UTC 2009 x86_64 x86_64 x86_64 GNU/Linux
[mmarano@w1 w1]$ cat /etc/redhat-release
CentOS release 5.3 (Final)
Я хочу продолжать запускать iptables после удаления, поэтому я не могу полностью отказаться от всех сетевых фильтров. У кого-нибудь есть мысли?
5 ответов
удалите любую ссылку на модуль состояния в iptables. Таким образом, нет правил, как
-A ВХОД -m состояние - СОСТОЯНИЕ ОТНОШЕНО, УСТАНОВЛЕНО -j ПРИНЯТЬ
для модуля состояния требуется модуль nf_conntrack (ip_conntrack)
удалите следующую строку (если она существует) в / etc / sysconfig / iptables-config
IPTABLES_MODULES = "ip_conntrack_netbios_ns"
Этот модуль требует ip_conntrack, который мы пытаемся угробить.
перезагрузите iptables без ваших правил штата.
sudo iptables -F
# добавь свои настоящие правила
бросьте модули. Я должен был использовать:
sudo modprobe -r xt_NOTRACK nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_state
sudo modprobe -r nf_conntrack
подтвердите, что у вас нет ссылки на /proc/net/nf_conntrack
Как насчет добавления модуля в
/etc/modprobe.d/blacklist.conf
?Ты пытался:
rmmod -f modulename
Хотя:
-f --force Эта опция может быть чрезвычайно опасной: она не действует, если CONFIG_MODULE_FORCE_UNLOAD был установлен во время компиляции ядра. С помощью этой опции вы можете удалить используемые модули, или которые не предназначены для удаления, или были помечены как небезопасно (см. lsmod(8)).
Если вы используете Haproxy, вам нужно два типа правил в iptables для отключения conntrack в порту 80: одни для соединений от клиентов к вашему балансировщику и другие от вашего балансировщика к бэкэндам.
Вот правильный пример:
iptables -t raw -I PREROUTING -p tcp --dport 80 -j NOTRACK
iptables -t raw -I PREROUTING -p tcp --sport 80 -j NOTRACK
iptables -t raw -I OUTPUT -p tcp --dport 80 -j NOTRACK
iptables -t raw -I OUTPUT -p tcp --sport 80 -j NOTRACK
Это полностью отключит отслеживание соединений.
iptables -t raw -I PREROUTING -j NOTRACK
iptables -t raw -I OUTPUT -j NOTRACK
Когда я делаю "modprobe -rf xt_state" и "modprobe -rf nf_conntrack_ipv6", он говорит: "FATAL: модуль xt_state используется."(Для centos).
"modused" может быть полезным, это может уменьшить количество использования любого модуля: http://www2.informatik.uni-freiburg.de/~danlee/fun/modused/
Ключ: остановка службы ip6tables
и добавьте nf_conntrack, xt_state, iptable_nat, nf_nat, nf_conntrack_ipv4, nf_conntrack_ipv6 в /etc/modprobe.d/blacklist.conf