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

Не могу настроить IPFW

Добавлено: 2011-02-10 15:46:25
alex117
Ситуация такая: Есть роутер DLINK-2640U, который раздает инет на подсеть 192.168.1.0. Мне нужно раздать инет на свою подсеть 192.168.0.0. Делаю маршрутизатор на FreeBSD-7.1+IPFW+NATD. Перекомпилировал ядро, для включения поддержки nat и ipfw. Сервер смотрит одной картой (vr1) в 192.168.1.0 - сеть с роутером, другой (vr0) - в мою 192.168.0.0.
Написал файл с правилами для IPFW

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

#!/bin/sh

FwCMD="/sbin/ipfw -q" 
LanOut="vr1"            # внешний интерфейс
LanIn="vr0"            # внутренний интерфейс
IpOut="192.168.1.14" # внешний IP адрес машины
IpIn="192.168.0.1"   # внутренний IP машины
NetMask="24"            # маска сети                    
NetIn="192.168.0.0"    # Внутренняя сеть

${FwCMD} -f flush
${FwCMD} add check-state
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
${FwCMD} add allow tcp from any to any established
${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}
${FwCMD} add allow udp from any 53 to any via ${LanOut}
${FwCMD} add allow udp from any to any 53 via ${LanOut}
${FwCMD} add allow udp from any to any 123 via ${LanOut}
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
${FwCMD} add allow tcp from any to any via ${LanIn}
${FwCMD} add allow udp from any to any via ${LanIn}
${FwCMD} add allow icmp from any to any via ${LanIn}
${FwCMD} add deny ip from any to any
Специально не рубил частные сети в конфиге. Но интернета машины моей подсети не получают, я прописал шлюз и dns. На самом сервере инет есть. Может для моей ситуации, когда инет идет не от провайдера,а от роутера надо как-то иначе делать?
ipfw show показывает, что запросы снаружи проходят через natd, а изнутри сети - нет. Может где-то подправить надо правила?

Re: Не могу настроить IPFW

Добавлено: 2011-02-10 15:53:16
alex117
Да, делал по этой статье http://www.lissyara.su/articles/freebsd/tuning/ipfw/.

Re: Не могу настроить IPFW

Добавлено: 2011-02-10 16:53:45
dmtr
покажите

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

# ipfw show

Re: Не могу настроить IPFW

Добавлено: 2011-02-10 17:35:53
digital_punk
В rc.conf прописывали gateway_enable="YES" ?

Re: Не могу настроить IPFW

Добавлено: 2011-02-10 17:50:32
schizoid
чета подозреваю, что рубиться все на

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

${FwCMD} add deny ip from any to any
:)

Re: Не могу настроить IPFW

Добавлено: 2011-02-10 18:09:59
alex117
покажите
Код:
# ipfw show
Завтра покажу, сервер на работе.
В rc.conf прописывали gateway_enable="YES" ?
Да прописал.
чета подозреваю, что рубиться все на
Код:
${FwCMD} add deny ip from any to any
Походу да, т.к под другие правила нужные пакеты не попадают.
Поднял также bind на этом сервере. Вопрос: Когда под виндовыми тачками прописываем шлюз нужно указывать dns-сервер или не обязательно? В named.conf прописал forward на 192.168.1.1 (адрес роутера).

Re: Не могу настроить IPFW

Добавлено: 2011-02-10 18:17:13
snorlov
можно еще посмотреть

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

ipfw -a list 
там сразу видно на каком правиле режутся, а вообще, возьмите стандартный скрипт для ipfw и задайте тип OPEN

Re: Не могу настроить IPFW

Добавлено: 2011-02-11 10:06:29
alex117
Чуть скорректировал скрипт для ntp, ssh и внутреннего dns-сервера.

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

#!/bin/sh

# Переменные
FwCMD="/sbin/ipfw -q "
LanOut="vr1"
LanIn="vr0"
IpOut="192.168.1.14"
IpIn="192.168.0.1"
NetMask="24"
NetIn="192.168.0.0"

