по наследству достался маршрутизатор с 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
подскажите как мне это проверить?
Как проверить было ли скомпилировано ядро с нужной опцией? (RedHat 7.3)
Модератор: Bizdelnick
-
Grom
- Сообщения: 260
- ОС: Debian Etch, RHEL-5.4
Re: Как проверить было ли скомпилировано ядро с нужной опцией?
make oldconfig
Послужной список: Slackware-3.x, RedHat-4.x,5.x,6.x,7.x, FedoraCore-3, Debian Etch/Lenny
Осваиваю: RHEL-5.4
Осваиваю: RHEL-5.4
-
ddc
- Бывший модератор
- Сообщения: 3535
- Статус: OpenBSD-compatible
- ОС: OpenBSD -current
Re: Как проверить было ли скомпилировано ядро с нужной опцией?
Код: Выделить всё
zcat /proc/config.gz | grep '*CONFIG_IP_TRANSPARENT_PROXY*'-
F-8
- Сообщения: 13
Re: Как проверить было ли скомпилировано ядро с нужной опцией?
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
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: Как проверить было ли скомпилировано ядро с нужной опцией?
На сколько я понял, при конфигурировании использования netfilter и включении CONFIG_IP_NF_COMPAT_IPFWADM, эта опция включается автоматически (т.е. определяется в тексте самого модуля ip_fwadm).
Иначе говоря, если в модулях ядра имеется ipfwadm.o, то эта опция была использована.
Но если CONFIG_IP_NF_COMPAT_IPFWADM вкомпилирована в ядро, то в модулях ядра ipfwadm.o не будет. В этом случае ничего сказать не могу.
Но в ядре, используем по-умолчанию, эта штука присутствует именно в виде модуля.
Иначе говоря, если в модулях ядра имеется ipfwadm.o, то эта опция была использована.
Но если CONFIG_IP_NF_COMPAT_IPFWADM вкомпилирована в ядро, то в модулях ядра ipfwadm.o не будет. В этом случае ничего сказать не могу.
Но в ядре, используем по-умолчанию, эта штука присутствует именно в виде модуля.
-
F-8
- Сообщения: 13
Re: Как проверить было ли скомпилировано ядро с нужной опцией?
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: Как проверить было ли скомпилировано ядро с нужной опцией?
Не знаю доподлинно, как именно это работает, но думаю, что все это должно работать с использованием netfilter, в данном случае iptables. Т.е. если если используется форвард портов средствами masquerade или nat.
Кроме того, в штатном ядре скомпилирован модуль ipfwadm.o, а ipfwadm_core.o нет.
Опять же не знаю, может ли это иметь значение, и какое.
Кроме того, в штатном ядре скомпилирован модуль ipfwadm.o, а ipfwadm_core.o нет.
Опять же не знаю, может ли это иметь значение, и какое.
-
F-8
- Сообщения: 13
Re: Как проверить было ли скомпилировано ядро с нужной опцией?
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: Как проверить было ли скомпилировано ядро с нужной опцией?
Читайте iptables tutorial на русском.
Имейте ввиду, что ftp имеет два режима: активный и пассивный, они по-разному работают с портом ftp-data.
Подробностей не помню, т.к. сам в этом вопросе глубоко не разбирался.
Вопросы по правильной настройке работы ftp через iptables появляются на форумах по линукс чуть ли не каждый день.
Ответы несколько реже, т.к. эти вопросы уже набили оскомину.
Google в помощь.
Hint: для поддержки корректной работы ftp через iptables имеются модули ip_conntrack_ftp.o и ip_nat_ftp.o (если эти возможности не вкомпилированы в само ядро).
Имейте ввиду, что ftp имеет два режима: активный и пассивный, они по-разному работают с портом ftp-data.
Подробностей не помню, т.к. сам в этом вопросе глубоко не разбирался.
Вопросы по правильной настройке работы ftp через iptables появляются на форумах по линукс чуть ли не каждый день.
Ответы несколько реже, т.к. эти вопросы уже набили оскомину.
Google в помощь.
Hint: для поддержки корректной работы ftp через iptables имеются модули ip_conntrack_ftp.o и ip_nat_ftp.o (если эти возможности не вкомпилированы в само ядро).
-
F-8
- Сообщения: 13
Re: Как проверить было ли скомпилировано ядро с нужной опцией?
Archont
спасибо за помощь!
все получилось после
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
спасибо за помощь!
все получилось после
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp