LINUX.ORG.RU
ФорумAdmin

После перехода на pppoe не работают postfix и apache


0

0

Всем привет!

Есть сервер Red Hat 7.3, подключенный к интернету. На нем крутятся
postfix, apache, squid, proftpd и т.д.

После перехода на соединение pppoe:

перестала работать доставка почты в postfix;
пропал доступ к веб-сайту.

В то же время, работают:

ftp-сервер;
squid;
ping с внешнего мира;
отправка почты в postfix.

Что может быть причиной такой неприятности? Может быть, изменения,
которые были внесены при выполнении скрипта adsl-setup? Firewall
при настройке выбирал NONE (0). Файл resolv.conf был изменен после
этого скрипта (вернее, уменьшен до двух строк, которые были и в старом
варианте).

Могло ли это повлиять на работу postfix и apache?


$ cat /etc/ppp/ip-up.d/0clampmss

#!/bin/sh
# Enable MSS clamping (autogenerated by pppoeconf)

iptables -t mangle -o "$PPP_IFACE" --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

sdio ★★★★★
()
Ответ на: комментарий от sdio

Спасибо, но у меня нет такого пути: /etc/ppp/ip-up.d/0clampmss В каталоге /etc/ppp есть только следующие файлы:

chap-secrets ip-down ipv6-down pap-secrets chap-secrets.bak ip-down.ipv6to4 ipv6-up pap-secrets.bak firewall-masq ip-up options pppoe-server-options firewall-standalone ip-up.ipv6to4 options.ttyS0

Если же я ввожу эту команду (iptables ...) в командной строке, то в ответ выдается: iptables: No chain/target/match by that name

Я правильно понял, что надо открыть дополнительные порты? Как это сделать?

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

$ lsmod | grep tcpmss
xt_tcpmss 2336 1
x_tables 13316 10 ipt_TCPMSS,xt_tcpmss,ipt_MASQUERADE,ipt_REDIRECT,iptable_nat,ipt_LOG,xt_limit,x t_state,xt_tcpudp,ip_tables

sdio ★★★★★
()
Ответ на: комментарий от dk2705

>Я правильно понял, что надо открыть дополнительные порты? Как это сделать?

Поняли вы не правильно. Прочитайте "man iptables" и разберитесь со всеми перечисленными опциями предложенной вам команды iptables.

Вам предложили добавить правило, которое уменьшит MSS tcp-сессий. Хотя, если не работает apache на сервере, то правило надо в цепочку INPUT, а не в FORWARD Попробуйте более простой вариант:

iptables -I INPUT -i ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200

Хотя может у вас просто в firewall'е запрещены входящие соединения с ppp0 или еще что накручено. Покажите вывод "iptables -L -n -v"

mky ★★★★★
()
Ответ на: комментарий от mky

Команда iptables -I INPUT -i ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200

тоже не выполняется: iptables: No chain/target/match by that name

iptables -L -n -v выводит: ----------------- Chain INPUT (policy ACCEPT 1337K packets, 301M bytes) pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 2017K packets, 129M bytes) pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 1620K packets, 1073M bytes) pkts bytes target prot opt in out source destination -----------------

iptables-save выводит: ----------------- # Generated by iptables-save v1.2.5 on Wed Feb 13 11:44:36 2008 *nat :PREROUTING ACCEPT [148782:8020000] :POSTROUTING ACCEPT [23659:1404587] :OUTPUT ACCEPT [23257:1427605] -A POSTROUTING -s 192.168.0.0/255.255.0.0 -p tcp -m tcp ! --dport 80 -j MASQUERADE -A POSTROUTING -s 192.168.0.0/255.255.0.0 -p icmp -j MASQUERADE -A POSTROUTING -s 192.168.0.0/255.255.0.0 -p udp -j MASQUERADE COMMIT # Completed on Wed Feb 13 11:44:36 2008 # Generated by iptables-save v1.2.5 on Wed Feb 13 11:44:36 2008 *mangle :PREROUTING ACCEPT [3441955:434747682] :INPUT ACCEPT [1357813:302099490] :FORWARD ACCEPT [2083991:132636091] :OUTPUT ACCEPT [1653222:1113230447] :POSTROUTING ACCEPT [3737734:1245961101] COMMIT # Completed on Wed Feb 13 11:44:36 2008 # Generated by iptables-save v1.2.5 on Wed Feb 13 11:44:36 2008 *filter :INPUT ACCEPT [1357813:302099490] :FORWARD ACCEPT [2083991:132636091] :OUTPUT ACCEPT [1653222:1113230447] COMMIT # Completed on Wed Feb 13 11:44:36 2008 -----------------

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

Извините за формат предыдущего сообщения.

Команда
iptables -I INPUT -i ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200 
тоже не выполняется:
iptables: No chain/target/match by that name 

iptables -L -n -v
выводит:
-----------------
Chain INPUT (policy ACCEPT 1337K packets, 301M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 2017K packets, 129M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1620K packets, 1073M bytes)
 pkts bytes target     prot opt in     out     source               destination         
----------------- 

iptables-save выводит:
-----------------
# Generated by iptables-save v1.2.5 on Wed Feb 13 11:44:36 2008
*nat
:PREROUTING ACCEPT [148782:8020000]
:POSTROUTING ACCEPT [23659:1404587]
:OUTPUT ACCEPT [23257:1427605]
-A POSTROUTING -s 192.168.0.0/255.255.0.0 -p tcp -m tcp ! --dport 80 -j MASQUERADE 
-A POSTROUTING -s 192.168.0.0/255.255.0.0 -p icmp -j MASQUERADE 
-A POSTROUTING -s 192.168.0.0/255.255.0.0 -p udp -j MASQUERADE 
COMMIT
# Completed on Wed Feb 13 11:44:36 2008
# Generated by iptables-save v1.2.5 on Wed Feb 13 11:44:36 2008
*mangle
:PREROUTING ACCEPT [3441955:434747682]
:INPUT ACCEPT [1357813:302099490]
:FORWARD ACCEPT [2083991:132636091]
:OUTPUT ACCEPT [1653222:1113230447]
:POSTROUTING ACCEPT [3737734:1245961101]
COMMIT
# Completed on Wed Feb 13 11:44:36 2008
# Generated by iptables-save v1.2.5 on Wed Feb 13 11:44:36 2008
*filter
:INPUT ACCEPT [1357813:302099490]
:FORWARD ACCEPT [2083991:132636091]
:OUTPUT ACCEPT [1653222:1113230447]
COMMIT
# Completed on Wed Feb 13 11:44:36 2008
-----------------

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

Помогите, пожалуйста, разобраться, почему не выполняются команды,
предложенные Вами для уменьшения MSS. Обе команды выдают:

iptables: No chain/target/match by that name 

Может ли это быть из-за того, что ядро версии 2.4.20?

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

Так я же и выполнял с опцией "-t mangle":

iptables -t mangle -o "$PPP_IFACE" --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

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

Да.
Еще вот что хотелось бы выяснить: Вы предлагаете команды для уменьшения MSS, но на одном из сайтов я прочитал:
------------------------
С недавних пор, ядра Linux и некоторые драйверы PPPoE, стали поддерживать такую особенность, как 'clamp the MSS' (ограничение размера MSS). 
...
Чтобы иметь возможность манипулировать размером сегмента, у вас должны быть установлены iptables, не ниже 1.2.1a и ядро Linux, не ниже 2.4.3. Основная команда iptables: 

# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu      
      
Она рассчитает правильный MSS для вашего соединения.
------------------------
Так вот, у меня ядро 2.4.20 (система Red Hat 7.3).
Означает ли это, что я не могу манипулировать размером MSS? Если да, как организовать нормальную работу почты через pppoe?

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

Есть мнение, что соответствующие пакеты рубятся фаерволом.
Добавил команды для интерфейса ppp0 и порта 80 (веб-сервер):

