Страница 1 из 1
Прозрачный прокси
Добавлено: 2009-02-08 16:00:00
Silent237
Не получается завернуть траффик на прозрачный прокси, уже весь моск сломал.
xl0 - локальный интерфейс (10.11.100.1)
rl0 - смотрит на АДСЛ-модем (192.168.23.204)
tun0 - PPPoE соединение с провайдером (динамический ип)
настройки фаерволла:
Код: Выделить всё
#!/bin/sh
IPFW="/sbin/ipfw"
NATCMD="/sbin/natd"
INT_IFACE="xl0"
EXT_IFACE="rl0"
${IPFW} -q flush
${IPFW} add 10 check-state
${IPFW} add 15 allow all from me to me
${IPFW} add 23 allow all from any to any via ${INT_IFACE} # разрешаем всё из внутренней сетки
${IPFW} add 24 allow all from me to any out # разрешаем все исходящие соединения
${IPFW} add 25 allow all from any to any established # разрешаем все установившиеся соединения
${IPFW} add 27 fwd 127.0.0.1,3129 all from 10.11.100.0/24 to any http,5190,5222 out via tun0 #собственно пытаемся завернуть траффик
### VPN
${IPFW} add 41 allow gre from any to any
${IPFW} add 42 allow tcp from me to any dst-port 1723 via ${EXT_IFACE} setup keep-state
### ssh in host from int lan
${IPFW} add 50 allow tcp from any to me ssh via ${INT_IFACE}
# DNS (если ваш сервер ипользуется как DNS сервер для внутренней сети)
${IPFW} add 172 allow udp from any to 85.15.64.49
${IPFW} add 173 allow udp from 85.15.64.49 to any
### icmp
${IPFW} add 180 allow icmp from any to any
###
${IPFW} add 65000 deny all from any to any
выдержка rc.conf
Код: Выделить всё
firewall_enable="YES"
#firewall_type="open"
firewall_script="/etc/firewall.sh"
firewall_logging="YES"
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="vtk"
natd_enable="YES"
natd_interface="tun0"
Собственно добавляем в фаерволл
Код: Выделить всё
${IPFW} add 26 allow all from 10.11.100.0/24 to any out via tun0
все работает, но, понятно, не через прокси.
Сквид настроен корректно - в настройках браузера указываю 10.11.100.1:3129 и, больше ничего не трогая, все работает.
Помогите, уже сломал весь мозг, пытаясь разобраться.
Re: Прозрачный прокси
Добавлено: 2009-02-08 16:11:37
paradox
${IPFW} add 27 fwd 127.0.0.1,3129 all from 10.11.100.0/24 to any http,5190,5222 out via tun0
чтото мне кажеться что out tun0 уже имеет другой src переписаный натом (я так понимаю нат есть)
да и вообще
неумеет что то уже молодежь думать методом исключений и пошагово
Re: Прозрачный прокси
Добавлено: 2009-02-08 16:21:59
Silent237
нат работает даже при открытом фаерволле, за счет того, что описан в rc.conf
я уже исключал все что только можно и неможно, уже сил нет..
Re: Прозрачный прокси
Добавлено: 2009-02-08 16:32:45
paradox
я вообще то имел ввиду совсем другое
ПАКЕТ КОТОРЫЙ ВЫХОДИТ С out tun0 МОЖЕТ ИМЕТЬ УЖЕ ДРУГОЙ SRC КОТОРЫЙ ИМЕЕТ УЖЕ IP/NET НАТА А НЕ ВАШЕЙ СЕТИ
вот как я предполагаю
а насчет всего что можно
ну значит еще недодумались
проверить
1 что пакеты попадают в правило fwd
2 что проксик получает эти пакеты
как минимум
при котором все должно работать
а вы что то крутите угадываете что куда подставить что бы заработало
думать кто будет?
анализировать?
зы
вы геометрию в школе тоже методом угадайди развязывали?
Re: Прозрачный прокси
Добавлено: 2009-02-08 17:07:44
Silent237
Код: Выделить всё
Feb 9 00:04:36 237 kernel: ipfw: 27 Forward to 127.0.0.1:3129 TCP 10.11.100.2:56638 213.180.204.8:80 out via tun0
стало быть пакеты форвардятся, но до сквида недоходят. access.log сквида тоже молчит.
добавление правила
Код: Выделить всё
${IPFW} add 16 allow all from any to any via lo0
проблему не решило.
Re: Прозрачный прокси
Добавлено: 2009-02-08 17:39:06
maradona
Чио говорит ipfw show на это правило:
Код: Выделить всё
${IPFW} add 27 fwd 127.0.0.1,3129 all from 10.11.100.0/24 to any http,5190,5222 out via tun0
если прозрачный зачем тогда это:
Код: Выделить всё
Сквид настроен корректно - в настройках браузера указываю 10.11.100.1:3129
попробуй поставить в сквиде вот так:
Re: Прозрачный прокси
Добавлено: 2009-02-08 18:27:20
paradox
tcpdump ом посмотри пакеты уходят с интерфейса или нет
и куда идут
а то может фаер стработал
но дальше где то рубонул
мало ли что там у вас накручено
Re: Прозрачный прокси
Добавлено: 2009-02-08 19:04:22
Silent237
maradona писал(а):Чио говорит ipfw show на это правило:
Код: Выделить всё
${IPFW} add 27 fwd 127.0.0.1,3129 all from 10.11.100.0/24 to any http,5190,5222 out via tun0
237# ipfw show
00027 3 156 fwd 127.0.0.1,3129 log logamount 100 ip from 10.11.100.0/24 to any dst-port 80,5190,5222 out via tun0
Правило работает, пакеты форвардятся, это можно понять из приведенных выше логов.
maradona писал(а):если прозрачный зачем тогда это:
Код: Выделить всё
Сквид настроен корректно - в настройках браузера указываю 10.11.100.1:3129
Проверки ради. Вообще, конечно, запускаю с пустыми настройками браузера.
maradona писал(а):попробуй поставить в сквиде вот так:
Не помогло..
Но изменение есть: раньше при запросе странички браузер думал секунд 20, потом показывал чистый лист, сейчас мгновенно говорит что страница недоступна.
paradox писал(а):tcpdump ом посмотри пакеты уходят с интерфейса или нет
и куда идут
а то может фаер стработал
но дальше где то рубонул
мало ли что там у вас накручено
Все, что у меня накручено - я привел.
xl0 - смотрящий в локалку интерфейс
237 - hostname моего серванта
diana.vtelecom.ru - ДНС провайдера
Код: Выделить всё
tcpdump -i xl0
02:04:53.017458 IP 10.11.100.2.37144 > 237.domain: 46013+ AAAA? www.google.com. (32)
02:04:53.017683 IP 237 > 10.11.100.2: ICMP 237 udp port domain unreachable, length 36
02:04:53.028416 IP 10.11.100.2.39088 > diana.vtelecom.ru.domain: 46013+ AAAA? www.google.com. (32)
02:04:53.054188 IP diana.vtelecom.ru.domain > 10.11.100.2.39088: 46013 1/1/0 CNAME www.l.google.com. (100)
02:04:53.054604 IP 10.11.100.2.51434 > 237.domain: 47968+ A? www.google.com. (32)
02:04:53.054753 IP 237 > 10.11.100.2: ICMP 237 udp port domain unreachable, length 36
02:04:53.060402 IP 10.11.100.2.50640 > diana.vtelecom.ru.domain: 47968+ A? www.google.com. (32)
02:04:53.080980 IP diana.vtelecom.ru.domain > 10.11.100.2.50640: 47968 5/7/7 CNAME www.l.google.com.,[|domain]
02:04:53.186532 IP 10.11.100.2.38133 > fx-in-f103.google.com.http: S 1887259886:1887259886(0) win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 6>
02:04:53.187064 IP fx-in-f103.google.com.http > 10.11.100.2.38133: R 0:0(0) ack 1887259887 win 0
Re: Прозрачный прокси
Добавлено: 2009-02-08 19:07:53
Silent237
paradox писал(а):tcpdump ом посмотри пакеты уходят с интерфейса или нет
и куда идут
а то может фаер стработал
но дальше где то рубонул
мало ли что там у вас накручено
Кстати, когда комментирую последнее (оно же единственное) правило содержащее слово deny, то проблема не решается.
Re: Прозрачный прокси
Добавлено: 2009-02-08 19:11:05
paradox
тьфу ты нуты
tcpdump ом на lo0 я имел ввиду

Re: Прозрачный прокси
Добавлено: 2009-02-08 19:22:27
Silent237
а чистенько там... вывод только какой из этого? логи же говорят, что пакет форвардится и правило срабатывает в счетчиках..
Re: Прозрачный прокси
Добавлено: 2009-02-08 19:27:06
Silent237
кстати, вот еще какой момент присутствует:
Код: Выделить всё
237# ipfw show
00010 0 0 check-state
00015 0 0 allow ip from me to me
[b]00016 0 0 allow log logamount 100 ip from any to any via lo0[/b]
00023 72 6444 allow ip from any to any via xl0
00024 0 0 allow ip from me to any out
00025 0 0 allow ip from any to any established
[b]00027 1 52 fwd 127.0.0.1,3129 log logamount 100 ip from 10.11.100.0/24 to any dst-port 80,5190,5222 out via tun0[/b]
00041 0 0 allow gre from any to any
00042 0 0 allow tcp from me to any dst-port 1723 via rl0 setup keep-state
00050 0 0 allow tcp from any to me dst-port 22 via xl0
00172 2 120 allow udp from any to 85.15.64.49
00173 2 496 allow udp from 85.15.64.49 to any
00180 0 0 allow icmp from any to any
65000 0 0 deny ip from any to any
65535 122 9178 allow ip from any to any
форвард срабатывает, а правило завернутые пакеты не отображает и в tcpdump пусто. чувствую, истина где-то рядом

