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

Список разрешенных IP в IPFW

Добавлено: 2011-07-21 13:35:55
alex117
Собственно вопрос: как в конфиге IPFW указать список ip-адресов? Пробовал создавать переменную типа:

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

IP_list="/etc/black_list"
Где в /etc/black_list построчно были записаны нужные ip-адреса, но не катит
Мне нужно, чтобы в инет через NAT ходили только несколько компов, а остальные - через SQUID. При моей настройке все, у кого прописан шлюз имеют выход в инет, пока борюсь с этим добавлением запрещающих правил для каждого компа, но это не выход. Нужно что-то типа " запретить всем, кроме ip из белого списка.

Re: Список разрешенных IP в IPFW

Добавлено: 2011-07-21 15:24:46
snorlov
man ipfw, а там на table()

Re: Список разрешенных IP в IPFW

Добавлено: 2011-07-28 4:07:30
km
Конечно я несупер спец, но сделал бы так:
1. Настроить прозрачный прокси, если не знаешь как, читай форум.
1. Создал файл с ip адресами, тем кому можно на NAT(white_list);
2. Создал файл с ip адресами, тем кому только через squid(black_list);
3. В файле конфигурации firewall использовал table:

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

#!/bin/sh

ipfw -f flush
ipfw table all flush

iip="192.168.1.1"
oip="xxx.xxx.xxx.xxx"
oif="xl0"
iif="em0"

cat /etc/black_list | while read cLine1; do
        ipfw table 1 add $cLine1
done

cat /etc/white_list | while read cLine2; do
        ipfw table 2 add $cLine2
done

ipfw add 10 check-state
ipfw add 20 allow all from any to any via lo0

ipfw nat 1 config if ${oif} deny_in same_ports unreg_only
ipfw add 40 nat 1 tcp from "table(2)" to any 80 out via ${oif}
ipfw add 50 nat 1 tcp from any 80 to ${oip} in via ${oif}   

ipfw add 60 fwd ${iip},8080 tcp from "table(1)" to any 80 recv ${iif}

ipfw add 70 allow ip from any to any via ${iif}
ipfw add 80 deny all from any to any
4. Перезапустил файрвол.

Вышеуказанные настройки указаны для FreeBSD 7.2(ipfw+kernel NAT+SQUID)

Re: Список разрешенных IP в IPFW

Добавлено: 2011-07-28 4:25:38
km
Тут подумал, можно даже проще сделать.
Используя только черный список ip.

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

#!/bin/sh

ipfw -f flush
ipfw table all flush

iip="192.168.1.1"
oip="xxx.xxx.xxx.xxx"
oif="xl0"
iif="em0"

cat /etc/black_list | while read cLine; do
        ipfw table 1 add $cLine
done

ipfw add 10 check-state
ipfw add 20 allow all from any to any via lo0

ipfw add 30 fwd ${iip},8080 tcp from "table(1)" to any 80 recv ${iif}

ipfw nat 1 config if ${oif} deny_in same_ports unreg_only
ipfw add 40 nat 1 tcp from ${iip}/24 to any 80 out via ${oif}
ipfw add 50 nat 1 tcp from any 80 to ${oip} in via ${oif} 

ipfw add 70 allow ip from any to any via ${iif}
ipfw add 80 deny all from any to any