URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 2894
[ Назад ]

Исходное сообщение
"Связка ipfw+natd+squid - форвард не прошёл"

Отправлено SPIDERL33T , 12-Сен-06 15:58 
Здравствуйте, уважаемые.

Столкнулся с проблемой - не могу настроить ipfw с прозрачным прокси SQUID и nat`ом

Что хочу:
Чтобы из внутренней сети компы шли в интернет через Сквид, но чтобы в настройках браузера пользователь не делал каких-либо изменений.
------------------------------
Делаю для проверки NAT`а:

$ipfw add 10 divert natd all from any to any via {внешний фэйс}
$ipfw add 40 pass all from any to any

Все бегает - сайты открываются

============================
Далее делаю форвард на прокси:
$ipfw add 10 divert natd all from any to any via {внешний фэйс}
$ipfw add 20 fwd 127.0.0.1,3128 tcp from any to any http via {внутренний фэйс}
$ipfw add 30 deny tcp from {внутренняя сеть} to any http via {внутренний фэйс}  
$ipfw add 40 pass all from any to any

Пытаюсь открыть в браузере сайт - облом.
В настройках браузера вручную прописываю прокси - сайты начинают открываться.

Т.е., как я понимаю, "id 20" огнестенки не срабатывает?
===================
Ядро собирал со следующими параметрами:
options IPFIREWALL
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
options IPFIREWALL_FORWARD
options DUMMYNET
===================
SQUID собран из портов

===================
Конфиг SQUID:
===================
http_port 192.168.100.5:3128
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 64 MB
cache_dir ufs /usr/local/squid/cache 3072 16 256
cache_access_log /usr/local/squid/logs/access.log
cache_log /usr/local/squid/logs/cache.log
cache_store_log /usr/local/squid/logs/store.log
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive on
refresh_pattern ^ftp:         &n... 1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl LMT src "/usr/local/etc/squid/LMT"
http_access allow LMT
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname CHAOSGATE
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
error_directory /usr/local/etc/squid/errors/Russian-1251
httpd_accel_host virtual
===============================

Перед тем, как сообщить, что ошибка у меня в DNA и что я ламо до мозга костей, убедительно прошу дать нормальный развёрнутый ответ. Посылать в Гугль и на х... не надо. Маны тоже читаю.

Помогите разобраться.

Заранее благодарен.


Содержание

Сообщения в этом обсуждении
"Связка ipfw+natd+squid - форвард не прошёл"
Отправлено Dilmas , 12-Сен-06 16:21 
1) Никак не найдешь ошибку?
1. $ipfw add 20 fwd 127.0.0.1,3128 tcp from any to any http via {внутренний фэйс}
2. http_port 192.168.100.5:3128
Замени строку 1 на:
$ipfw add 20 fwd 192.168.100.5,3128 tcp from any to any http via {внутренний фэйс}
2) авторизация работать не будет.

"Связка ipfw+natd+squid - форвард не прошёл"
Отправлено SPIDERL33T , 12-Сен-06 16:31 
>1) Никак не найдешь ошибку?
>1. $ipfw add 20 fwd 127.0.0.1,3128 tcp from any to any http
>via {внутренний фэйс}
>2. http_port 192.168.100.5:3128
>Замени строку 1 на:
>$ipfw add 20 fwd 192.168.100.5,3128 tcp from any to any http via
>{внутренний фэйс}
>2) авторизация работать не будет.

"Масло маслянное" =)

Изменение 127.0.0.1 на 192.168.100.5 не даёт ровным счётом ничего.
Попробовал - тоже самое.

Кстати, ОС стоит - FreeBSD 6.1. Это если у кого-то вопрос о версии операционки возникнет =)


"Связка ipfw+natd+squid - форвард не прошёл"
Отправлено alex3 , 12-Сен-06 16:47 

>Кстати, ОС стоит - FreeBSD 6.1. Это если у кого-то вопрос о
>версии операционки возникнет =)

А попробуй пересобрать ядро с добавленной опцией Forward_extended - как-то так... Я когда с 5-ки переходил - у меня форвард вообще не работал пока эту опцию в ядро не добавил. Кто знает, может этот бубен и тебе поможет.


"Связка ipfw+natd+squid - форвард не прошёл"
Отправлено alex3 , 12-Сен-06 16:55 
Еще вариант, может пакет у тебя на форварде циклится, сквид ведь тоже на http порт обращается....
Может стоит попробовать что-то вроде:
$ipfw add 10 fwd 192.168.100.5,3128 tcp from not me to any http via {внутренний фэйс}
$ipfw add 20 deny tcp from {внутренняя сеть} to any http via {внутренний фэйс}  
$ipfw add 30 divert natd all from any to any via {внешний фэйс}
$ipfw add 40 pass all from any to any

"Связка ipfw+natd+squid - форвард не прошёл"
Отправлено SPIDERL33T , 13-Сен-06 12:28 
>Еще вариант, может пакет у тебя на форварде циклится, сквид ведь тоже
>на http порт обращается....
>Может стоит попробовать что-то вроде:
>$ipfw add 10 fwd 192.168.100.5,3128 tcp from not me to any http
>via {внутренний фэйс}
>$ipfw add 20 deny tcp from {внутренняя сеть} to any http via
>{внутренний фэйс}
>$ipfw add 30 divert natd all from any to any via {внешний
>фэйс}
>$ipfw add 40 pass all from any to any

Тоже самое.
Если в браузере прокси прописать - всё бегает.
Если оставить автоматику - ничего не работает.

А мне надо, чтобы прозрачно работало.


"Связка ipfw+natd+squid - форвард не прошёл"
Отправлено SPIDERL33T , 13-Сен-06 16:40 
>>Еще вариант, может пакет у тебя на форварде циклится, сквид ведь тоже
>>на http порт обращается....
>>Может стоит попробовать что-то вроде:
>>$ipfw add 10 fwd 192.168.100.5,3128 tcp from not me to any http
>>via {внутренний фэйс}
>>$ipfw add 20 deny tcp from {внутренняя сеть} to any http via
>>{внутренний фэйс}
>>$ipfw add 30 divert natd all from any to any via {внешний
>>фэйс}
>>$ipfw add 40 pass all from any to any
>
>Тоже самое.
>Если в браузере прокси прописать - всё бегает.
>Если оставить автоматику - ничего не работает.
>
>А мне надо, чтобы прозрачно работало.

Всем спасибо за внимание.
С проблемой разобрался.
============================
вот как у меня заработало:

$ipfw add 10 fwd 192.168.100.5,3128 tcp from ${localnetwok}/24 to any http via ${внутренний фэйс}
$ipfw add 20 deny tcp from ${внутренняя сеть} to any http via ${внутренний фэйс}
$ipfw add 30 divert natd all from any to any via ${внешний фэйс}
$ipfw add 40 pass all from any to any
============================