Итак, есть шлюз на FreeBSD 5.3. На нем squid (трансперент) и pf.Задача: для юзеров <natusers> разрешить НАТ, для юзеров <squidusers> заворачивать веб-трафик на сквид. всем остальным облом.
Делаю так:
ext_if="rl0"
int_if="fxp0"
internal_net="192.168.0.0/24"
external_addr="81.х.х.х"
table <natusers> { 192.168.0.100, 192.168.0.110 }
table <squidusers>{ 192.168.0.100, 192.168.0.110 }nat on $ext_if inet from <natusers> to any -> ($ext_if)
rdr on $int_if proto tcp from <squidusers> to any port 80 -> 127.0.0.1 port 3128
Не работает, не заворачивается на сквид веб-трафик. А если делаю так:
nat on $ext_if from $internal_net to any -> ($ext_if)
rdr on $int_if proto tcp from <squidusers> to any port 80 -> 127.0.0.1 port 3128все работает. Т.е. если на НАТе прописана вся сеть целиком - все работает, веб-трафик для <squidusers> заруливается на сквид и все ходят через НАТ. Но мне надо ограничить выход в сеть.
Помогите примером.
>Помогите примером.Поменяй местами.
Помогите кто сможет плиззззСитуация такова, завернул трафик на squid,при открытии сайтов пишет ошибу
"Запрошенный URL не может быть доставлен"В файле access.log пишет вот это:
1148278457.647 3 10.10.1.2 TCP_DENIED/400 1354 GET / - NONE/- text/html
1148278458.146 3 10.10.1.2 TCP_DENIED/400 1354 GET / - NONE/- text/htmlнастрайки PF.CONF
int_if = "ed1"
ext_inet = "tun0"priv_nets = "10.10.1.2"
nat on $ext_inet from $int_if to any -> ($ext_inet)
rdr on $int_if proto tcp from $prev_nets to any port 80 -> 127.0.0.1 port 3128В чем может быть загвоздка подскажите.
заранее блогадарю.
>В чем может быть загвоздка подскажите.
>заранее блогадарю.Попробуй добавить строку:
set skip on lo0
/etc/pf.conf:20: syntax error
pfctl: Syntax error in config file: pf rules not loadedвот такую выдаёт ошибку, почему не могу понять.
>/etc/pf.conf:20: syntax error
>pfctl: Syntax error in config file: pf rules not loaded
>
>вот такую выдаёт ошибку, почему не могу понять.
Потому что добавлять надо было не в конец. В PF имеет значение в каком месте какая директива.int_if = "ed1"
ext_inet = "tun0"priv_nets = "10.10.1.2"
set skip on lo0
nat on $ext_inet from $int_if to any -> ($ext_inet)
rdr on $int_if proto tcp from $prev_nets to any port 80 -> 127.0.0.1 port 3128
>>/etc/pf.conf:20: syntax error
>>pfctl: Syntax error in config file: pf rules not loaded>priv_nets != $prev_nets
ЗЫ...усли мЭне не изменяет память squid можнособрать в режиме прозрачного прокси с поддержкой pf...однако енто может и не подойти к вашим задачам....
Все прекрасно заработало при добавлении в squid.conf этих строк:httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header onА squid из портов был поставлен и по умолчанию он потдерживает прозрачный прокси.
А кто подскажет как завернуть на сквид с PPPoE туннелей tun1 и т.п.
ppp_net="10.0.0.0/24"не заработали след. варианты:
rdr inet proto tcp from $ppp_net to any port 80 -> 127.0.0.1 port 3128
rdr on tun1 proto tcp from any to any port 80 -> 127.0.0.1 port 3128
rdr on 10.0.0.1 proto tcp from any to any port 80 -> 127.0.0.1 port 3128при этом на $lan_if все заворачивается гуд :/