Как проверить было ли скомпилировано ядро с нужной опцией? (RedHat 7.3)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

F-8
Сообщения: 13

Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение F-8 »

по наследству достался маршрутизатор с RedHat 7.3 (Linux version 2.4.18-3)
понадобилось кое-что изменить в функциональности... но споткнулся на том что не знаю как проверить - было ли ядро скомпилировано с поддержкой transparent proxy?

я попробовал найти CONFIG_IP_TRANSPARENT_PROXY в исходниках, но чего-то не понял... эта строчка встречается только в одном файле /usr/src/linux-2.4.18-3/net/ipv4/netfilter/ipfwadm_core.c
также попробовал поискать в make menuconfig, но и там не увидел ничего близкого по смыслу к опции transparent_proxy

подскажите как мне это проверить?
Спасибо сказали:
Grom
Сообщения: 260
ОС: Debian Etch, RHEL-5.4

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение Grom »

make oldconfig
Послужной список: Slackware-3.x, RedHat-4.x,5.x,6.x,7.x, FedoraCore-3, Debian Etch/Lenny
Осваиваю: RHEL-5.4
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение ddc »

Код: Выделить всё

zcat /proc/config.gz | grep '*CONFIG_IP_TRANSPARENT_PROXY*'
Спасибо сказали:
F-8
Сообщения: 13

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение F-8 »

Grom
cd /usr/src/linux
make oldconfig > log.txt
cat log.txt | grep 'TRANSPARENT'

пусто...
и что это значит? что не было скомпилировано с опцией? или что такой опции не существует?
строчку CONFIG_IP_TRANSPARENT_PROXY я взял из инета - по поиску выдается именно этот параметр для transparent proxy support

ddc
zcat /proc/config.gz | grep '*CONFIG_IP_TRANSPARENT_PROXY*'
zcat: /proc/config.gz: No such file or directory
Спасибо сказали:
Archont
Сообщения: 76

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение Archont »

На сколько я понял, при конфигурировании использования netfilter и включении CONFIG_IP_NF_COMPAT_IPFWADM, эта опция включается автоматически (т.е. определяется в тексте самого модуля ip_fwadm).
Иначе говоря, если в модулях ядра имеется ipfwadm.o, то эта опция была использована.
Но если CONFIG_IP_NF_COMPAT_IPFWADM вкомпилирована в ядро, то в модулях ядра ipfwadm.o не будет. В этом случае ничего сказать не могу.
Но в ядре, используем по-умолчанию, эта штука присутствует именно в виде модуля.
Спасибо сказали:
F-8
Сообщения: 13

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение F-8 »

Archont писал(а):
07.02.2006 13:13
На сколько я понял, при конфигурировании использования netfilter и включении CONFIG_IP_NF_COMPAT_IPFWADM, эта опция включается автоматически (т.е. определяется в тексте самого модуля ip_fwadm).
Иначе говоря, если в модулях ядра имеется ipfwadm.o, то эта опция была использована.
Но если CONFIG_IP_NF_COMPAT_IPFWADM вкомпилирована в ядро, то в модулях ядра ipfwadm.o не будет. В этом случае ничего сказать не могу.
Но в ядре, используем по-умолчанию, эта штука присутствует именно в виде модуля.

спасибо! вроде похоже на правду. но что дальше?

make oldconfig > log.txt
cat log.txt | grep 'COMPAT'
ipchains (2.2-style) support (CONFIG_IP_NF_COMPAT_IPCHAINS) [M/n/y/?]
ipfwadm (2.0-style) support (CONFIG_IP_NF_COMPAT_IPFWADM) [M/n/y/?]
assume boards are SYMBIOS compatible (EXPERIMENTAL) (CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT) [N/y/?]

то что M заглавная означает то что было влючено в виде модуля?
т.е. возможно при требовании как-то загрузить эту поддержку без перекомпиляции ядра?


для полноты картины попробую описать свою проблему целиком:

дано:
1. машина с RedHat:
- eth0 ip 194.xxx.xxx.xxx
- eth1 ip 192.168.1.1

2. машина с w2k (подключена кроссовером к машине 1):
- ip 192.168.1.2
- gw 192.168.1.1
запущен FTP-сервер.
машинка NATится наружу с помощью строчки ipchains
-A forward -s 192.168.1.2 -j MASQ

надо:
чтобы FTP-сервер на машине 2 был виден наружу и чтобы он в логах фиксировал реальные IP-адреса клиентов.

что я делал:
прописываю в xinetd.conf

service ftp
{
bind= 194.xxx.xxx.xxx
type= UNLISTED
redirect= 192.168.1.2 21
log_type= SYSLOG daemon info
wait= no
socket_type= stream
user= root
}

