> Не зная серых апишников и плохо представляя что у тебя могу угадать,
> что направление на 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 не получает вебсервер, как этот момент отследить подробнее?).