Страница 1 из 1

подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-02 21:11:06
impetigo
Добрый день уважаемые.
Прошу у вас совета по настройке IPFW+NAT, перечитал кучу статей, но к единому прийти не могу.
Есть некая сеть и роутер на FreeBSD 8 с ядерным IPFW и натом и dhcp. Задача роутера пока просто раздавать интернет в сеть, попутно блокируя лишнее по возможности.
Накатал конфиг, прошу вас оценить и подсказать правильно ли расположен divert и может чего не учёл?

по умолчанию фаерволл открытый

sis0 - внешний интерфейс

Код: Выделить всё

#!/bin/sh

cmd="/sbin/ipfw"
wanip="1.1.1.2"
local="172.16.10.0/24"
unprev="123"


/sbin/ipfw -f flush


##############
## Loopback IF
##############
$cmd add 20 allow ip from any to any via lo0
$cmd add 20 deny ip from 127.0.0.1/8 to any
$cmd add 20 deny ip from any to 127.0.0.1/8
$cmd add 21 deny ip from any to me 23


##############
### SSH Access
##############
$cmd add 150 deny tcp from any to me 22
$cmd add 150 allow tcp from me 22 to any

##########
#правила запрещающие сайты и закрывающие порты, я их не стал тут описывать
########

#############
## Nat Divert
#############
$cmd add 6000 divert natd ip from any to any via sis0

rc.conf

Код: Выделить всё

gateway_enable="YES"
hostname="server.server"
defaultrouter="1.1.1.1"
ifconfig_sis0="inet 1.1.1.2 netmask 255.255.255.252"
ifconfig_rl0_="inet 172.16.10.1 netmask 255.255.255.0"
inetd_enable="YES"
keymap="ru.koi8-r"
router="/sbin/routed"
router_enable="YES"
router_flags="-q"
sshd_enable="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
natd_enable="YES"
natd_interface="sis0"
dhcpd_enable="YES"
dhcpd_conf="/etc/dhcpd.conf"
dhcpd_ifaces="rl0"

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 0:36:59
FreeBSP
чем ядерный нат не устраивает? зачем по пять правил на один номер?
http://www.lissyara.su/articles/freebsd ... /ipfw_nat/

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 4:43:44
impetigo
FreeBSP писал(а):чем ядерный нат не устраивает? зачем по пять правил на один номер?
http://www.lissyara.su/articles/freebsd ... /ipfw_nat/
а чем плохо несколько правил на одном номере?

divert natd это не ядерный нат, а отдельный модуль?

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 10:48:50
Другой гость
impetigo писал(а): divert natd это не ядерный нат, а отдельный модуль?
natd это отдельный модуль, а не ядерный нат.
Чтобы работал ядерный нат надо почитать воот эту статью

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 11:08:54
impetigo
переделываю по этой статье

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 14:08:28
impetigo
возникла проблема, видимо в синтаксисе

Код: Выделить всё

[root@server ~]# /etc/rc.d/ipfw restart
net.inet.ip.fw.enable: 1 -> 0
add: not found
add: not found
add: not found
add: not found
add: not found
add: not found
add: not found
add: not found
add: not found
add: not found
add: not found
nat: not found
add: not found
add: not found
Firewall rules loaded.

/etc/rc.firewall

Код: Выделить всё

add 100 allow ip from any to any via lo0
add 110 deny ip from any to 127.0.0.0/8
add 120 deny ip from 127.0.0.0/8 to any

add 150 allow tcp from any to me 30009 via sis0
add 170 allow tcp from me 22 to any via sis0

add 200 allow ip from any to any via rl1

add 210 deny ip from 224.0.0.0/4 to any via sis0
add 220 deny ip from any to 224.0.0.0/4 via sis0

add 230 deny icmp from any to 255.255.255.255 in via sis0
add 240 deny icmp from any to 255.255.255.255 out via sis0

nat 1 config log if sis0 reset same_ports

add 6000 nat 1 ip from any to any via sis0

add 65534 deny log all from any to any

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 15:09:25
шёл_мимо
add 100 allow ip from any to any via lo0
ipfw add 100 allow ip from any to any via lo0

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 19:30:34
impetigo
шёл_мимо писал(а):ipfw add 100 allow ip from any to any via lo0
тоже самое, add: not found

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 20:24:32
impetigo
решил, приведя к такому виду
cat /etc/ipfw

Код: Выделить всё

#!/bin/sh

cmd="/sbin/ipfw"
/sbin/ipfw -f flush

$cmd add 100 allow ip from any to any via lo0
$cmd add 110 deny ip from any to 127.0.0.0/8
$cmd add 120 deny ip from 127.0.0.0/8 to any


Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-03 21:02:37
FreeBSP
читаем первый пример в статье и оригинальный /etc/rc.firewall:

Код: Выделить всё

534 *)
535         if [ -r "${firewall_type}" ]; then
536                 ${fwcmd} ${firewall_flags} ${firewall_type}
537         fi
538         ;;
конфиг вида add ... читается из ${firewall_type}
а в firewall_script находится обычный sh скрипт, вызываемый из /etc/rc.d/ipfw

Код: Выделить всё

 45         if [ -r "${firewall_script}" ]; then
 46                 /bin/sh "${firewall_script}" "${_firewall_type}"
и вообще в статье неплохие примеры, в частности первый пример - минимальный набор ната, должен вам подходить
и оригинальный /etc/rc.firewall стоит полностью прочитать

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-04 9:35:29
impetigo
FreeBSP писал(а):и вообще в статье неплохие примеры, в частности первый пример - минимальный набор ната, должен вам подходить
и оригинальный /etc/rc.firewall стоит полностью прочитать
я и сделал по первому примеру, только вот так и не понял с синкасисом почему была проблема. сейчас все работает.

Re: подскажите пожалуйста IPFW+NAT

Добавлено: 2012-08-04 11:36:53
FreeBSP
FreeBSP писал(а): конфиг вида add ... читается из ${firewall_type}
а в firewall_script находится обычный sh скрипт, вызываемый из /etc/rc.d/ipfw
impetigo писал(а): rc.conf

Код: Выделить всё

firewall_script="/etc/rc.firewall"
/etc/rc.firewall

Код: Выделить всё

add 100 allow ip from any to any via lo0
В статье:
/etc/rc.conf

Код: Выделить всё

firewall_type="/etc/firewall"
/etc/firewall

Код: Выделить всё

add 1040 allow ip from any to any via fxp0