The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Настройка iptables на KVM"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"Настройка iptables на KVM"  –1 +/
Сообщение от sbn email on 17-Окт-17, 20:44 
Добрый день!

Существует следующая схема:
1. Настроен KVM на хосте, настроена маршрутизация.
2. Настроена виртуальная машина на которой расположен сайт, IP серый.
3. Настроен почтовый сервер на другой виртуальной машине, IP серый.

Когда тестрируем сайт на локальной машине, то с сайта почта уходит, соединение проходит нормально с почтовым сервером, но когда сайт находится на виртуальной машине, то Connection timed out, соединение с почтовым сервером не происходит.

Кто посоветует как продиагностировать и настроить правила iptables для этой ситуации.
Спасибо!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Настройка iptables на KVM"  +/
Сообщение от PavelR (??) on 18-Окт-17, 06:35 
Диагностика для этой ситуации не отличается от диагностики файрволла и работы сети в любых других ситуациях.

Для решения проблемы необходимо понимание работы сети и логика.

Инструменты: ifconfig, tcpdump, iptables, arp, sysctl.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Настройка iptables на KVM"  +/
Сообщение от sbn email on 18-Окт-17, 09:43 
> Диагностика для этой ситуации не отличается от диагностики файрволла и работы сети
> в любых других ситуациях.
> Для решения проблемы необходимо понимание работы сети и логика.
> Инструменты: ifconfig, tcpdump, iptables, arp, sysctl.

Привет, может сумбурно написал, в общем у меня настроены следующие правила для форвардинга на smtp сервер

Код:    
        post-up iptables -t nat -A PREROUTING -p tcp -d x.x.x.x --dport 25 -j DNAT --to-destination y.y.y.y:25
        post-up iptables -t filter -I FORWARD -p tcp --dport 25 -d y.y.y.y -j ACCEPT    

x.x.x.x - IP хоста с установленным KVM
y.y.y.y - серый IP виртуальной машины с почтовым сервером
z.z.z.z - серый IP виртуальной машины с сайтом

Когда локально работаю над сайтом, соединение с почтовым сервером проходит нормально и почтовые сообщения отправляются (форма обратной связи на сайте). Но когда сайт деплою на сервер (виртульную машину с IP z.z.z.z), то соединение не проходит. Смотрел в сторону dnsmasq так как он стандартно с KVM идёт, но решение с ним не нашёл. Нужно правильно настроить форвардинг пакетов с z.z.z.z через x.x.x.x к y.y.y.y


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Настройка iptables на KVM"  +/
Сообщение от ПавелС email(ok) on 18-Окт-17, 11:09 
Не зная серых апишников и плохо представляя что у тебя могу угадать, что направление на yyyy:25 должно ещё и SNATиться:
-A POSTROUTING -t nat -p tcp -d y.y.y.y --dport 25 -j SNAT --to-source x.x.x.x
> -A PREROUTING -p tcp -d x.x.x.x --dport 25 -j DNAT --to-destination
> y.y.y.y:25
>         post-up iptables -t filter
> -I FORWARD -p tcp --dport 25 -d y.y.y.y -j ACCEPT
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Настройка iptables на KVM"  +/
Сообщение от sbn email on 18-Окт-17, 12:05 
> Не зная серых апишников и плохо представляя что у тебя могу угадать,
> что направление на yyyy:25 должно ещё и SNATиться:
> -A POSTROUTING -t nat -p tcp -d y.y.y.y --dport 25 -j SNAT
> --to-source x.x.x.x
>> -A PREROUTING -p tcp -d x.x.x.x --dport 25 -j DNAT --to-destination
>> y.y.y.y:25
>>         post-up iptables -t filter
>> -I FORWARD -p tcp --dport 25 -d y.y.y.y -j ACCEPT

Доработал некоторые моменты.

1. Виртуальный сервер с настроенным веб сервером.

z.z.z.z - белый IP виртуальной машины с сайтом.

Настройки сети виртуальной машины

Код:    
    <interface type='bridge'>
    </interface>    


Настроено мостовое соединение. Напрямую выходит в интернет.

Код:    
inet z.z.z.z  netmask 255.255.255.m  broadcast z.z.z.x    


2. Виртуальный сервер с почтовым сервером

y.y.y.y - серый IP виртуальной машины с почтовым сервером (понял вашу идею, но они уже не в одной подсети)

Настройка сети виртуальной машины.

Код:    
    <interface type='network'>
      <source network='default'/>    

В сети default настроет NAT

Код:    
inet addr:192.168.y.y  Bcast:192.168.y.x  Mask:255.255.255.0    


3. Хост с KVM

Настройка iptables для почтового сервера (привожу правило только для отправки писем)