iptables -N prov
iptables -A INPUT -i ppp0 -j prov
iptables -A prov -p tcp --dport 80 -j ACCEPT

После этого ничего не изменилось:(
Какие команды нужны, чтобы пропустить пакеты?
Где хранится журнал отвергнутых пакетов? В книге сказано, что в
/var/syslog, но такого журнала нет.

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

>Какие команды нужны, чтобы пропустить пакеты?

У вас пустой firewall, политика ACCEPT, поэтому добавленные вами правила не нужны. Ядро не логирует отвергаемые пакеты, для этого в явном виде в iptables должно быть правило "-j LOG", но в вашем случае это не надо, и так разрешены все пакеты.

Как я понял по правилам в iptables (MASQUERADE) сервер выполняет функции маршрутизатора. Веб сайт не доступен, и снаружи, и изнутри? На ppp интерфейс выдается реальный ip-адрес? Такой же как был раньше? Посмотрите вывод команды "netstat -t -l -n -p", там 80-ый порт слушается?

Я не знаю, почему у вас iptables -j TCPMSS дает ошибку, может у вас не дистрибутивное ядро? Базово RedHat 7.3 шел с ядром 2.4.18, ядро 2.4.20 входило в update, но может быть у вас его уже пересобирали и не включили TCPMSS. Если ядро дистрибутивное, то TCPMSS должен быть модулем и лежать здесь: "/lib/modules/2.4.20-???/kernel/net/ipv4/netfilter/ipt_TCPMSS.o" (вместо вопросов будет стоять 28.7 или похожее число).

Что показывает команда "uname -a"?

mky ★★★★★
()
Ответ на: комментарий от mky

Веб-сайт изнутри доступен.
ip-адрес реальный (после перехода на pppoe он изменился, но был перерегистрирован правильно). Пинг извне проходит, ftp-сервер извне доступен.

netstat -t -l -n -p
Все необходимые порты слушаются, в т.ч. 80.

Есть файл 
/lib/modules/2.4.18-3/kernel/net/ipv4/netfilter/ipt_TCPMSS.o

uname -a
Linux <mydomain.org> 2.4.20 #5 Wed May 28 21:43:47 EEST 2003 i686 unknown

Какой командой можно проверить, входит ли в ядро TCPMSS?

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

>Есть файл /lib/modules/2.4.18-3/kernel/net/ipv4/netfilter/ipt_TCPMSS.o

Это от дистрибутивного (оригинального) ядра. То что uname говорит 2.4.20 #5, похоже означает, что ядро самосборное. Так как здесь http://stuff.mit.edu/afs/athena/system/rhlinux/redhat-7.3-updates/RPMS/ нет update на ядро 2.4.20-5, только на 2.4.20-13 и выше. В принципе можно порекомендовать скачать более свежее ядро http://stuff.mit.edu/afs/athena/system/rhlinux/redhat-7.3-updates/RPMS/kernel... или i586 (если пентиум), 13 Мбайт трафика, но не понятно, почему делалось самосбороное ядро, может чего в дистрибутивном не хватало...

Есть ли каталог /lib/modules/2.4.20? Есть ли каталог /usr/src/linux? Если оба каталога есть, значит текщее ядро собрано с поддержкой модулей и есть его исходники. Тогда можно будет сделать "cd /usr/src/linux", "make menuconfig", выбрать поодежку TCPMSS модулем [M] (если она еще не выбрана build-in [*]), потом "make modules", если все без ошибок, то найти в /usr/src/linux файл ipt_TCPMSS.o, выполнить insmod на этот файл... Если ядро не зависнет, то можно будет попробовать выполнить команду iptables, а файл ipt_TCPMSS.o скоприровать в /lib/modules/2.4.20 и выполнить команду depmod -a

Если нет, то наверное придется пересобирать ядро...

P.S. А еще, можно сначала попробовать запустить

tcpdump -i ppp0 -n -nn port 80 and host "ваш реальный ip адрес"

потом обратиться с наружи и если не будет не одного пакета, значит просто провайдер перекрыл вам 80-ый порт...

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.