Есть две переменные в rc.conf, связанные со списками правил для файрвола: 1. firewall_type Определяет типы файрвола, заданные в /etc/rc.firewall, либо имя файла с набором правил. (важно!) правила задаются в формате, в котором вы задаёте их после команды /sbin/ipfw например: count ip from any to any add ip from any to any и т.п. Это не шелл скрипт. 2. firewall_script Задаёт имя скрипта, который система запускает для того, чтобы управлять файрволом. Это шел скрипт, здесь работают все шелловские переменные и т.п., типичный пример такого скрипта - /etc/rc.firewall. ===================== http://skeletor.org.ua/?p=1133 проброс http://bezopasnik.org/unix/dok/FreeBSD/dok/635.htm !!!!!!!!!!!!!!!!!!!!!!!!! http://bezopasnik.org/unix/dok/FreeBSD/dok/631.htm http://weblomaster.ru/ipfw-table-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B-%D0%B2-%D1%84%D0%B0%D0%B5%D1%80%D0%B2%D0%BE%D0%BB%D0%B5-freebsd-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2/ table http://www.soulbrat.org.ua/?p=810 нат может быть через модуль natd(медленный) либо через kernel-nat(ядровый). Делаем ядровый нат, встроенный в ipfw. cd /sys/i386/conf/ (/sys/amd64 для х64) cp GENERIC ROUTER исправим строчку ident GENERIC на ident ROUTER OPTION IPV6 КОММЕНЧУ (netstat -rn проверка есть ли ipv6) options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPFIREWALL_NAT options LIBALIAS #lib для ipfw-nat options ROUTETABLES=2 options DUMMYNET #для возможности будущего ограничения скорости options HZ="1000" #GBIT #options IPDIVERT #natd #options IPFIREWALL_DEFAULT_TO_ACCEPT конечное правило разрешающее ============= #options TCP_DROP_SYNFIN - команда для отбрасывания одного из вида флуд-атак !!!!!!!!!!!!!!!!!!!!!freebsd 10 НЕ ПАШЕТ!!!!!!!!!!!!!!!!!!!!! #options IPFIREWALL_FORWARD #ВО FREEBSD 10 ПО УМОЛЧАНИЮ ВВОДИТЬ НЕ НАДО А ТО НЕ ПАШЕТ #options IPFIREWALL_FORWARD_EXTENDED #обе команды для разрешения перенаправления пакетов ВО FREEBSD 10 ПО УМОЛЧАНИЮ ВВОДИТЬ НЕ НАДО А ТО НЕ ПАШЕТ ============== config ROUTER cd ../compile/ROUTER/ && make cleandepend && make depend && make && make install && reboot ee /etc/rc.conf ifconfig_em0="inet 192.168.1.133 netmask 255.255.255.0" -ext ifconfig_le0="inet 172.16.0.0 netmask 255.255.0.0" -int defaultrouter="192.168.1.1" # дефолтный шлюз для самого сервера gateway_enable="YES" # наш сервер будет шлюзом (или в /etc/sysctl.conf добавить net.inet.ip.forwarding=1) ######nat-ipfw######### firewall_enable="YES" # активируем фаервол firewall_nat_enable="YES" # активируем NAT #firewall_type="/etc/fw" # файл с правилами фаервола (переменные не пашут но можно сразу add nat) либо firewall_script="/etc/fw" # файл с правилами фаервола (переменные пашут но надо сначала ввести префикс /sbin/ipfw add nat либо ipfw add nat) dummynet_enable="YES" # активируем средство ограничения трафика ######################## если через natd то еще добавить #natd_enable="YES" # собственно запуск natd #natd_interface="em0" # интерфейс на котором он будет работать (тот, # который смотрит в инет) #natd_flags="-m -u" # флаги : # -u - транслировать только адреса частных сетей # т.е. по RFC 1918: # 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 # -m - попробовать оставить тот же номер порта что и был, # с этим флагом протоколы, типа RPC лучше пашут. ============================ ?????? что бы после ната все порты отрезались надо net.inet.ip.fw.one_pass=0 вписать в /etc/sysctl.conf ================================= ee /etc/fw nat 1 config ip 95.150.164.212 log same_ports unreg_only add nat 1 all from 192.168.100.13 to any # DRO (вместо all можно указать конкретный протокол tcp или udp) add nat 1 all from 192.168.100.24 to any # ARK add nat 1 all from 192.168.100.38 to any # PAN add nat 1 all from 192.168.100.59 to any # ALEX add nat 1 all from 192.168.100.208 to any # SQUID add nat 1 all from 192.168.100.0/24 to any # Это правило для тех случаев если надо выпустить в инет сразу всю сеть add nat 1 all from any to 95.150.164.212 где 95.150.164.212 — интерфейс смотрящий «наружу», ${lan_net} — внутренняя сеть (192.168.100.0/24) ${inet_ip} — внешняя пиха. unreg_only говорит ipfw натить только частные сети same_ports пытается оставлять те же номера портов или # пропускаем траффик через трансляцию сетевых адресов (NAT) nat 1 config log if em0 reset same_ports add nat 1 ip from any to any via em0 или #nat config - конфигурируем NAT $ipfw nat 1 config log if $ifout same_ports deny_in (ifout - em0) $ipfw add nat 1 ip from any to any via $ifout ========= если надо несколько редиректов: ipfw nat 2 config if ng0 log deny_in same_ports reset \ redirect_port tcp 192.168.0.15:1723 1723 \ redirect_port tcp 192.168.0.4:8081 8081 \ redirect_port udp 192.168.0.11:9000-9100 9000-9100 \ redirect_port udp 192.168.0.11:5060 5060 ========== ipfw list > /home/alex/fw.conf #сохранить правила в файл #pipe pipe 1 config bw 512Kbit/s (можно использовать Mbit/s) add pipe 1 ip from any to 172.16.0.5 out