и подключаюсь по ftp на реальный адрес первой машины - редирект срабатывает и вижу каталог FTP
но как понимаю, xinetd сам все маскарадит, и поэтому в логах FTP все обращения видны от 192.168.1.1

после некоторых мучений с xinetd и ipchains я временно отключил правило ftp в xinetd и докопался до утилитки portfwd
записал в portfwd.cfg строчку
tcp { 21 { => 192.168.1.2 21}}

так не получилось (насколько понял, в отличие от варианта с xinetd теперь встроенный ftp-сервер отвечает первым.)
220 ready, dude (vsFTPd 1.0.1: beat me, break me)

чуток меняю строчку
tcp { 3129 { => 192.168.1.2 21}}
и цепляюсь снаружи на порт 3129 и вижу приглашение виндового serv-u
собственно, соединения я добился, но опять же в логах на винде светится 192.168.1.1 ;(

далее прочитал в хелпе по portfwd

Transparent Proxy

The -t switch enables transparent proxying; i.e. IP
address of outgoing data are "faked" to match those
from incoming data. If you plan to forward data to
hosts behind your firewall, you probably want this
option turned on, as it allows for your servers to see
original addresses of clients.

Of course, this feature requires transparent proxy
support compiled in your kernel.


полез редактировать /etc/rc.d/init.d/portfwd где в case start добавил к вызову portfwd ключ -t
потом service portfwd restart
и вообще тишина, т.е. никакого соединения после добавления этого ключа не получается.

после этого и возник вопрос о том как проверить поддержку transparent proxy...

что делать?
Спасибо сказали:
Archont
Сообщения: 76

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение Archont »

Не знаю доподлинно, как именно это работает, но думаю, что все это должно работать с использованием netfilter, в данном случае iptables. Т.е. если если используется форвард портов средствами masquerade или nat.
Кроме того, в штатном ядре скомпилирован модуль ipfwadm.o, а ipfwadm_core.o нет.
Опять же не знаю, может ли это иметь значение, и какое.
Спасибо сказали:
F-8
Сообщения: 13

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение F-8 »

Archont писал(а):
08.02.2006 16:50
Не знаю доподлинно, как именно это работает, но думаю, что все это должно работать с использованием netfilter, в данном случае iptables. Т.е. если если используется форвард портов средствами masquerade или nat.
Кроме того, в штатном ядре скомпилирован модуль ipfwadm.o, а ipfwadm_core.o нет.
Опять же не знаю, может ли это иметь значение, и какое.


спасибо за наводку!
раньше я пробовал вызывать ipfwadm и iptables но получал ошибки...
тут я обнаружил что существует утилитка modprobe после чего просто выгрузил ipchains
потом modprobe ipfwadm сработало.
но при попытке добавить правило получал сообщение Generic IP Firewall Chains not in this kernel
в конце я начал копаться с iptables
сначала настроил маскарадинг внутреннего компа во внешнюю сеть
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.2 -j MASQUERADE
потом попробовал запустить portfwd с ключом -t и без него. результат остался прежним...
потом я просто выключил portfwd и добавил в правила следующую строчку:
iptables -t nat -A PREROUTING -p tcp --dport 80 -d ! 192.168.1.0/24 -j DNAT --to-destination 192.168.1.2:81
и после этого наконец-то оно заработало как надо! т.е. на виндовом FTP сервере я увидел реальный IP клиента.
уфф... счаз буду пытаться понять как оно все-таки реально работает. и что надо еще доделать...

если еще что-нибудь посоветуете по правильной настройке проброса FTP с помощью правил iptables - буду благодарен.
спасибо.
Спасибо сказали:
Archont
Сообщения: 76

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение Archont »

Читайте iptables tutorial на русском.
Имейте ввиду, что ftp имеет два режима: активный и пассивный, они по-разному работают с портом ftp-data.
Подробностей не помню, т.к. сам в этом вопросе глубоко не разбирался.
Вопросы по правильной настройке работы ftp через iptables появляются на форумах по линукс чуть ли не каждый день.
Ответы несколько реже, т.к. эти вопросы уже набили оскомину.
Google в помощь.
Hint: для поддержки корректной работы ftp через iptables имеются модули ip_conntrack_ftp.o и ip_nat_ftp.o (если эти возможности не вкомпилированы в само ядро).
Спасибо сказали:
F-8
Сообщения: 13

Re: Как проверить было ли скомпилировано ядро с нужной опцией?

Сообщение F-8 »

Archont
спасибо за помощь!
все получилось после
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
Спасибо сказали: