LINUX.ORG.RU
ФорумAdmin

Как включить хелперы?

 , , ,


0

1
[root@de ~]# uname -a
Linux de 2.6.32-696.20.1.el6.i686 #1 SMP Fri Jan 26 18:13:32 UTC 2018 i686 i686 i386 GNU/Linux
[root@de ~]# iptables --version
iptables v1.4.7
[root@de ~]# conntrack --version
conntrack v0.9.13 (conntrack-tools)

[root@de ~]# dmesg | grep conntrack
nf_conntrack version 0.5.0 (16097 buckets, 64388 max)
conntrack: generic helper won't handle protocol 47. Please consider loading the specific helper module.

[root@de ~]# lsmod | grep '^\w*\(ppp\|gre\|conntrack\)' | sort
nf_conntrack           65336  4 iptable_nat,nf_nat,nf_conntrack_ipv4,xt_state
nf_conntrack_ipv4       7374  7 iptable_nat,nf_nat
ppp_async               6534  2
ppp_generic            21173  10 ppp_mppe,ppp_async
ppp_mppe                5230  4
[root@de ~]#

[root@de ~]# iptables-save
# Generated by iptables-save v1.4.7 on Wed Jan  8 23:39:49 2025
*nat
:PREROUTING ACCEPT [931:257968]
:POSTROUTING ACCEPT [70:5024]
:OUTPUT ACCEPT [70:5024]
-A POSTROUTING -s 10.0.2.0/24 -o eth0 -j SNAT --to-source 10.0.1.1
COMMIT
# Completed on Wed Jan  8 23:39:49 2025
# Generated by iptables-save v1.4.7 on Wed Jan  8 23:39:49 2025
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [88:9926]
:OUTPUT ACCEPT [1002:167543]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5201 -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Wed Jan  8 23:39:49 2025

pptp работает, но хелперы не загружаются. Пытаюсь их загрузить, но ни один из известных способов не поддерживается:

[root@de ~]# iptables -t raw -A PREROUTING -p tcp --dport 1723 -j CT --helper pptp
iptables v1.4.7: unknown option `--helper'
Try `iptables -h' or 'iptables --help' for more information.

[root@de ~]# sysctl -w net.netfilter.nf_conntrack_helper=1
error: "net.netfilter.nf_conntrack_helper" is an unknown key

[root@de ~]# echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper
-bash: /proc/sys/net/netfilter/nf_conntrack_helper: No such file or directory


[root@de ~]# sysctl -a | grep conntrack
net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 180
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_acct = 0
net.netfilter.nf_conntrack_events = 1
net.netfilter.nf_conntrack_events_retry_timeout = 15
net.netfilter.nf_conntrack_max = 64388
net.netfilter.nf_conntrack_count = 71
net.netfilter.nf_conntrack_buckets = 16384
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_expect_max = 256
net.nf_conntrack_max = 64388

[root@de ~]# ls /proc/sys/net/netfilter/
nf_conntrack_acct                  nf_conntrack_tcp_timeout_close
nf_conntrack_buckets               nf_conntrack_tcp_timeout_close_wait
nf_conntrack_checksum              nf_conntrack_tcp_timeout_established
nf_conntrack_count                 nf_conntrack_tcp_timeout_fin_wait
nf_conntrack_events                nf_conntrack_tcp_timeout_last_ack
nf_conntrack_events_retry_timeout  nf_conntrack_tcp_timeout_max_retrans
nf_conntrack_expect_max            nf_conntrack_tcp_timeout_syn_recv
nf_conntrack_generic_timeout       nf_conntrack_tcp_timeout_syn_sent
nf_conntrack_icmp_timeout          nf_conntrack_tcp_timeout_time_wait
nf_conntrack_log_invalid           nf_conntrack_tcp_timeout_unacknowledged
nf_conntrack_max                   nf_conntrack_udp_timeout
nf_conntrack_tcp_be_liberal        nf_conntrack_udp_timeout_stream
nf_conntrack_tcp_loose             nf_log
nf_conntrack_tcp_max_retrans

Так как же включить хелперы в этой конфигурации?



Последнее исправление: Isica (всего исправлений: 1)

Не знаю что за хелперы такие вообще, но подозреваю что в ядре 2.6 того что ты хочешь просто нет.

У меня в debian 9 с ядром 4.9 опции net.netfilter.nf_conntrack_helper тоже нет. В debian 10 и 11 (ядра 4.19 и 5.10) - есть.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)

Сами хелперы присутствуют:

[root@de ~]# cat /boot/config-2.6.32-696.20.1.el6.i686 | grep -i conntrack
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_BROADCAST=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_SNMP=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NF_CONNTRACK_IPV4=m
# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
CONFIG_NF_CONNTRACK_IPV6=m

Вопрос в том, как заставить их загружаться?

Isica
() автор топика
Ответ на: комментарий от YAR

А в то время были хелперы? Вроде просто для каждого протокола подгружался свой модуль и все.

Ээ… так хелпер вроде-как и есть «модуль для протокола»??

Хелперы упоминаются как минимум в двух местах:

[root@de ~]# dmesg | grep conntrack
nf_conntrack version 0.5.0 (16097 buckets, 64388 max)
conntrack: generic helper won't handle protocol 47. Please consider loading the specific helper module.
  1. В man iptables:
       Statuses for --ctstatus:

       NONE   None of the below.

       EXPECTED
              This is an expected connection (i.e. a conntrack helper set it up)
---------------------------------------------------------

   helper
       This module matches packets related to a specific conntrack-helper.

       [!] --helper string
              Matches packets related to the specified conntrack-helper.

              string can be "ftp" for packets related to a ftp-session on default port.
              For other ports append -portnr to the value, ie. "ftp-2121".

              Same rules apply for other conntrack-helpers.
--------------------------------------------------------------

       iptables  -t mangle -A balance -m conntrack --ctstate NEW -m helper --helper ftp
       -m rateest --rateest-delta --rateest1 eth0 --rateest-bps1  2.5mbit  --rateest-gt
       --rateest2 ppp0 --rateest-bps2 2mbit -j CONNMARK --set-mark 1

       iptables  -t mangle -A balance -m conntrack --ctstate NEW -m helper --helper ftp
       -m rateest --rateest-delta --rateest1  ppp0  --rateest-bps1  2mbit  --rateest-gt
 

В любом случае, как сделать, чтобы эти модули сами загружались, когда нужно (т.е., вместе с сервисом iptables, ибо при остановке iptables они выгружаются) и использовались?

Isica
() автор топика
Ответ на: комментарий от Isica

Ээ… так хелпер вроде-как и есть «модуль для протокола»??

Пожалуй, криво выразился. Да, в общем случае - да. Просто раньше, насколько помню, достаточно было подгрузки модуля. Нет, автоматом он не будет грузиться и надо указывать его в своих скриптах. Насчет правил - не помню, вроде там ничего дополнительно не указывалось, но утверждать не буду, надо найти где-то какой-нибудь из своих старых скриптов. Сейчас синтаксис поменялся, модуль не нужен, а в правилах указывается «helper» с нужным протоколом.

YAR ★★★★★
()