Author Topic: переадресация портов  (Read 16080 times)

zmd

  • Zen Warrior
  • ***
  • Posts: 240
  • Karma: +10/-2
    • View Profile
Re: переадресация портов
« Reply #30 on: March 20, 2012, 01:43:13 pm »
Во вложении исправленные правила, вносил до этого точно так же через веб-интерфейс. Думаю понятно что хх.хх.хх.хх это внешний IP. Может правда проблема в сквиде?
Скажи пожалуйста какие стоят пакеты в Зентиале и какая его версия ?

zmd

  • Zen Warrior
  • ***
  • Posts: 240
  • Karma: +10/-2
    • View Profile
Re: переадресация портов
« Reply #31 on: March 20, 2012, 01:50:47 pm »
И из какой сети 192.168.1.0/24 или 192.168.2.0/24 пробуете попасть на 192.168.1.253?
Маршрутизация между сетями настроена ? Попробуйте телнетом на внешний ИП и порт постучать кто ответит. Есть ли возможность глянуть в логах nginx происходит ли конект или кто-то рубит связь до этого? Посмотрите в логах фаервола Зентиала происходит ли перенаправление?
« Last Edit: March 20, 2012, 02:02:10 pm by zmd »

GriefNorth

  • Zen Apprentice
  • *
  • Posts: 40
  • Karma: +1/-0
    • View Profile
Re: переадресация портов
« Reply #32 on: March 20, 2012, 01:53:17 pm »
Во вложении исправленные правила, вносил до этого точно так же через веб-интерфейс. Думаю понятно что хх.хх.хх.хх это внешний 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, Веб сервер, Почтовый фильтр, Центр Сертификации

rubic

  • Zen Monk
  • **
  • Posts: 86
  • Karma: +12/-1
    • View Profile
Re: переадресация портов
« Reply #33 on: March 20, 2012, 03:05:04 pm »
Ох и наворотили! Попробуйте сделать вот что: в 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-то, чай, не прозрачный? Тогда в браузере надо внести исключения: не использовать прокси-сервер для адресов начинающихся с...

GriefNorth

  • Zen Apprentice
  • *
  • Posts: 40
  • Karma: +1/-0
    • View Profile
Re: переадресация портов
« Reply #34 on: March 20, 2012, 04:23:19 pm »
Ох и наворотили! Попробуйте сделать вот что: в 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 маршрутизация настроена, наверное :-[ , так как в правилах разрешал любой обмен между сетями.

zmd

  • Zen Warrior
  • ***
  • Posts: 240
  • Karma: +10/-2
    • View Profile
Re: переадресация портов
« Reply #35 on: March 20, 2012, 07:01:09 pm »
Ох и наворотили! Попробуйте сделать вот что: в 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  :)
« Last Edit: March 20, 2012, 07:12:47 pm by zmd »

zmd

  • Zen Warrior
  • ***
  • Posts: 240
  • Karma: +10/-2
    • View Profile
Re: переадресация портов
« Reply #36 on: March 20, 2012, 07:11:48 pm »
Ох и наворотили! Попробуйте сделать вот что: в 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.

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

zmd

  • Zen Warrior
  • ***
  • Posts: 240
  • Karma: +10/-2
    • View Profile
Re: переадресация портов
« Reply #37 on: March 20, 2012, 07:24:13 pm »
Еще раз опубликовал на другой машине сайт. Все работает

GriefNorth

  • Zen Apprentice
  • *
  • Posts: 40
  • Karma: +1/-0
    • View Profile
Re: переадресация портов
« Reply #38 on: March 21, 2012, 06:17:04 am »
Сейчас просто главное определить, что не дает установить связь. Попробуй телнетом постучаться на нужный адрес напрямую и через зентиал. а потом посмотри логи фаервола зентиала и кстати проверь логи на той машине куда стучишься. Может проблема там.
Логи куда стучусь проверил, чистые. Сквид у Зентала выдает след
Code: [Select]
104 192.168.1.254 TCP_MISS/504 1500 GET http://domen.ru/ - DIRECT/xx.xx.xx.xx text/html
телнет смогу опробовать только в обед, тогда сообщу.

rubic

  • Zen Monk
  • **
  • Posts: 86
  • Karma: +12/-1
    • View Profile
Re: переадресация портов
« Reply #39 on: March 21, 2012, 08:53:39 am »
Еще раз опубликовал на другой машине сайт. Все работает
Не забывайте, что 443 порт, на котором у вас висит сайт не проксируется squid'ом в прозрачном режиме. Порты, которые не идут через прокси у GriefNorth тоже прекрасно работают. А вот 80-й - не хочет. Дело у него очевидно именно в squid, который не может по неизвестной причине корректно отдать страницу с сервера 192.168.1.253.
Ради интереса соединил 3 виртуалки в такую же схему как и у GriefNorth и могу предложить свой способ решения проблемы. Возможно, в свете идеологии iptables, ваш способ лучше, но я его так до конца и не понял. Так что заранее извиняюсь и забудем пока то, что я писал в предыдущем посте.

rubic

  • Zen Monk
  • **
  • Posts: 86
  • Karma: +12/-1
    • View Profile
