Apache не отдаёт картинки
Здравствуйте!
Есть маршрутизатор с тремя интерфейсами, один if смотрит в инет, второй во внешнюю локалку, третий во внутреннюю локалку. Пользователи из внутренней локалки посещают внешнюю и инет через NAT. На нём же поднят apache и крутится 2 сайта - один привязан к if внешней локалке, другой к if смотрящий в инет. Случилась такая оказия: при посещении сайтов, расположенных на этом маршрутизаторе из внутренней локалки apache не отдаёт картинки, т.е. сайт грузится (хотя очень медленно) и загружается всё, кроме графических элементов. Судя по access_log apache отдаёт картинки, но реально никаких картинок в окне браузера не видать. Не открывается даже если пробовать открыть по прямой ссылке. При всём этом из вне (внешняя локалка, инет) всё работает нормально. Куда копать не знаю, подскажите плиз, что можно попробовать?
- Для комментирования войдите или зарегистрируйтесь
iptables -nL && iptables -t
iptables -nL && iptables -t mangle -nL && iptables -t nat -nL
Для начала ...
Всё тут Если нужны еще какие
Всё тут
Если нужны еще какие конфиги пишите - выложу
еще нужно netstat -nvl | grep
еще нужно netstat -nvl | grep 80 и ваше объяснение: что отдает днс пользователю когда он набирает локальный сайт из внутренней сети.
Если это ваш днс то скорее всего вы настраивали "view" для локальной сети. И соответственно внутренние гиперсылки на сайт относительные и нет на сайте внешних ссылок
Как проверить? С любого пользователя просто запустите http_headers приблуду (плагин по русски) и созерцайте. Если не поймете то выкладывайте для проверки.
Если днс не настраивали то проверьте - не натыкаются ли ваши пакеты от внутренней сети на правило -m state --state INVALID. Поскольку state машина в отдельных случаях будет считать правильно - пакет пришел не из той сети и поэтому заблокирует (переход состояния на RELATED, а запрос не с той сети). Соответственно брузер будет ждать, потом догрузит остальное ... Как видите вариантов много. Лучше вооружится tcpdump
Апач висит на 0.0.0.0:80,
Апач висит на 0.0.0.0:80, view действительно настроен, пользователю отдаётся реальный адрес интерфейса, на котором висит сайт. "...И соответственно внутренние гиперсылки на сайт относительные и нет на сайте внешних ссылок..." - не совсем понял что это значит :) На -m state --state INVALID точно не натыкаются - пробовал даже с остановленным файерволом. Подскажите, что именно смотреть в tcpdump?
_Andrey написал(а): Апач
Апач слушает все интерфейсы, "view" настроена - не вяжется с тем что пользователю отдаётся реальный адрес интерфейса. Мы правильно понимаеим друг друга - опреатор view в bind.conf? Попробуйте еще поигратся с rp_filter в sysctl
Да, view в named.conf, я даже
Да, view в named.conf, я даже не предполагал, что это может быть взаимосвязано :) попробую привязать apache к определённым интерфейсам... rp_filter уже дёргал, что 0 что 1 результата нет
Замечания по файерволу
А еще я так и не понял - куча правил, реально действуют только 2 в INPUT и nat таблица.
Фишка в том, что политика по
Фишка в том, что политика по умолчанию DROP и для INPUT и для FORWARD. Не знаю как там вышло, что ACCEPT, наверное забыл сменить после экспериментов с файерволом :)
Мне кажется, что мы на верном
Мне кажется, что мы на верном пути :) Привязал apache к определённым if - с сайтом на локальном адресе проблема пропала, осталась только с внешним.
UPD: смотрел tcpdump'ом что куда идёт, когда обращаешься к сайту на внешнем адресе, заметил такую бодягу, что проскакивают пакеты размером более 1500 байт (!) Вероятно проблема кроется в этом, но почему так? во всех отношениях с этим if всё в порядке, проблема только с сайтом...
Диагноз подтвердился
Диагноз подтвердился (эксперементальным путём, временной подменой сетевой карты): дело действительно в том, что if передаёт некоторые пакеты размером более 1500 байт. Гугление привело к тому, что все грехи лежат на ядрёном модуле для моей сетевой карты atl1c, но альтернативные драйвера, которые нашел не собираются (качал с оф сайта и с sourceforge.net) со следующей ошибкой
Подскажите что нибудь пожалуйста :) Может сталкивались?
Советую начать с lspci -vv и
Советую начать с lspci -vv и не ставить ничего из сырцов в генту, зачем захламлять систему? Уверен есть нативное решение, надо только поискать получше :)
А какой толк мне от 'lspci
А какой толк мне от 'lspci -vv'? Я абсолютно точно знаю, что за чип там стоит, вопрос только в том, чтобы найти работоспособный модуль для этого девайса. Но исследование сайта производителя показало, что даже "родной" драйвер под linux существует только в виде сырцов и тот не собирается... С программированием на C (тем более с ядрёным) у меня никак, потому действительно, остаётся только искать да смотреть в сторону самописного/исправленного модуля. Ну или пока модуль из ядра не выйдет из состояния EXPERIMENTAL :)