Верно. Он прикрепляется опцией smtp_bind_address =
Но когда НАТ включен divert natd from any to any , и на интерфейсе висят к примеру 5 адресов, то он выходит на отправку с первым попавшимся. Вот в чем проблема.
И потом ФТП тоже не корректно сокет пассивынй создает.
Но кажется уже почти решил проблему. Отпишусь чуть позже.
Добавлено: 15-01-2010 14:04:19
проект может быть в любое время разделен на дополнительные сревера.
Сбрасывать все в один адрес не красиво. Мало ли, кто хочет узнать что под этим адресом работает - психология анонимности сервисов.
Добавлено: 15-01-2010 17:47:27
Задача решаема.
Смысл исполнения:
1. фильтрация через ipfw всех хостов что должны отрабатывать другие сервисы(не НАТ).
2. Добавление NATD правил в самую последнюю очередь исполнения ipfw
Получается очень красиво. И не забываем закрывать доступы с IP которые уже отработаны. Это помогает для дебага и улучшает понимание работы всего фаервола
приведу пример из рабочего файла /etc/rc.firewall:
[Mm][Aa][Ii][Nn])
# set this to your local network
net="$firewall_client_net"
MAINNET="1.2.3.0/29"
MAILHOST="1.2.3.1"
HTTPHOST="1.2.3.2"
FTPHOST="1.2.3.3"
VPNHOST="1.2.3.4"
NATHOST="1.2.3.5"
# SMTP
${fwcmd} add pass tcp from ${MAILHOST} to any established
${fwcmd} add pass tcp from any to ${MAILHOST} established
${fwcmd} add pass tcp from any to ${MAILHOST} 25 setup
${fwcmd} add pass tcp from ${MAILHOST} to any 25 setup
# POP# SSL
${fwcmd} add pass tcp from any to ${MAILHOST} 995 setup #POP3-SSL
${fwcmd} add pass tcp from ${MAILHOST} 995 to any #POP3-SSL
${fwcmd} add pass tcp from any to ${MAILHOST} 110 #POP3
${fwcmd} add pass tcp from ${MAILHOST} 110 to any #POP3
${fwcmd} add pass tcp from any to ${MAILHOST} 143 #IMAP
${fwcmd} add pass tcp from ${MAILHOST} 110 to any #IMAP
${fwcmd} add pass tcp from any to ${MAILHOST} 993 #IMAP-SSL
${fwcmd} add pass tcp from ${MAILHOST} 993 to any #IMAP-SSL
......
#VPN
${fwcmd} add pass udp from any to ${VPNHOST} 1812-1813
${fwcmd} add pass udp from ${VPNHOST} 1812-1813 to any
${fwcmd} add allow gre from any to ${VPNHOST}
${fwcmd} add allow gre from ${VPNHOST} to any
${fwcmd} add allow tcp from any to ${VPNHOST} 1723
${fwcmd} add allow tcp from ${VPNHOST} 1723 to any
# Allow DNS queries out in the world
${fwcmd} add pass udp from ${VPNHOST} to any 53 keep-state
${fwcmd} add pass udp from any 53 to ${VPNHOST} keep-state
${fwcmd} add deny log ip from any to ${VPNHOST}
# ------------- NATD outs -----------
${fwcmd} add divert natd log logamount 100 ip from any to any via bge0
#${fwcmd} add divert natd log logamount 100 ip from any to ${NATHOST} via bge0
# Allow any traffic to or from my own net.
${fwcmd} add pass all from any to ${net}
${fwcmd} add pass all from ${net} to any
# STATICs
${fwcmd} add pass tcp from any to ${NATHOST} 49152-65534 keep-state
${fwcmd} add pass tcp from any 49152-65534 to ${NATHOST} keep-state
# HTTP
${fwcmd} add pass tcp from ${NATHOST} to any 80
${fwcmd} add pass tcp from any 80 to ${NATHOST}
# HTTPS
${fwcmd} add pass tcp from ${NATHOST} to any 443
${fwcmd} add pass tcp from any 443 to ${NATHOST}
# SMTP
#${fwcmd} add pass tcp from ${MAINNET} to any 25
# ICMP
${fwcmd} add pass icmp from any to any
# Allow DNS queries out in the world
${fwcmd} add pass udp from any to any 53
${fwcmd} add pass udp from any 53 to any
# RDP
${fwcmd} add pass tcp from any to ${NATHOST} 3389
${fwcmd} add pass tcp from ${NATHOST} 3389 to any
# Everything else is denied by default, unless the
# IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
# config file.
${fwcmd} add deny log logamount 100 ip from any to any
;;
и потом в /etc/natd.conf
log_ipfw_denied
alias_address 1.2.3.5
log yes
# RDP
redirect_port tcp 192.168.1.5:3389 3389
ну и соответственно в /etc/rc.conf
gateway_enable="YES"
natd_enable="YES" # Enable natd (if firewall_enable == YES).
natd_flags="-f /etc/natd.conf" # Additional flags for natd.
### Basic network and firewall/security options: ###
firewall_enable="YES" # Set to YES to enable firewall functionality
firewall_type="MAIN" # Firewall type (see /etc/rc.firewall)
#firewall_type="OPEN" # Firewall type (see /etc/rc.firewall)
firewall_quiet="YES" # Set to YES to suppress rule display
firewall_logging="YES" # Set to YES to enable events logging
firewall_flags="" # Flags passed to ipfw when type is a file
firewall_client_net="192.168.1.0/24" # Network address for "client" firewall.
--- вот ---
На сем откланиваюсь