Re: переадресация портов
« Reply #40 on: March 21, 2012, 08:54:09 am »
Итак, тем, кому необходимо чтобы веб-сервер находящийся в локальной сети был доступен по его доменному имени как из локальной сети, так и снаружи, предлагаю простой способ. В то время как внешние 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 выдаст:
Code: [Select]
Non-authoritative answer:
Name:    example.com
Address:  192.0.43.10
а изнутри:
Code: [Select]
Name:    example.com
Address:  192.168.1.253
внешние пользователи будут попадать на веб-сервер через проброшенный на zential порт, а внутренние - непосредственно по локальному IP, минуя zentyal.

Это, повторюсь, простой случай. Теперь для GriefNorth'а. У вас веб-сервер находится в DMZ, отгороженный от остальной локальной сети. Так что клиенты из локальной сети пойдут на веб-сервер через zentyal. Само по себе это никак не мешает работе способа приведенного выше. Zentyal - прежде всего маршрутизатор, и передавать пакеты из одной сети в другую - его работа. Однако прозрачный squid ломает эту схему. Он перехватывает все пакеты с 80-м портом назначения не адресованные непосредственно интерфейсу, который он слушает и где-то запутывается - ничего не работает. Проверено, что стоит отключить squid - все работает прекрасно. Понятно, что squid отключать не хочется, а надо сделать так, чтобы он не перехватывал 80 порт, когда запрос идет на внутренний веб-сервер.
Сделать это можно пробросом 80-го порта с интерфейса eth2 на адрес веб-сервера.
Code: [Select]
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

GriefNorth

  • Zen Apprentice
  • *
  • Posts: 40
  • Karma: +1/-0
    • View Profile
Re: переадресация портов
« Reply #41 on: March 21, 2012, 10:09:30 am »
Тогда вопрос еще такой, не помешает ли DNS Zentyal работе MS DNS, который поддерживает работу AD в 192.168.2.0/24?
P.S. И проблема еще в том что из сети 192.168.1.0/24 тоже могут ходить на домен, а Зентал при добавлении еще одного домена с таким же именем ругается.
« Last Edit: March 21, 2012, 11:14:12 am by GriefNorth »

rubic

  • Zen Monk
  • **
  • Posts: 86
  • Karma: +12/-1
    • View Profile
Re: переадресация портов
« Reply #42 on: March 21, 2012, 12:02:00 pm »
Тогда вопрос еще такой, не помешает ли 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 без необходимости прописывать внешние сервисы в зоне.
Скорее всего последний абзац вас не касается, но все же имейте ввиду.

zmd

  • Zen Warrior
  • ***
  • Posts: 240
  • Karma: +10/-2
    • View Profile
Re: переадресация портов
« Reply #43 on: March 21, 2012, 12:02:56 pm »
Тогда вопрос еще такой, не помешает ли DNS Zentyal работе MS DNS, который поддерживает работу AD в 192.168.2.0/24?
P.S. И проблема еще в том что из сети 192.168.1.0/24 тоже могут ходить на домен, а Зентал при добавлении еще одного домена с таким же именем ругается.
Нужно вносить запись в том ДНС сервере который обслуживает сеть. В случае домена могу предположить, что имя домена отличается от имени fqdn, так что можно смело его добавлять. В случае зентила второй домен с тем же именем добавлять не нужно, просто в уже созданном домене добавить запись класса А с другим нужным ИП.

zmd

  • Zen Warrior
  • ***
  • Posts: 240
  • Karma: +10/-2
    • View Profile
Re: переадресация портов
« Reply #44 on: March 21, 2012, 12:12:36 pm »
Итак, тем, кому необходимо чтобы веб-сервер находящийся в локальной сети был доступен по его доменному имени как из локальной сети, так и снаружи, предлагаю простой способ. В то время как внешние 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 выдаст:
Code: [Select]
Non-authoritative answer:
Name:    example.com
Address:  192.0.43.10
а изнутри:
Code: [Select]
Name:    example.com
Address:  192.168.1.253
внешние пользователи будут попадать на веб-сервер через проброшенный на zential порт, а внутренние - непосредственно по локальному IP, минуя zentyal.

Это, повторюсь, простой случай. Теперь для GriefNorth'а. У вас веб-сервер находится в DMZ, отгороженный от остальной локальной сети. Так что клиенты из локальной сети пойдут на веб-сервер через zentyal. Само по себе это никак не мешает работе способа приведенного выше. Zentyal - прежде всего маршрутизатор, и передавать пакеты из одной сети в другую - его работа. Однако прозрачный squid ломает эту схему. Он перехватывает все пакеты с 80-м портом назначения не адресованные непосредственно интерфейсу, который он слушает и где-то запутывается - ничего не работает. Проверено, что стоит отключить squid - все работает прекрасно. Понятно, что squid отключать не хочется, а надо сделать так, чтобы он не перехватывал 80 порт, когда запрос идет на внутренний веб-сервер.
Сделать это можно пробросом 80-го порта с интерфейса eth2 на адрес веб-сервера.
Code: [Select]
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 порту (может отличаться в зависимости от настроек указанных в зентиале) висит админка. Если перенести НТТР апача на другой порт то схема работает.

Как то так.