Что бы поднять 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 весьма параноидальна, и здесь приведена только в качестве примера.
На практике обычно нужен более открытый фаервол.
URL: http://www.hub.ru/modules.php?name=Pages&op=showpage&pid=199
Обсуждается: http://www.opennet.me/tips/info/906.shtml
Имхо это не правильно переделывать секцию open в системном rc.firewall.. либо указывать свой скрипт надо, либо тип файрволла ставить filename (все расписано в /etc/default/rc.conf и в комментах в оригинальном /etc/rc.firewallИ IPFIREWALL_VERBOSE_LIMIT=10, наверное лучше вообще его отключить.. и настроить ротацию логов - что бы место не забилось..
Согласен с предыдущим. Не надо трогать системные скрипты, а также generic ядро!
Можно и GENERIC редактировать, но НЕОБХОДИМЫ в нем для NAT только 2 опции:
options IPFIREWALL
options IPDIVERTА в /etc/rc.conf для NAT неободимы только эти строки:
gateway_enable="YES"
firewall_enable="YES"
firewall_type="open"
natd_enable="YES"
natd_interface="rl0" (имя внешнего интерфейса)Остальное - это уже пример индивидуальной настройки фаервола.
На каждом шлюзе они должны быть свои.P.S. Содержимое статьи становится понятным, если посмотреть, кто автор ( Автор: hub.ru :)
Как я понимаю, сначала посетители hub.ru читали этот портал и выкладывали статьи там.
Теперь, видимо, пошла обратная волна ))
А если нужен ipnat?
Просто в 5.4 FreeBSD нет устройства /dev/kmem,
поэтому ipnat ругается.
Как включить это всё?
По мануалу - должно работать, но что-то где-то не так.
На 4.11 всё ок.
/dev/kmem
можно включить в ядре кажись
Решилась проблема переделыванием заново:
rc.conf:
ipfilter_enable="YES" # Start ipf firewall
ipfilter_rules="/etc/ipf.rules" # loads rules definition text file
ipmon_enable="YES" # Start IP monitor log
ipmon_flags="-Ds" # D = start as daemon
# s = log to syslog
# v = log tcp window, ack, seq
# n = map IP & port to names
В конфиг ядра GENERIC добавил
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPDIVERToptions IPFILTER
options IPFILTER_LOGВсё заработало.
Нафига Вам IPF и IPFW одновременно. IMHO чушь порете.
>Нафига Вам IPF и IPFW одновременно. IMHO чушь порете.Дело в том, чт система работает на NATD и ipfw.
Нужно:
1. Пробросить порты из вне внутрь локалки на разные серваки
2. Уменьшить нагрузку по NATВещи не взаимоисключающие, но дублирующие.
Для чистоты - да, либо то, либо другое. Согласен.
Вот заморочки....... делов на 5 минут:
kldload pf
sysctl net.inet.ip.forwarding=1
vi /etc/pf.conf
...
и ВСЕ!!!
>Вот заморочки....... делов на 5 минут:
>kldload pf
>sysctl net.inet.ip.forwarding=1
>vi /etc/pf.conf
>...
>и ВСЕ!!!
Тоже вариант.А проблемы с FTP и необходимостью хранить состояния пакетов уже решены?
Когда юзал давно когда-то, то были...Кстати, есть правила для ipnat, а для pf нужно переделывать.
всем здрасти,я
подскажите пожалуйста,как добавить правило,чтоб хоть ping проходил, а то я собрал систему,а всё закрыть ,по умолчанию, так вот как вообще добавляются правила?????заранее спасибо
ipfw add deny icmp from any to any frag #запрещаем проход для фрагментированых покетов
ipfw add allow icmp from any to any #остальные разрешаем вроде так
Уважаемые!
Авам не кажеться, что автор с интерфейсами напутал
! ifconfig_rl0="10.0.0.1"! oif="rl0"
iif="tx0"
oip="132.5.7.172"
! iip="10.0.0.1"
lan="10.0.0.0/24"
что это?
Добавил приведенные строки и перекомпилировал файл конфигурации ядра GENERIC как сказано выше.
Также добавил вышеприведенные строки в rc.conf, но rc.firewall трогать не стал потому как скурпулезных ограничений пока не нужно.Все другие приложения (ICQ, MSN) работают
нормально, но вот в Internet Explorer просматривать сайты не могу.
Как быть?
Подскажите как записать oip если внешний IP получаю по DHCP?
Скрипт написать с $1 вместо oip - будет первый параметр в командной строке скрипта.
На dhclient настроить запуск етого скрипта.