#Правила

${FwCMD} -f flush
${FwCMD} add check-state
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any

#Включение NAT

${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}

#Разрешение нужных соединений

${FwCMD} add allow tcp from any to any established
${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}
${FwCMD} add allow udp from any 53 to any via ${LanOut}
${FwCMD} add allow udp from any to any 53 via ${LanOut}
${FwCMD} add allow udp from any 53 to any via ${LanIn}
${FwCMD} add allow udp from any to any 53 via ${LanIn}
${FwCMD} add allow udp from any to any 123 via ${LanOut}
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
${FwCMD} add allow tcp from any to ${IpIn} 22 via ${LanIn}
${FwCMD} add allow tcp from any to any via {LanIn}
${FwCMD} add allow icmp from any to any via {LanIn}
${FwCMD} add allow udp from any to any via {LanIn}
${FwCMD} add deny ip from any to any
Потом поломился с виндовой тачки в инет и вот что показывает ipfw show:

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

00100   0     0 check-state
00200  24  2732 allow ip from any to any via lo0
00300   0     0 deny ip from any to 127.0.0.0/8
00400   0     0 deny ip from 127.0.0.0/8 to any
00500   0     0 divert 8668 ip from 192.168.0.0/24 to any out via vr1
00600  79 19964 divert 8668 ip from any to 192.168.1.14 in via vr1
00700   0     0 allow tcp from any to any established
00800  79  5933 allow ip from 192.168.1.14 to any out xmit vr1
00900  51 17836 allow udp from any 53 to any via vr1
01000   0     0 allow udp from any to any dst-port 53 via vr1
01100  22  6156 allow udp from any 53 to any via vr0
01200  22  1502 allow udp from any to any dst-port 53 via vr0
01300  28  2128 allow udp from any to any dst-port 123 via vr1
01400   0     0 allow icmp from any to any icmptypes 0,8,11
01500   0     0 allow tcp from any to 192.168.0.1 dst-port 22 via vr0
01600   0     0 allow tcp from any to any via {LanIn}
01700   0     0 allow icmp from any to any via {LanIn}
01800   0     0 allow udp from any to any via {LanIn}
01900 455 39363 deny ip from any to any
65535   2   337 deny ip from any to any

Re: Не могу настроить IPFW

Добавлено: 2011-02-11 10:32:17
snorlov
я бы вам еще раз рекомендую посмотреть скрипт rc.firewall c типом OPEN

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

${FwCMD} add allow all from ${NetIn}/${NetMask to ${NetIn}/${NetMask via ${LanIn}
${FwCMD} add divert natd all  from any to any  via ${LanOut}

Re: Не могу настроить IPFW

Добавлено: 2011-02-11 11:01:59
alex117
Посмотрел, дописал по Вашему примеру правила, но толку нет. Заработало только когда последнее правило изменил на

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

${FwCMD} add allow ip from any to any
Но почему не работает с моей конфигурацией? Выходит, что пакеты с запросами от клиетского ПК не подходят ни под одно правило и рубятся последним. Тогда что я не правильно прописал для своей сети, я просто хочу понять и не могу.

Re: Не могу настроить IPFW

Добавлено: 2011-02-15 13:40:57
ink08

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

01600   0     0 allow tcp from any to any via {LanIn}
01700   0     0 allow icmp from any to any via {LanIn}
01800   0     0 allow udp from any to any via {LanIn}
в ipfw show не показываются переменные, у вас ошибка в правилах,

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

s/{LanIn}/${LanIn}/
поправьте и все заработает

Re: Не могу настроить IPFW

Добавлено: 2011-02-15 19:57:34
alex117
Да это я поправил, но суть в том, что не работает при полном запрете на 65535 правиле, как написано в статье, нужно разрешить все. Это означает, что пакет не проходит по нужным мне правилам.

Re: Не могу настроить IPFW

Добавлено: 2011-10-17 10:04:25
ddenia
http://blogfreebsd.com/freebsd/zashhita ... u-ipfw.html здесь все доступно и понятно!!