Re: Прозрачный прокси
Добавлено: 2009-02-09 7:15:51
Silent237
а сквид нужно как-то особо настраивать для прозрачной работы?
squid-2.7.5
а то я в нем кроме
и настроек доступа больше ничего не выставлял
Re: Прозрачный прокси
Добавлено: 2009-02-09 13:18:33
rezon
Вот кусок в котором всем разрешено всё.
Попробуй у себя поправить аналогично.
И без точного указания адреса на который он вешается.
Далее советую уже
Код: Выделить всё
acl all src all
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 !Safe_ports
http_access allow CONNECT !SSL_ports
http_access allow all
http_port 3128 transparent
Re: Прозрачный прокси
Добавлено: 2009-02-09 13:24:38
rezon
xl0 - локальный интерфейс (10.11.100.1)
тогад перенеси вот это в самое начало но после
add allow all from any to any via lo0
add 27 fwd 127.0.0.1,3129 all from 10.11.100.0/24 to any http,5190,5222 via xl0
Re: Прозрачный прокси
Добавлено: 2009-02-09 13:26:57
reZon
1. И как всегда забыл кое-что, проверь что бы правило заворачивающее на сквид заворачило на тот же порт что и в конфе
2. И как ты можешь заворачивать на сквид 127.0.0.1 если он у тебя висит на 10.11.100.1?
Re: Прозрачный прокси
Добавлено: 2009-02-09 13:56:26
Silent237
УРА)))))
Код: Выделить всё
${IPFW} add 17 fwd 127.0.0.1,3129 all from 10.11.100.0/24 to any http via xl0
И все работает))))