Поставили задачу ограничить доступ к определенному сайту.
На сервере freebsd, который работает в качестве шлюза, без squid с помощью ipfw заблокировал доступ к данному сайту. Но потом появилась необходимость дать доступ одному компьютеру из сети к этому сайту. Вот тут и появилась проблема. Ну никак не получается. Помогите плиз.Вот конфиг ipfw:
#!/bin/shfwa="ipfw -q add"
ft1="ipfw table 1 add"
iif="fxp1"
oif="fxp0"
oip="11.11.11.11"ipfw -q -f flush
ipfw -q table all flush# skip
$fwa skipto 10000 ip from 192.168.10.4 to any out via $oif# deny rules
$fwa deny ip from any to $oip 22 in via $oif
$fwa deny ip from any to 174.122.62.84 out via $oif# allow all
$fwa 10000 allow ip from any to any via lo0
$fwa allow ip from any to any via $iif
$fwa divert natd ip from any to any via $oif
$fwa allow ip from any to any via $oifОбход пытался делать с помощью skipto, как можно видеть выше, но в итоге сайт все равно не доступен с компьютера у которого ip 192.168.10.4. Как можно сделать так, что бы сайт 174.122.62.84 был для всех недоступен кроме компьютера с адресом 192.168.10.4???????????
>[оверквотинг удален]
> $fwa deny ip from any to 174.122.62.84 out via $oif
> # allow all
> $fwa 10000 allow ip from any to any via lo0
> $fwa allow ip from any to any via $iif
> $fwa divert natd ip from any to any via $oif
> $fwa allow ip from any to any via $oif
> Обход пытался делать с помощью skipto, как можно видеть выше, но в
> итоге сайт все равно не доступен с компьютера у которого ip
> 192.168.10.4. Как можно сделать так, что бы сайт 174.122.62.84 был для
> всех недоступен кроме компьютера с адресом 192.168.10.4???????????Зачем скипто? И почему перед natd режете?
После диверта и надо зарубать.
Только СНАЧАЛА РАЗРЕШИТЬ КОМУ НАДО
А потом ЗАПРЕТИТЬ ВСЕМ ОСТАЛЬНЫМ
ipfw divert natd ip from any to any via fxp0
ipfw add allow all from 192.168.10.4 to 174.122.62.84
ipfw add deny all from any to 174.122.62.84
>[оверквотинг удален]
>> итоге сайт все равно не доступен с компьютера у которого ip
>> 192.168.10.4. Как можно сделать так, что бы сайт 174.122.62.84 был для
>> всех недоступен кроме компьютера с адресом 192.168.10.4???????????
> Зачем скипто? И почему перед natd режете?
> После диверта и надо зарубать.
> Только СНАЧАЛА РАЗРЕШИТЬ КОМУ НАДО
> А потом ЗАПРЕТИТЬ ВСЕМ ОСТАЛЬНЫМ
> ipfw divert natd ip from any to any via fxp0
> ipfw add allow all from 192.168.10.4 to 174.122.62.84
> ipfw add deny all from any to 174.122.62.84Спасибо за ответ.
Сделал все как вы описали, но ничего не изменилось. Как не было доступа у этого компьютера к этому сайту, так и нет.
Заметил одну вещь. Когда правило разрешения стояло до диверта по нему проходили пакеты, но и так же проходили по запрещающему правилу и там останавливались по ходу, а теперь по нему не проходят пакеты вообще (((Помогите плиз, а то я запутался совсем.
>[оверквотинг удален]
>> ipfw add allow all from 192.168.10.4 to 174.122.62.84
>> ipfw add deny all from any to 174.122.62.84
> Спасибо за ответ.
> Сделал все как вы описали, но ничего не изменилось. Как не было
> доступа у этого компьютера к этому сайту, так и нет.
> Заметил одну вещь. Когда правило разрешения стояло до диверта по нему проходили
> пакеты, но и так же проходили по запрещающему правилу и там
> останавливались по ходу, а теперь по нему не проходят пакеты вообще
> (((
> Помогите плиз, а то я запутался совсем.ipfw show покажите весь
вместо
# skip
$fwa skipto 10000 ip from 192.168.10.4 to any out via $oif
...
сделайте
...
# skip
$fwa allow ip from 192.168.10.4 to 174.122.62.84 out via $oif
...
> вместо
> # skip
> $fwa skipto 10000 ip from 192.168.10.4 to any out via $oif
> ...
> сделайте
> ...
> # skip
> $fwa allow ip from 192.168.10.4 to 174.122.62.84 out via $oif
> ...Всем большое спасибо за помощь, но кажется я разобрался в чем дело и сделал так, что бы все работало как задумывалось.
Как я понял, виноват был divert. После прохождения через nat, у пакета исходный айпи меняется на айпи сервера... и получается, что когда уже выходит пакет по внешнему интерфейсу его уже бесполезно пытаться отловить по айпи компьютера отправителя. Короче, я сделал так, что бы все фильтровалось на интерфейсе, который смотрит внутрь локальной сети и все заработало! =)