Zentyal Forum, Linux Small Business Server
International => Russian => Topic started by: rkislov on March 16, 2012, 04:44:02 am
-
Посдскажите пожалуйста, у меня Zentyal 2.2.6 с последними обновлениями и не работает перенаправление портов внутри сети, то есть у меня имеется подключение к интернету по PPPoE и одна внутреня сеть, делаю правила в перенаправлении портов, все указываю, в итоге получаю что с внешней сети видно а с внутренней нет. Подскажите пожалуйста как быть?
-
Ничего не понял, если честно, а телепат в отпуске. Расскажите что хотите сделать, как делаете и что получается?
-
у меня зентиал стоит на входе от провайдера приходит PPPoE внутри одна подсеть стандартная 192.168.1.0/24 в подсети есть сервер с разными сервисами которыми мы пользуемся как дома так и вне дома, мне нужно сделать переадресацию некоторых портов с внешнего адреса (PPPoE) на внутренний сервер......Я делал так: открывал в фаерволе пункт перенаправление портов и прописывал:
интерфейс - внешний (PPPoE)
первоначальное назначение - зентиал
протокол - TCP (к примеру)
первоначальный порт - 9091 (так же к примеру)
источник - любой
целевой IP - адресс сервера
порт - тотже самый
никакие галки не ставил, сохранить и в итоге из вне всё отлично работает а из внутренней сети нет
-
естественно не будет работать, ты же правило сам сделать для проброса, чтобы у тебя пробрасывался из внешки на внутренний IP по порту 9901.. а обратно это не работает)
немного непонятно что значит - а из внутренней сети нет опиши нормально что у тебя из внутренней сети нет))
-
мне нужно чтобы я при обращении на внешний адресс (PPPoE) имел доступ к своему вэб серверу (который у меня крутиться за Zentyal) при это чтобы не играло значение нахожусь я где то дома или на работе, то етсь внутри сети или вне ее
-
Скажите где можно править правила фаервола в ручную через SSH, мне оченть нравиться зентиал, но без перенаправления портов придётся сменить дистрибутив мне так не хочеться этого делать
-
Что та я тоже не понял в чём у вас проблема, из вне вас пускают, а из внутренней нет? Если это так то вы сами что-то не то настроили, у меня из внутренней сети всюду пускает, без всяких пробросов, если нет каких любо ограничений.
-
проблема в том, что перенаправление портов работвет возможно не совсем адекватно, например потры 110 993 143 отлично мапятся как внутри сети так и снаружи, а вот 25 80 443 и 1024 - 65535 никак не мапяться из внутренней сети на внутреннюю а с наружи на внутреннюю мапяться без проблемы, дак вот если это в iptables правила DNAT тоесть маскарадинг это одна проблема если же это SNAT то правила пишуться по другому, вот я и хочу узнать знаеть ли кто нитбудь в какой файл пишуться правила фаервола
-
Если посмотреть через iptables-save правила zentyal пробрасывает порт только снаружи (цепочка прероутинг). Я думаю правильно будет внутри сети пробросить руками или же во внутреннем днс прописать запись соответствия внешнего имени внутреннему адресу.
-
Присоединюсь к вопросу, так же внутри сети стоит веб-сервер+почтовый сервер, доступ из инета есть, из локальной сети отсутствует, так еще и Outlook постоянно при коннекте просит пароль на почтовую учетку. Как руками прописать проброс?
-
Так давайте поподробней. Хочу получить ответ на 2 вопроса:
0) Зентал сразу смотрит в интернет или стоит после роутера? Если после роутер, то как реализован доступ извне к зенталу - портмап или прописана демилитаризованная зона?
1) Как обращаетесь к серверу - по доменному имени или по ip?
-
Так давайте поподробней. Хочу получить ответ на 2 вопроса:
0) Зентал сразу смотрит в интернет или стоит после роутера? Если после роутер, то как реализован доступ извне к зенталу - портмап или прописана демилитаризованная зона?
Зентал сразу смотрит в инет, ip статический.
1) Как обращаетесь к серверу - по доменному имени или по ip?
и по доменному имени и по ip, если в первом случае то открывается веб-сервер стоящий на зентале, если по второму, то сквид выдает ошибку насколько я помню, связанную с ожиданием запроса.
В оутлуке если ввожу локальный ip почтового сервера, то пароль не просится, если же доменное имя то требует пароль и после его введения все равно возвращает ошибку подключения
-
Ура я не один с такой проблемой, с почтой дорогой GriefNorth обстои та же проблема, привхожу к мысли что видимо придется писать скрипт для фаерволла который будет обнулять все правила и писать заново те которые нужны мне
-
Сделал вывод iptables-save как я раньше до этого не догадался? Всевыводятся которые мы вводим через вэбинтерфейс пишутся в начале, а затем куча системных правил, соответственно наши правила затираются системными
-
Сделал вывод iptables-save как я раньше до этого не догадался? Всевыводятся которые мы вводим через вэбинтерфейс пишутся в начале, а затем куча системных правил, соответственно наши правила затираются системными
М...а смысл тогда держать это чудо, если руками все делать придется из-за веб-мордочки ? )))
Ну это так лирика, хочется все-таки решение вопроса.
-
Этот случай подробно разобран в http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET пункт 6.5.2. Действие DNAT.
Я думаю, что разработчики могли бы и исправить модуль проброса портов для приведения к соответствию того что есть к тому как надо :)
-
То есть насколько я понимаю, данная пробелма решится внесением данных правил в брэндмауэр:
iptables -t nat -A PREROUTING --dst $INET_IP -p tcp --dport 80 -j DNAT \ --to-destination $HTTP_IP
iptables -t nat -A POSTROUTING -p tcp --dst $HTTP_IP --dport 80 -j SNAT \ --to-source $LAN_IP
iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT \ --to-destination $HTTP_IP
где $INET_IP - внешний адрес
$HTTP_IP - локальный адрес веб-сервера
$LAN_IP - локальный адрес зентала ???
-
Проверил в случае с Зентиалом так не выйдет (перезапуск службы все правила затирает раз, логика правил немного другая - работает со своими объектами и цепочками это два).
Проблему решил следующим способом - добавил еще одно правило проброса порта теперь входящий интерфейс "внутренний"
назначение "ип внешний"
протокол "тср"
порт "куда нужно"
источник "поставил любой можно создать сетевой объект включающий определенные нужные ИП"
ну и основное что необходимо "заменить ип"
Ну как то так. :)
-
Спасибо, завтра опробую, так думаю и с почтой тоже самое делать по 25 и 110 порту?
-
Каждый порт по отдельности разумеется. Единственно рекомендовал бы использовать порты с шифрованием 995 и 465
-
спасибо zmd всё отлично работает +1
-
Так давайте поподробней. Хочу получить ответ на 2 вопроса:
0) Зентал сразу смотрит в интернет или стоит после роутера? Если после роутер, то как реализован доступ извне к зенталу - портмап или прописана демилитаризованная зона?
Зентал сразу смотрит в инет, ip статический.
1) Как обращаетесь к серверу - по доменному имени или по ip?
и по доменному имени и по ip, если в первом случае то открывается веб-сервер стоящий на зентале, если по второму, то сквид выдает ошибку насколько я помню, связанную с ожиданием запроса.
В оутлуке если ввожу локальный ip почтового сервера, то пароль не просится, если же доменное имя то требует пароль и после его введения все равно возвращает ошибку подключения
Сквид ругается, потому-что в списках исключений нет адреса твоей локальной сети. Что значит "пароль не просится" - не авторизуется или пропускает без авторизации?
-
NAT reflection (http://forum.zentyal.org/index.php?topic=2205.0) Судя по всему, так и не реализовали эту фичу. На месте страждущих я бы все же не занимался извратом, пробрасывая порты через роутер между компами находящимися в одном broadcast domain. Как уже было замечено, достаточно просто настроить внутренний DNS сервер так, чтобы он по запросу к доменному имени сервера выдавал локальный IP.
-
Сквид ругается, потому-что в списках исключений нет адреса твоей локальной сети. Что значит "пароль не просится" - не авторизуется или пропускает без авторизации?
Сквид работает без каких либо запрещений (пока!). С почтой вопрос отпал, все заработало, а вот при открытии сайта выдается след.
Connection to xx.xx.xx.xx failed
The system returned (111) Connection refused
-
Сквид ругается, потому-что в списках исключений нет адреса твоей локальной сети. Что значит "пароль не просится" - не авторизуется или пропускает без авторизации?
Сквид работает без каких либо запрещений (пока!). С почтой вопрос отпал, все заработало, а вот при открытии сайта выдается след.
Connection to xx.xx.xx.xx failed
The system returned (111) Connection refused
Мне кажется, что проблема в том что на роутере что-то занимает 80 порт (ну или какой используете). Просто нужно их развести на разные порты. Для того чтобы понять что происходит дайте больше информации о структуре сети.
-
Мне кажется, что проблема в том что на роутере что-то занимает 80 порт (ну или какой используете). Просто нужно их развести на разные порты. Для того чтобы понять что происходит дайте больше информации о структуре сети.
На роутере это на Зентале? А структура такая WAN(оптика от провайдера)-->Zentyal, на выходе имеем два интерфейса eth1 192,168,1,0/24 и eth2 192,168,2,0/24
В 192,168,1,0/24 находится почтовый сервер и веб-сервер,на одной машине, фронтендом стоит nginx который, не знаю правильно не правильно выражусь, распределяет запросы http://domen.ru на 80 порт апача и http://mail.domen.ru на 81 порт веб-морды почтовика.
Если не достаточно, то скажите что еще указать? На самом Зентале веб-сервер не запущен не установлен и не запущен, акромя стандартного.
-
Мне кажется, что проблема в том что на роутере что-то занимает 80 порт (ну или какой используете). Просто нужно их развести на разные порты. Для того чтобы понять что происходит дайте больше информации о структуре сети.
На роутере это на Зентале? А структура такая WAN(оптика от провайдера)-->Zentyal, на выходе имеем два интерфейса eth1 192,168,1,0/24 и eth2 192,168,2,0/24
В 192,168,1,0/24 находится почтовый сервер и веб-сервер,на одной машине, фронтендом стоит nginx который, не знаю правильно не правильно выражусь, распределяет запросы http://domen.ru на 80 порт апача и http://mail.domen.ru на 81 порт веб-морды почтовика.
Если не достаточно, то скажите что еще указать? На самом Зентале веб-сервер не запущен не установлен и не запущен, акромя стандартного.
То есть, зентиал используется как фаервол. У него допустим ИП 192,168,0,1. Внутри сети стоит веб+почта допустим 192,168,0,2. Вопрос я так понял как пробросить порты снаружи и внутри сети "по доменному имени". Снаружи пробрасываем порты как обычно. Изнутри на каждый порт согласно инструкции написанной выше.
Или еще вариант сделать записи во внутреннем ДНС где domen.ru и mail.domen.ru указать один и тот же внутренний ИП.
Как то так.
-
То есть, зентиал используется как фаервол. У него допустим ИП 192,168,0,1. Внутри сети стоит веб+почта допустим 192,168,0,2. Вопрос я так понял как пробросить порты снаружи и внутри сети. Снаружи пробрасываем порты как обычно. Изнутри на каждый порт согласно инструкции написанной выше.
Как то так.
Ага зентал используется как фаервол. Порты пробросил, снаружи сайт открывается, изнутри нет.
Прикреплю файл с iptables-save там 1,56 и 2,56 это локальные адреса зентала, 1,253 это как раз почтовик и веб.
-
То есть, зентиал используется как фаервол. У него допустим ИП 192,168,0,1. Внутри сети стоит веб+почта допустим 192,168,0,2. Вопрос я так понял как пробросить порты снаружи и внутри сети. Снаружи пробрасываем порты как обычно. Изнутри на каждый порт согласно инструкции написанной выше.
Как то так.
Ага зентал используется как фаервол. Порты пробросил, снаружи сайт открывается, изнутри нет.
Прикреплю файл с iptables-save там 1,56 и 2,56 это локальные адреса зентала, 1,253 это как раз почтовик и веб.
Досмотрел в правилах -A PREROUTING -d xx.xx.xx.xx/32 -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.253
Это я так понял то правило ?
Проверь стоит ли галочка заменить ИП в правиле.
И не совсем по теме: обрати внимание на множество записей -A POSTROUTING -d 192.168.1.253/32 -j SNAT --to-source 192.168.1.56. Мне кажется что такое количество однотипных записей не нужно
-
Во вложении исправленные правила, вносил до этого точно так же через веб-интерфейс. Думаю понятно что хх.хх.хх.хх это внешний IP. Может правда проблема в сквиде?
-
Во вложении исправленные правила, вносил до этого точно так же через веб-интерфейс. Думаю понятно что хх.хх.хх.хх это внешний IP. Может правда проблема в сквиде?
Скажи пожалуйста какие стоят пакеты в Зентиале и какая его версия ?
-
И из какой сети 192.168.1.0/24 или 192.168.2.0/24 пробуете попасть на 192.168.1.253?
Маршрутизация между сетями настроена ? Попробуйте телнетом на внешний ИП и порт постучать кто ответит. Есть ли возможность глянуть в логах nginx происходит ли конект или кто-то рубит связь до этого? Посмотрите в логах фаервола Зентиала происходит ли перенаправление?
-
Во вложении исправленные правила, вносил до этого точно так же через веб-интерфейс. Думаю понятно что хх.хх.хх.хх это внешний IP. Может правда проблема в сквиде?
Скажи пожалуйста какие стоят пакеты в Зентиале и какая его версия ?
Версия 2.2.6, стоят все кроме Cloud Client, DNS Service, Groupware (Zarafa), Mail Service, NTP Service, PPTP,
Printer Sharing Service, RADIUS, VPN Service, VoIP, Web Mail Service, Веб сервер, Почтовый фильтр, Центр Сертификации
-
Ох и наворотили! Попробуйте сделать вот что: в Firewall -> Port Forwarding найдите запись
Interface: eth2
Original destination: IP Address xx.xx.xx.xx/32
Original destination port: Single port 80
Source: Any
Destination IP: 192.168.1.253
Port: Same
Replace source address: x
и измените ее следующим образом:
Interface: eth2
Original destination: IP Address xx.xx.xx.xx/32
Original destination port: Single port 8080
Source: Any
Destination IP: 192.168.1.253
Port: Other 80
Replace source address: o
заходите на гуй почтового сервера по http://xx.xx.xx.xx:8080
squid-то, чай, не прозрачный? Тогда в браузере надо внести исключения: не использовать прокси-сервер для адресов начинающихся с...
-
Ох и наворотили! Попробуйте сделать вот что: в Firewall -> Port Forwarding найдите запись
Interface: eth2
Original destination: IP Address xx.xx.xx.xx/32
Original destination port: Single port 80
Source: Any
Destination IP: 192.168.1.253
Port: Same
Replace source address: x
и измените ее следующим образом:
Interface: eth2
Original destination: IP Address xx.xx.xx.xx/32
Original destination port: Single port 8080
Source: Any
Destination IP: 192.168.1.253
Port: Other 80
Replace source address: o
заходите на гуй почтового сервера по http://xx.xx.xx.xx:8080
squid-то, чай, не прозрачный? Тогда в браузере надо внести исключения: не использовать прокси-сервер для адресов начинающихся с...
Блин короче совсем запутался, Сквид прозрачный.
И из какой сети 192.168.1.0/24 или 192.168.2.0/24 пробуете попасть на 192.168.1.253?
Маршрутизация между сетями настроена ? Попробуйте телнетом на внешний ИП и порт постучать кто ответит. Есть ли возможность глянуть в логах nginx происходит ли конект или кто-то рубит связь до этого? Посмотрите в логах фаервола Зентиала происходит ли перенаправление?
Пытался зайти из 192.168.1.0/24 маршрутизация настроена, наверное :-[ , так как в правилах разрешал любой обмен между сетями.
-
Ох и наворотили! Попробуйте сделать вот что: в Firewall -> Port Forwarding найдите запись
Interface: eth2
Original destination: IP Address xx.xx.xx.xx/32
Original destination port: Single port 80
Source: Any
Destination IP: 192.168.1.253
Port: Same
Replace source address: x
и измените ее следующим образом:
Interface: eth2
Original destination: IP Address xx.xx.xx.xx/32
Original destination port: Single port 8080
Source: Any
Destination IP: 192.168.1.253
Port: Other 80
Replace source address: o
заходите на гуй почтового сервера по http://xx.xx.xx.xx:8080
squid-то, чай, не прозрачный? Тогда в браузере надо внести исключения: не использовать прокси-сервер для адресов начинающихся с...
Три вопроса
1. Как таким способом можно решить вопрос захода по имени на сервер из любого места извне и внутри сети?
2. Зачем пробрасывать порт если собираетесь заходить через другой адрес и порт? если такая логика так просто и заходить внутри по совершенно другой ссылке, которая учитывает специфику внутренней сети.
3. Как вы относитесь к http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET :)
-
Ох и наворотили! Попробуйте сделать вот что: в Firewall -> Port Forwarding найдите запись
Interface: eth2
Original destination: IP Address xx.xx.xx.xx/32
Original destination port: Single port 80
Source: Any
Destination IP: 192.168.1.253
Port: Same
Replace source address: x
и измените ее следующим образом:
Interface: eth2
Original destination: IP Address xx.xx.xx.xx/32
Original destination port: Single port 8080
Source: Any
Destination IP: 192.168.1.253
Port: Other 80
Replace source address: o
заходите на гуй почтового сервера по http://xx.xx.xx.xx:8080
squid-то, чай, не прозрачный? Тогда в браузере надо внести исключения: не использовать прокси-сервер для адресов начинающихся с...
Блин короче совсем запутался, Сквид прозрачный.
И из какой сети 192.168.1.0/24 или 192.168.2.0/24 пробуете попасть на 192.168.1.253?
Маршрутизация между сетями настроена ? Попробуйте телнетом на внешний ИП и порт постучать кто ответит. Есть ли возможность глянуть в логах nginx происходит ли конект или кто-то рубит связь до этого? Посмотрите в логах фаервола Зентиала происходит ли перенаправление?
Пытался зайти из 192.168.1.0/24 маршрутизация настроена, наверное :-[ , так как в правилах разрешал любой обмен между сетями.
У меня стоит прозрачное проксирование и все работает. Маршрутизация это не правила фаервола это то что работает на 3 уровне http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_OSI, фаервол работает выше 5-7 уровни. Проверить можно сделать пинг из сети 192.168.2.0/24 на 192.168.1.253 и с 192.168.1.253 на 192.168.2.0/24.
Сейчас просто главное определить, что не дает установить связь. Попробуй телнетом постучаться на нужный адрес напрямую и через зентиал. а потом посмотри логи фаервола зентиала и кстати проверь логи на той машине куда стучишься. Может проблема там.
-
Еще раз опубликовал на другой машине сайт. Все работает
-
Сейчас просто главное определить, что не дает установить связь. Попробуй телнетом постучаться на нужный адрес напрямую и через зентиал. а потом посмотри логи фаервола зентиала и кстати проверь логи на той машине куда стучишься. Может проблема там.
Логи куда стучусь проверил, чистые. Сквид у Зентала выдает след
104 192.168.1.254 TCP_MISS/504 1500 GET http://domen.ru/ - DIRECT/xx.xx.xx.xx text/html
телнет смогу опробовать только в обед, тогда сообщу.
-
Еще раз опубликовал на другой машине сайт. Все работает
Не забывайте, что 443 порт, на котором у вас висит сайт не проксируется squid'ом в прозрачном режиме. Порты, которые не идут через прокси у GriefNorth тоже прекрасно работают. А вот 80-й - не хочет. Дело у него очевидно именно в squid, который не может по неизвестной причине корректно отдать страницу с сервера 192.168.1.253.
Ради интереса соединил 3 виртуалки в такую же схему как и у GriefNorth и могу предложить свой способ решения проблемы. Возможно, в свете идеологии iptables, ваш способ лучше, но я его так до конца и не понял. Так что заранее извиняюсь и забудем пока то, что я писал в предыдущем посте.
-
Итак, тем, кому необходимо чтобы веб-сервер находящийся в локальной сети был доступен по его доменному имени как из локальной сети, так и снаружи, предлагаю простой способ. В то время как внешние DNS сервера разрешают доменное имя веб-сервера во внешний IP zentyal, внутренний DNS сервер, обслуживающий локальную сеть, должен разрешать его в локальный IP сервера. Для простой "плоской" локальной сети, где веб-сервер находится в одном broadcast domain со всеми остальными компьютерами, достаточно лишь пробросить 80-й порт снаружи на веб-сервер и настроить внутренний DNS. Если внутри сети DNS запросы обслуживает zentyal, последнее можно сделать например так:
DNS -> Domains -> Add new
Domain: example.com (имя вашего домена)
IP Address: 192.168.1.253 (локальный IP веб-сервера)
Add
Save changes
теперь снаружи nslookup example.com выдаст:
Non-authoritative answer:
Name: example.com
Address: 192.0.43.10
а изнутри:
Name: example.com
Address: 192.168.1.253
внешние пользователи будут попадать на веб-сервер через проброшенный на zential порт, а внутренние - непосредственно по локальному IP, минуя zentyal.
Это, повторюсь, простой случай. Теперь для GriefNorth'а. У вас веб-сервер находится в DMZ, отгороженный от остальной локальной сети. Так что клиенты из локальной сети пойдут на веб-сервер через zentyal. Само по себе это никак не мешает работе способа приведенного выше. Zentyal - прежде всего маршрутизатор, и передавать пакеты из одной сети в другую - его работа. Однако прозрачный squid ломает эту схему. Он перехватывает все пакеты с 80-м портом назначения не адресованные непосредственно интерфейсу, который он слушает и где-то запутывается - ничего не работает. Проверено, что стоит отключить squid - все работает прекрасно. Понятно, что squid отключать не хочется, а надо сделать так, чтобы он не перехватывал 80 порт, когда запрос идет на внутренний веб-сервер.
Сделать это можно пробросом 80-го порта с интерфейса eth2 на адрес веб-сервера.
eth2 Zentyal TCP 80 Any 192.168.1.253 Same
Т.к. squid не перехватывает пакеты адресованные самим интерфейсам zentyal, опубликовав 80-й порт на eth2 мы избавимся от глючного проксирования локального веб-сервера. Теперь для локальной сети 192.168.2.0/24 адресом веб сервера будет локальный адрес zentyal (192.168.2.56). Но мы хотим обращаться к сайту по имени. Для нашего случая настройки DNS будут другими:
DNS -> Domains -> Add new
Domain: имя вашего домена
IP Address: 192.168.2.56
Add
Save changes
-
Тогда вопрос еще такой, не помешает ли DNS Zentyal работе MS DNS, который поддерживает работу AD в 192.168.2.0/24?
P.S. И проблема еще в том что из сети 192.168.1.0/24 тоже могут ходить на домен, а Зентал при добавлении еще одного домена с таким же именем ругается.
-
Тогда вопрос еще такой, не помешает ли DNS Zentyal работе MS DNS, который поддерживает работу AD в 192.168.2.0/24?
Не помешает, они ведь обслуживают разные зоны (условно, domain.ru и domain.local). Если у вас на клиентских компьтерах в качестве DNS сервера прописан DNS AD, то проще даже на нем завести зону прямого просмотра domain.ru и в ней прописать, что www.domain.ru - это 192.168.2.56, а mail.domain.ru и все остальное - это 192.168.1.253
Осторожность с этим трюком (он называется split-DNS) нужна вот где: если у вас в domain.ru есть сервисы, хостящиеся на внешних серверах (к примеру, www - у вас в локалке, а mail - на внешнем сервере в интернете), то в для всех внешних сервисов в этой зоне придется прописать их реальные IP. Зона, которую вы создадите будет AUTHORITATIVE для локальных клиентов, т.е. DNS AD не будет искать где-то в интернете IP внешних сервисов, он только посмотрит в локальной зоне и, если соответствующей записи в ней нет, будет считать, что ее нет вообще.
Хотя некоторые товарищи http://www.petri.co.il/forums/showthread.php?t=41717 как-то вроде умудряются сделать простой host override без необходимости прописывать внешние сервисы в зоне.
Скорее всего последний абзац вас не касается, но все же имейте ввиду.
-
Тогда вопрос еще такой, не помешает ли DNS Zentyal работе MS DNS, который поддерживает работу AD в 192.168.2.0/24?
P.S. И проблема еще в том что из сети 192.168.1.0/24 тоже могут ходить на домен, а Зентал при добавлении еще одного домена с таким же именем ругается.
Нужно вносить запись в том ДНС сервере который обслуживает сеть. В случае домена могу предположить, что имя домена отличается от имени fqdn, так что можно смело его добавлять. В случае зентила второй домен с тем же именем добавлять не нужно, просто в уже созданном домене добавить запись класса А с другим нужным ИП.
-
Итак, тем, кому необходимо чтобы веб-сервер находящийся в локальной сети был доступен по его доменному имени как из локальной сети, так и снаружи, предлагаю простой способ. В то время как внешние DNS сервера разрешают доменное имя веб-сервера во внешний IP zentyal, внутренний DNS сервер, обслуживающий локальную сеть, должен разрешать его в локальный IP сервера. Для простой "плоской" локальной сети, где веб-сервер находится в одном broadcast domain со всеми остальными компьютерами, достаточно лишь пробросить 80-й порт снаружи на веб-сервер и настроить внутренний DNS. Если внутри сети DNS запросы обслуживает zentyal, последнее можно сделать например так:
DNS -> Domains -> Add new
Domain: example.com (имя вашего домена)
IP Address: 192.168.1.253 (локальный IP веб-сервера)
Add
Save changes
теперь снаружи nslookup example.com выдаст:
Non-authoritative answer:
Name: example.com
Address: 192.0.43.10
а изнутри:
Name: example.com
Address: 192.168.1.253
внешние пользователи будут попадать на веб-сервер через проброшенный на zential порт, а внутренние - непосредственно по локальному IP, минуя zentyal.
Это, повторюсь, простой случай. Теперь для GriefNorth'а. У вас веб-сервер находится в DMZ, отгороженный от остальной локальной сети. Так что клиенты из локальной сети пойдут на веб-сервер через zentyal. Само по себе это никак не мешает работе способа приведенного выше. Zentyal - прежде всего маршрутизатор, и передавать пакеты из одной сети в другую - его работа. Однако прозрачный squid ломает эту схему. Он перехватывает все пакеты с 80-м портом назначения не адресованные непосредственно интерфейсу, который он слушает и где-то запутывается - ничего не работает. Проверено, что стоит отключить squid - все работает прекрасно. Понятно, что squid отключать не хочется, а надо сделать так, чтобы он не перехватывал 80 порт, когда запрос идет на внутренний веб-сервер.
Сделать это можно пробросом 80-го порта с интерфейса eth2 на адрес веб-сервера.
eth2 Zentyal TCP 80 Any 192.168.1.253 Same
Т.к. squid не перехватывает пакеты адресованные самим интерфейсам zentyal, опубликовав 80-й порт на eth2 мы избавимся от глючного проксирования локального веб-сервера. Теперь для локальной сети 192.168.2.0/24 адресом веб сервера будет локальный адрес zentyal (192.168.2.56). Но мы хотим обращаться к сайту по имени. Для нашего случая настройки DNS будут другими:
DNS -> Domains -> Add new
Domain: имя вашего домена
IP Address: 192.168.2.56
Add
Save changes
В Reply #26 я уже приводил такой вариант :) .
По сути вопроса хотелось бы добавить - фаервол работает до сквида.
Попробовал с 80 портом. По моей схеме проброс работает! Но! Возник вопрос - не смотря на то, что модуль почтового сервера не установлен на зентиале все равно запущен апач который по умолчанию НТТР висит на 80 порту и на НТТРS порту (может отличаться в зависимости от настроек указанных в зентиале) висит админка. Если перенести НТТР апача на другой порт то схема работает.
Как то так.
-
В Reply #26 я уже приводил такой вариант :) .
По сути вопроса хотелось бы добавить - фаервол работает до сквида.
Попробовал с 80 портом. По моей схеме проброс работает! Но! Возник вопрос - не смотря на то, что модуль почтового сервера не установлен на зентиале все равно запущен апач который по умолчанию НТТР висит на 80 порту и на НТТРS порту (может отличаться в зависимости от настроек указанных в зентиале) висит админка. Если перенести НТТР апача на другой порт то схема работает.
Как то так.
Вы немного заблуждаетесь. Фаер конечно работает до squid'а, но в прозрачном режиме пакеты в squid перенаправляются именно фаером, причем раньше всех созданных вами PortForward:
-A PREROUTING -j premodules
-A PREROUTING -d xx.xx.xx.xx/32 -i eth2 -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.1.253
-A PREROUTING -d xx.xx.xx.xx/32 -i eth2 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.253
-A PREROUTING -d xx.xx.xx.xx/32 -i eth1 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.253
-A PREROUTING -d 192.168.1.56/32 -i eth1 -p tcp -m tcp --dport 26 -j DNAT --to-destination 80.95.34.242:25
-A PREROUTING -d xx.xx.xx.xx/32 -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.253
...
...
-A premodules ! -d 192.168.1.56/32 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A premodules ! -d 192.168.2.56/32 -i eth2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
последние 2 строки - и есть заворот пакетов в squid, а первая - заворот всех пакетов в цепочку premodules. Т.е. сперва обрабатывается цепочка premodules, потом - введенные вами PortForward и т.д.
Что касается apache, то он конечно висит даже если у вас не установлен компонент web server. Ведь кто-то должен отображать веб-интерфейс zential? Думаю компонент web server нужен только для того, чтобы пользователь мог через GUI делать виртуальные хосты. С удалением web server apache не удаляется.
-
В Reply #26 я уже приводил такой вариант :) .
По сути вопроса хотелось бы добавить - фаервол работает до сквида.
Попробовал с 80 портом. По моей схеме проброс работает! Но! Возник вопрос - не смотря на то, что модуль почтового сервера не установлен на зентиале все равно запущен апач который по умолчанию НТТР висит на 80 порту и на НТТРS порту (может отличаться в зависимости от настроек указанных в зентиале) висит админка. Если перенести НТТР апача на другой порт то схема работает.
Как то так.
Вы немного заблуждаетесь. Фаер конечно работает до squid'а, но в прозрачном режиме пакеты в squid перенаправляются именно фаером, причем раньше всех созданных вами PortForward:
-A PREROUTING -j premodules
-A PREROUTING -d xx.xx.xx.xx/32 -i eth2 -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.1.253
-A PREROUTING -d xx.xx.xx.xx/32 -i eth2 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.253
-A PREROUTING -d xx.xx.xx.xx/32 -i eth1 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.253
-A PREROUTING -d 192.168.1.56/32 -i eth1 -p tcp -m tcp --dport 26 -j DNAT --to-destination 80.95.34.242:25
-A PREROUTING -d xx.xx.xx.xx/32 -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.253
...
...
-A premodules ! -d 192.168.1.56/32 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A premodules ! -d 192.168.2.56/32 -i eth2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
последние 2 строки - и есть заворот пакетов в squid, а первая - заворот всех пакетов в цепочку premodules. Т.е. сперва обрабатывается цепочка premodules, потом - введенные вами PortForward и т.д.
Что касается apache, то он конечно висит даже если у вас не установлен компонент web server. Ведь кто-то должен отображать веб-интерфейс zential? Думаю компонент web server нужен только для того, чтобы пользователь мог через GUI делать виртуальные хосты. С удалением web server apache не удаляется.
В чем я заблуждаюсь :) ?
В том, что если уже висит на 80 порту апач то он и отвечает на запрос ?
Или в том, что с удалением модуля зентиала "веб сервер" порт не освобождается ? Я где то утверждал обратное?
Или в том, что сейчас у меня такая схема работает ?
По моему Вы зря ограничиваетесь порядок прохождения только таблицей NAT :)
Схема работает в живой системе!
-
В чем я заблуждаюсь :) ?
Извините, я прочитал вашу фразу о фаерволе как: проброс порта работает до [прозрачного] сквида. Это - заблуждение, выше я написал почему. Возможно, вы имели ввиду что-то другое, но то, о чем говорю я, является ключевым моментом проблемы со squid:
Схема работает в живой системе!
Схема не работает и не может работать при условии, что squid запущен в прозрачном режиме (у вас это точно так?). По вашей же ссылке http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET вы в вашем решении выполнили только 2 действия из 3-х необходимых. Третье действие - цитирую:
Если вы думаете, что на этом можно остановиться, то вы ошибаетесь! Представим себе ситуацию, когда в качестве клиента выступает сам брандмауэр. Тогда, к сожалению, пакеты будут передаваться на локальный порт с номером 80 самого брандмауэра, а не на $HTTP_IP. Чтобы разрешить и эту проблему, добавим правило:
iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT \
--to-destination $HTTP_IP
- осталось невыполненным, и его невозможно выполнить из GUI zentyal.
Так вот, когда мы идем на наш сайт через squid, это и есть "в качестве клиента выступает сам брандмауэр", т.к. squid является локальным процессом брандмауэра (zentyal) и забирает страницу от себя, а уже потом передает нам. Если squid сам не может забрать страницу с INET_IP (см. цитату), то и нам ничего не отдаст. Это прекрасно подтверждается практикой:
(http://dl.dropbox.com/u/16308481/zentyal/squid/rerr.PNG)
Ошибка доступа к сайту с самого zentyal (websrv.test.local - имя сайта).
(http://dl.dropbox.com/u/16308481/zentyal/squid/cerr.PNG)
Ошибка доступа к сайту с клиентского компьютера (192.168.0.240 - внешний адрес zentyal. В него же наружным DNS сервером разрешается имя websrv.test.local).
Настройки:
(http://dl.dropbox.com/u/16308481/zentyal/squid/pf.PNG)
Проброс портов. eth0 - наружный интерфейс с адресом 192.168.0.240 (INET_IP), eth1 - внутренний c IP=192.168.1.56. Локальный адрес веб-сервера - 192.168.1.253.
(http://dl.dropbox.com/u/16308481/zentyal/squid/proxy.PNG)
Настройки squid.
(http://dl.dropbox.com/u/16308481/zentyal/squid/mod.PNG)
Статус модулей.
Стоит отключить модуль squid, или вместо этого в консоли zentyal по рекомендации из вашей ссылки выполнить команду:
iptables -t nat -A OUTPUT --dst 192.168.0.240 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.253
как сайт начинает нормально открываться.
-
Еще раз всем привет, с перенаправлением портов разобрался и все работает так как надо, и с внешки открывается локальный вебсервер и изнутри.
Но возникла другая проблема. Хотел установить и настроить bandwidthd, для этого установил в Зентале веб-сервер, перенес его слушать порт 83. Но теперь при открытии сайта или заходе на веб-морду почты. Появляется стандартная страница Апача: Итс воркс! . Я чего-то не понимаю или что ? Он же висит на 83 порту, с какой радости начинает слушать 80?
-
расскажите пож-та, как настроить Zentyal, что бы работали почтовые клиенты
-
Сделал вывод iptables-save как я раньше до этого не догадался? Всевыводятся которые мы вводим через вэбинтерфейс пишутся в начале, а затем куча системных правил, соответственно наши правила затираются системными
М...а смысл тогда держать это чудо, если руками все делать придется из-за веб-мордочки ? )))
Ну это так лирика, хочется все-таки решение вопроса.
http://forum.zentyal.org/index.php/topic,14824.0.html
не умеет это чЮдо, из вэбморды нормально рулить правилами файра. ТоварищЪ zmd рекомендует ставить генту ;)
-
а что скажете на счет Sams
-
не умеет это чЮдо, из вэбморды нормально рулить правилами файра.
Обоснуйте!
В вашем топике не в чуде было дело...
2rubic
Напишите багрепорт, если разобрались с проблемой...
-
не умеет это чЮдо, из вэбморды нормально рулить правилами файра.
Обоснуйте!
По ссылочке пройдитесь. На уровне интерфейсов нет политик (вэбморда). Если используется сквид, и правило "Разрешить все" для внутренних сетей запрещено, получаем танцы с бубном. Открытие/Закрытие сервисов по крону отдельная песня. В качестве учебного пособия по кнопкотыканию зентиал вполне так нормальный дистр.
-
Еще раз всем привет, с перенаправлением портов разобрался и все работает так как надо, и с внешки открывается локальный вебсервер и изнутри.
Но возникла другая проблема. Хотел установить и настроить bandwidthd, для этого установил в Зентале веб-сервер, перенес его слушать порт 83. Но теперь при открытии сайта или заходе на веб-морду почты. Появляется стандартная страница Апача: Итс воркс! . Я чего-то не понимаю или что ? Он же висит на 83 порту, с какой радости начинает слушать 80?
Чтото помоему намудрили с перенаправлением портов. Апач кстати вручную настраивается через /etc/apache2/ports.conf.
-
для настройки доступа к ДВР надо пробросить порты 37777, 8080 ,
внешний etn3 подключен к АДСЛ в режиме бриджа, поднимает PPOE (82.ххх.ххх.ххх),
внутренний etn2 192.168.1.101
IP двр 192.168.1.108
создал проброс
eth3 Zentyal TCP/UDP 37777 Любой 192.168.1.108 То же самое DVR
eth3 Zentyal TCP/UDP 8080 Любой 192.168.1.108 То же самое dvr
не доступен >:(