Цитата:    
post-up iptables -t nat -A PREROUTING -p tcp -d x.x.x.x --dport 25 -j DNAT --to-destination y.y.y.y:25
post-up iptables -t filter -I FORWARD -p tcp --dport 25 -d y.y.y.y -j ACCEPT    


Диагностика:
1. С вебсервера на почтовый сервер
└─> telnet domain.com 25
Trying y.y.y.y...
Не работает
2. С локальной машины на почтовый сервер
└─> telnet domain.com 25
220 domain.com ESMTP Postfix
Работает
3. На сетевом уровне по ICMP c вебсервера на почтовый
Код:    
PING domain.com (y.y.y.y) 56(84) bytes of data.
64 bytes from domain.com (y.y.y.y): icmp_seq=1 ttl=64 time=0.087 ms    

Работает
4. Смотрим доходит telnet до почтового сервера. Отправляем запрос с вебсервера на почтовый сервер
Код:    
└─> telnet domain.com 25
Trying y.y.y.y...    

Слушаем на почтовом сервере
Код:    
tcpdump port 25    

10:31:53.279805 IP someinfo.com > y.y.y.y.smtp: Flags [S], seq 3840325252, win 29200, options [mss 1460,sackOK,TS val 3319511009 ecr 0,nop,wscale 7], length 0
Запрос на почтовый сервер уходит но не приходит ответ (значит флаг ACK не получает вебсервер, как этот момент отследить подробнее?).

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Настройка iptables на KVM"  +/
Сообщение от ПавелС (ok) on 18-Окт-17, 14:36 
>[оверквотинг удален]
>> что направление на yyyy:25 должно ещё и SNATиться:
>> -A POSTROUTING -t nat -p tcp -d y.y.y.y --dport 25 -j SNAT
>> --to-source x.x.x.x
>>> -A PREROUTING -p tcp -d x.x.x.x --dport 25 -j DNAT --to-destination
>>> y.y.y.y:25
>>>         post-up iptables -t filter
>>> -I FORWARD -p tcp --dport 25 -d y.y.y.y -j ACCEPT
> Доработал некоторые моменты.
> y.y.y.y - серый IP виртуальной машины с почтовым сервером (понял вашу идею,
> но они уже не в одной подсети)

Не знаю... В чем такая привлекательность выставлять вебсервер белым IP.
Накатанный путь виртуалки  с серыми IP и с основной машины с белого IP проброс  портов 25, 80. А так у тебя нетривиальная  маршрутизация.


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Настройка iptables на KVM"  +/
Сообщение от sbn email on 18-Окт-17, 15:09 
> Не знаю... В чем такая привлекательность выставлять вебсервер белым IP.
> Накатанный путь виртуалки  с серыми IP и с основной машины с
> белого IP проброс  портов 25, 80. А так у тебя
> нетривиальная  маршрутизация.

post-up iptables -t nat -A PREROUTING -p tcp -d x.x.x.x --dport 25 -j DNAT --to-destination y.y.y.y:25 - отрабатывает правильно

iptables -t nat -A POSTROUTING -p tcp -d y.y.y.y --dport 25 -j SNAT --to-source x.x.x.x - возможно здесь что-то не так

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        1    60 SNAT       tcp  --  *      *       0.0.0.0/0            y.y.y.y     tcp dpt:25 to:x.x.x.x
Но счётчик отработал.


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

6. "Настройка iptables на KVM"  +/
Сообщение от ПавелС (ok) on 18-Окт-17, 14:47 
>[оверквотинг удален]
> Цитата:
> post-up iptables -t nat -A PREROUTING -p tcp -d x.x.x.x --dport 25
> -j DNAT --to-destination y.y.y.y:25
> post-up iptables -t filter -I FORWARD -p tcp --dport 25 -d y.y.y.y
> -j ACCEPT
> Диагностика:
> 1. С вебсервера на почтовый сервер
> └─> telnet domain.com 25
> Trying y.y.y.y...
> Не работает

Пусть вебсервер имеет второй интерфейс в одной сети с y.y.y.y

>[оверквотинг удален]
> Код:
> └─> telnet domain.com 25
> Trying y.y.y.y...
> Слушаем на почтовом сервере
> Код:
>  tcpdump port 25
> 10:31:53.279805 IP someinfo.com > y.y.y.y.smtp: Flags [S], seq 3840325252, win 29200, options
> [mss 1460,sackOK,TS val 3319511009 ecr 0,nop,wscale 7], length 0
> Запрос на почтовый сервер уходит но не приходит ответ (значит флаг ACK
> не получает вебсервер, как этот момент отследить подробнее?).

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру