Автор: fantome
Дата сообщения: 18.01.2007 14:12
vovanj7
Как я представляю это - alias нафик не нужен.
В таблице маршрутизации у тебя должны быть две такие записи
Network Destination Netmask Gateway Interface Metric
10.65.1.0 255.255.255.0 10.65.1.1 192.168.0.1 1
192.168.0.0 255.255.255.0 192.168.0.1 10.65.1.1 1
кроме прочих других. Это будет указывать куда отправлять траффик для такой-то подсети, полученный на таком то интерфейсе.
IPFW - это фаер, с его помощью можно фильтровать пакеты. Для NAT он не обязателен.
[more=NAT в FreeBSD]NAT в FreeBSD и Linux
И в FreeBSD и в Linux для вывода "серой" корпоративной сети (как
правило с адресами 10.128 или 192.168) используется технология
"сворачивания" всей серой сети в один или несолько реальных адресов.
В простейшем варианте вся корпоративная сеть "сворачивается" в один
адрес.
Общая схема для FreeBSD выглядит так:
ipfw add 10 divert 8868 (что надо свернуть в реальный адрес) to any
out xmit (внешний интерфейс)
ipfw add 20 divert 8868 from any to (реальный адрес)
и необходимо запустить демон ната:
natd -a (реальный адрес) -p 8868
Для Linux, как правило, используют маскарадинг:
iptables -t nat -A POSTROUTING -o -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Рассмотрим более сложную ситуацию, когда нужно две разные
корпоративные под-сети "свернуть" в два разных реальных адреса. Это
часто бывает удобно для разделения внешнего трафика, подсчета трафика,
приоритизации трафика. Необязательно для этого,чтобы сети были
разделены физически. Например, если все корпоративной сети выдать сеть
10.0.0.0/16, то в ней можно логически выделить два отдела класса С:
10.0.1.0/24 и 10.0.2.0/24, и все серверы выделить в отдельную"подсеть"
10.0.3.0/24.
PS. Вообще, сеть 10.128.0.0/16 является намного более "емкой" и гибкой
для большой корпорации - ее легче разбивать на подсети и нет дифицита
адресов.
Теперь "свернем" эти две подсети отделов в два различных ip с помощью
FeeBSD и Linux.
1. В FreeBSD для этого применим систему ipfw & nat
ipfw add 10 divert 8868 (подсеть1) to any out xmit (внешний
интерфейс1)
ipfw add 20 divert 8868 from any to (реальный адрес1)
ipfw add 30 divert 8869 (подсеть2) to any out xmit (внешний
интерфейс2)
ipfw add 40 divert 8869 from any to (реальный адрес2)
и необходимо запустить демон ната:
natd -a (реальный адрес1) -p 8868
natd -a (реальный адрес1) -p 8869
или для приведенного примера:
ipfw add 10 divert 8868 10.0.1.0/24 to any out xmit ed0
ipfw add 20 divert 8868 from any to 195.1.1.1
ipfw add 30 divert 8869 10.0.2.0/24 to any out xmit ed1
ipfw add 40 divert 8869 from any to 195.1.1.2
и необходимо запустить демон ната:
natd -a 195.1.1.1 -p 8868
natd -a 195.1.1.2 -p 8869
2. В Linux данная схема реализуется с помощью iptables
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j SNAT --to-source 195.1.1.1
iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -j SNAT --to-source 195.1.1.2
При этом сеть 10.1.0.3 доступа к Интернет иметь не будет (т.к. НАТ не
свернет ее в реальный адрес), да серверам это и не нужно.[/more]
[more=Что бы поднять NAT и Firewall на FreeBSD]Что бы поднять NAT и Firewall на FreeBSD надо:
Скомпилировать ядро:
Следующие строки нужно включить в /usr/src/sys/i386/conf/GENERIC файл конфигурации:
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options DUMMYNET
options TCP_DROP_SYNFIN
Переходим в директорию /usr/src/
make buildkernel KERNCONF=GENERIC
make installkernel KERNCONF=GENERIC
Следующие строки можно к примеру включить в rc.conf файл конфигурации:
hostname="free"
ifconfig_rl0="10.0.0.1"
gateway_enable="YES"
firewall_enable="YES"
firewall_type="open"
natd_enable="YES"
natd_interface="rl0"
natd_flags="-redirect_port tcp 10.0.0.10:80 80"
tcp_extensions="NO"
tcp_drop_synfin="YES"
icmp_drop_redirect="YES"
sendmail_enable="NONE"
Для удаленного управления нужно добавить следующую строку:
sshd_enable="YES"
(возможно понадобится скопировать /etc/ssh/ssh_host_dsa_key.pub в /root/.ssh/authorized_keys
Следующие строки можно включить в rc.firewall файл конфигурации (секция "open"):
[Oo][Pp][Ee][Nn])
oif="rl0"
iif="tx0"
oip="132.5.7.172"
iip="10.0.0.1"
lan="10.0.0.0/24"
setup_loopback
# allow all for LAN
${fwcmd} add 500 pass all from ${lan} to ${iip} via ${iif}
${fwcmd} add 550 pass all from ${iip} to ${lan} via ${iif}
# download - 60K upload - 6K for all lan ip's
${fwcmd} add 600 pipe 1 ip from any to any in via ${oif}
${fwcmd} add 650 pipe 2 ip from any to any out via ${oif}
# for selected ip's only
# ${fwcmd} add 601 pipe 1 all from any to 10.0.0.10
# ${fwcmd} add 651 pipe 2 all from 10.0.0.10 to any
${fwcmd} pipe 1 config bw 512Kbit/s
${fwcmd} pipe 2 config bw 48Kbit/s
# dns setup
${fwcmd} add 770 pass tcp from any to ${oip} 53 setup
${fwcmd} add 780 pass udp from any domain to any
${fwcmd} add 790 pass udp from any to any domain
# main setup
${fwcmd} add 800 pass tcp from any http,https,20-21,989-990 to any
${fwcmd} add 810 pass tcp from any to any http,https,20-21,989-990
${fwcmd} add 830 pass tcp from any pop3,pop3s,smtp,imap,imaps,aol to any
${fwcmd} add 840 pass tcp from any to any pop3,pop3s,smtp,imap,imaps,aol
${fwcmd} add 65000 deny ip from any to any
;;
Где oip, oif - внешний интерфейс; iip, iif - внутренний; lan - внутренняя сеть.
Такая конфигурация ipfw весьма параноидальна, и здесь приведена только в качестве примера.
На практике обычно нужен более открытый фаервол.[/more]