Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок
Модераторы: vadim64, terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-12 15:29:53
Всем доброго дня, прошу помощи в настройке прозрачности данного прокси. Без прозрачности все работает. Буду благодарен любому совету.
Немного о системе.
Код: Выделить всё
uname -a
FreeBSD ergo-proxy 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Fri Dec 7 17:24:37 SAMT 2012 root@ergo-proxy:/usr/src/sys/amd64/compile/MYKERNEL amd64
Код: Выделить всё
squid -v
Squid Cache: Version 3.2.3
configure options: '--with-default-user=squid' '--bindir=/usr/local/sbin' '--sbindir=/usr/local/sbin' '--datadir=/usr/local/etc/squid' '--libexecdir=/usr/local/libexec/squid' '--localstatedir=/var/squid' '--sysconfdir=/usr/local/etc/squid' '--with-logdir=/var/log/squid' '--with-pidfile=/var/run/squid/squid.pid' '--enable-auth' '--enable-build-info' '--enable-loadable-modules' '--enable-removal-policies=lru heap' '--disable-epoll' '--disable-linux-netfilter' '--disable-linux-tproxy' '--disable-translation' '--enable-auth-basic=DB MSNT MSNT-multi-domain NCSA PAM POP3 RADIUS fake getpwnam NIS' '--enable-auth-digest=file' '--enable-external-acl-helpers=file_userip unix_group' '--enable-auth-negotiate=kerberos wrapper' '--enable-auth-ntlm=fake smb_lm' '--enable-storeio=diskd rock ufs aufs' '--enable-disk-io=AIO Blocking DiskDaemon IpcIo Mmapped DiskThreads' '--enable-log-daemon-helpers=file' '--enable-url-rewrite-helpers=fake' '--disable-ipv6' '--enable-htcp' '--disable-forw-via-db' '--disable-cache-digests' '--enable-wccp' '--enable-wccpv2' '--disable-eui' '--disable-ipfw-transparent' '--enable-pf-transparent' '--disable-ipf-transparent' '--disable-follow-x-forwarded-for' '--disable-ecap' '--disable-icap-client' '--disable-esi' '--enable-kqueue' '--prefix=/usr/local' '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=amd64-portbld-freebsd9.0' 'build_alias=amd64-portbld-freebsd9.0' 'CC=cc' 'CFLAGS=-O2 -pipe -fno-strict-aliasing' 'LDFLAGS= -pthread' 'CPPFLAGS=' 'CXX=c++' 'CXXFLAGS=-O2 -pipe -fno-strict-aliasing' 'CPP=cpp' --enable-ltdl-convenience
Код: Выделить всё
less /etc/rc.conf
#!/bin/sh
defaultrouter="10.18.71.1"
gateway_enable="YES"
hostname="ergo-proxy"
inetd_enable="YES"
network_interfaces="msk0 msk1 lo0"
ifconfig_msk0="inet 192.168.111.201 netmask 255.255.255.0"
ifconfig_msk1="inet 10.18.71.201 netmask 255.255.255.0"
natd_enable="YES"
natd_interface="10.18.71.201"
sshd_enable="YES"
squid_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
#ifconfig_msk2="inet 192.168.111.230 netmask 255.255.255.0"
keymap="ru.koi8-r.win.kbd"
#ifconfig_msk0="DHCP"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
natd_interface="msk1"
Код: Выделить всё
less /usr/local/etc/squid/squid.conf
acl localnet src 192.168.111.0/24
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 localhost manager
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 127.0.0.1:3128 transparent
cache_mem 128 MB
maximum_object_size 8092 KB
maximum_object_size_in_memory 512 KB
cache_log /var/squid/logs/squid_debug.log squid
cache_access_log /var/squid/logs/access.log squid
cache_store_log /var/squid/logs/cache_store.log squid
cache_dir ufs /var/squid/cache/squid 2048 64 256
coredump_dir /var/squid/cache/squid
visible_hostname ergoProxy
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
Код: Выделить всё
int_if="msk0"
ext_if="msk1"
ext_ip="10.18.71.201"
int_ip="192.168.111.201"
int_net="192.168.111.0/24"
rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
nat on $ext_if from $int_net to any ->$ext_ip
pass in on $int_if proto tcp to ($int_if) port ssh
pass in on $ext_if proto tcp to ($ext_if) port 22
block out all
block in all
pass on lo0
pass on $int_if
pass out from $ext_if to any keep state
pass in on $int_if proto tcp to ($int_if) port ssh
pass in on $ext_if proto tcp to ($ext_if) port 80
pass in on $int_if proto tcp to any port www
ReZooR
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
werder31
- сержант
- Сообщения: 217
- Зарегистрирован: 2009-12-22 10:48:41
- Откуда: from Ukraine
-
Контактная информация:
Непрочитанное сообщение
werder31 » 2012-12-12 15:44:12
Попробуйте указать в редиректе не фром эни, а конкрутную сеть
Код: Выделить всё
rdr on $int_if proto tcp from $int_if:network to any port www -> 127.0.0.1 port 3128
Любите жизнь, ведь она все равно отымеет..так хоть по любви!
werder31
-
maximos
- рядовой
- Сообщения: 20
- Зарегистрирован: 2012-12-12 10:40:30
Непрочитанное сообщение
maximos » 2012-12-12 16:01:01
Код: Выделить всё
int_if="msk0"
ext_if="msk1"
ext_ip="10.18.71.201"
int_ip="192.168.111.201"
int_net="192.168.111.0/24"
-->rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128 #редирект на 3128
nat on $ext_if from $int_net to any ->$ext_ip
-->pass in on $int_if proto tcp to ($int_if) port ssh #зачем? дальше следует block in all
-->pass in on $ext_if proto tcp to ($ext_if) port 22 #зачем? дальше следует block in all
block out all
block in all
pass on lo0
pass on $int_if
pass out from $ext_if to any keep state
pass in on $int_if proto tcp to ($int_if) port ssh
pass in on $ext_if proto tcp to ($ext_if) port 80
-->pass in on $int_if proto tcp to any port www #разрешаем входящие на 80 порт, хотя выше делали редирект на 3128
можно сделать
Код: Выделить всё
rdr pass on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
и последнее правило удалить
maximos
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-12 16:01:51
Не помогло, если я правильно все понял.
Мои попытки (на всякий случай)
Код: Выделить всё
rdr on $int_if inet proto tcp from 192.168.111.0/24 to any port www -> 127.0.0.1 port 3128
rdr on $int_if inet proto tcp from $int_if to any port www -> 127.0.0.1 port 3128
ReZooR
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-12 16:29:13
maximos писал(а):Код: Выделить всё
int_if="msk0"
ext_if="msk1"
ext_ip="10.18.71.201"
int_ip="192.168.111.201"
int_net="192.168.111.0/24"
-->rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128 #редирект на 3128
nat on $ext_if from $int_net to any ->$ext_ip
-->pass in on $int_if proto tcp to ($int_if) port ssh #зачем? дальше следует block in all
-->pass in on $ext_if proto tcp to ($ext_if) port 22 #зачем? дальше следует block in all
block out all
block in all
pass on lo0
pass on $int_if
pass out from $ext_if to any keep state
pass in on $int_if proto tcp to ($int_if) port ssh
pass in on $ext_if proto tcp to ($ext_if) port 80
-->pass in on $int_if proto tcp to any port www #разрешаем входящие на 80 порт, хотя выше делали редирект на 3128
можно сделать
Код: Выделить всё
rdr pass on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
и последнее правило удалить
Прислушался к твоим советам (ничего что я сразу на ТЫ
) удалил все запреты получилась вот это
Код: Выделить всё
int_if="msk0"
ext_if="msk1"
int_ip="192.168.111.201"
ext_ip="10.18.71.201"
int_net="192.168.111.0/24"
rdr pass on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
nat on $ext_if from $int_net to any ->$ext_ip
pass on lo0
pass on $int_if
pass out from $ext_if to any keep state
pass in on $int_if proto tcp to ($int_if) port ssh
pass in on $ext_if proto tcp to ($ext_if) port 80
Не заработало (
А можно отследить редирект пакетов tcpdump'ом к примеру , может у меня PF лажает ?
ReZooR
-
maximos
- рядовой
- Сообщения: 20
- Зарегистрирован: 2012-12-12 10:40:30
Непрочитанное сообщение
maximos » 2012-12-12 18:36:58
ReZooR писал(а):
Код: Выделить всё
int_if="msk0"
ext_if="msk1"
int_ip="192.168.111.201"
ext_ip="10.18.71.201"
int_net="192.168.111.0/24"
rdr pass on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
nat on $ext_if from $int_net to any ->$ext_ip
pass on lo0
pass on $int_if
pass out from $ext_if to any keep state
pass in on $int_if proto tcp to ($int_if) port ssh
pass in on $ext_if proto tcp to ($ext_if) port 80
Так лучше не делать: сейчас разрешено все. Только на этапе отладки можно использовать такую конфигурацию.
Вообще должно быть что-то вроде этого:
Код: Выделить всё
int_if="msk0"
ext_if="msk1"
set skip on lo # можно не использовать эту опцию, а явно разрешить правилами ниже
rdr on $int_if inet proto tcp from $int_if:network to ! $int_if:network port www -> 127.0.0.1 port 3128
nat on $ext_if from $int_if:network to ! $int_if:network -> $ext_if
block all
#pass on lo0 # использована опция выше, поэтому правило не нужно
pass on $int_if
pass out from $ext_if to any keep state
pass in on $ext_if proto tcp to ($ext_if) port 80 # а точно нужно пускать снаружи на порт 80?
Кроме того, мне не очень ясно зачем запускается natd (у которого, кстати, дублирующие опции в rc.conf), если мы натим с помощью pf.
Дайте вывод
pfctl -sn
pfctl -sr
netstat -nrf inet
sockstat -4l
ReZooR писал(а):
А можно отследить редирект пакетов tcpdump'ом к примеру , может у меня PF лажает ?
Конечно можно.
maximos
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-13 9:45:30
Кроме того, мне не очень ясно зачем запускается natd (у которого, кстати, дублирующие опции в rc.conf), если мы натим с помощью pf.
Все элементарно, я же днище
Код: Выделить всё
pfctl -sn
nat on msk0 inet from 192.168.111.0/24 to any -> 192.168.111.201
rdr on msk0 inet proto tcp from 192.168.111.201 to ! 192.168.111.201 port = http -> 127.0.0.1 port 3128
Код: Выделить всё
pfctl -sr
pass in on msk1 proto tcp from any to (msk1) port = http flags S/SA keep state
pass out on msk1 inet6 from fe80::222:15ff:fe39:9a9c to any flags S/SA keep state
pass on msk0 all flags S/SA keep state
pass out inet from 10.18.71.201 to any flags S/SA keep state
Код: Выделить всё
netstat -nrf inet
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.18.71.1 UGS 0 0 msk1
10.18.71.0/24 link#6 U 0 0 msk1
10.18.71.201 link#6 UHS 0 0 lo0
127.0.0.1 link#17 UH 0 0 lo0
192.168.111.0/24 link#5 U 1 1732 msk0
192.168.111.201 link#5 UHS 0 0 lo0
Код: Выделить всё
netstat -nrf inet
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.18.71.1 UGS 0 0 msk1
10.18.71.0/24 link#6 U 0 0 msk1
10.18.71.201 link#6 UHS 0 0 lo0
127.0.0.1 link#17 UH 0 0 lo0
192.168.111.0/24 link#5 U 1 1732 msk0
192.168.111.201 link#5 UHS 0 0 lo0
ergo-proxy# sockstat -4l
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
squid squid 2480 7 udp4 *:58109 *:*
squid squid 2480 16 tcp4 *:3129 *:*
root sendmail 2139 3 tcp4 127.0.0.1:25 *:*
root sshd 2132 4 tcp4 *:22 *:*
root syslogd 1882 7 udp4 *:514 *:*
ReZooR
-
maximos
- рядовой
- Сообщения: 20
- Зарегистрирован: 2012-12-12 10:40:30
Непрочитанное сообщение
maximos » 2012-12-13 10:42:19
ReZooR писал(а):
Код: Выделить всё
pfctl -sn
nat on msk0 inet from 192.168.111.0/24 to any -> 192.168.111.201
rdr on msk0 inet proto tcp from 192.168.111.201 to ! 192.168.111.201 port = http -> 127.0.0.1 port 3128
Оба правила неверны. Почему нат на внутреннем интерфейсе? Условие в редиректе неправильное.
ReZooR писал(а):
Код: Выделить всё
pfctl -sr
pass in on msk1 proto tcp from any to (msk1) port = http flags S/SA keep state
pass out on msk1 inet6 from fe80::222:15ff:fe39:9a9c to any flags S/SA keep state
pass on msk0 all flags S/SA keep state
pass out inet from 10.18.71.201 to any flags S/SA keep state
Здесь тоже ерунда какая-то.
Сделайте
pfctl -nf /etc/pf.conf && pfctl -f /etc/pf.conf
И снова дайте вывод
pfctl -sn
pfctl -sr
ReZooR писал(а):
Код: Выделить всё
ergo-proxy# sockstat -4l
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
squid squid 2480 7 udp4 *:58109 *:*
squid squid 2480 16 tcp4 *:3129 *:*
root sendmail 2139 3 tcp4 127.0.0.1:25 *:*
root sshd 2132 4 tcp4 *:22 *:*
root syslogd 1882 7 udp4 *:514 *:*
Почему сквид слушает порт 312
9, а редирект делаете на 312
8?
maximos
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-13 12:11:13
Код: Выделить всё
pfctl -sr
pass in on msk1 proto tcp from any to (msk1) port = http flags S/SA keep state
pass out on msk1 inet6 from fe80::222:15ff:fe39:9a9c to any flags S/SA keep state
pass on msk0 all flags S/SA keep state
pass out inet from 10.18.71.201 to any flags S/SA keep state
pfctl -sn
nat on msk0 inet from 192.168.111.0/24 to any -> 10.18.71.201
rdr on msk0 inet proto tcp from 192.168.111.0/24 to any port = http -> 127.0.0.1 port 3128
Почему сквид слушает порт 3129, а редирект делаете на 3128?
Вчера уже все что приходило в голову пробовал, извиняюсь поправил.
ReZooR
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-13 12:17:21
На просторах сети нашел такую инфу
как правильно настроить squid 3.2 transparent
надобыло собратиь с префиксом поддержки netfiltr а конфиге сквида в место транспарент указать intercept
Может не париться и откатиться на 2.7 )
ReZooR
-
maximos
- рядовой
- Сообщения: 20
- Зарегистрирован: 2012-12-12 10:40:30
Непрочитанное сообщение
maximos » 2012-12-13 12:23:41
Нат на внутреннем интерфейсе, должен быть на внешнем.
Дайте вывод
pfctl -si
Сейчас прокси тоже на работает?
maximos
-
maximos
- рядовой
- Сообщения: 20
- Зарегистрирован: 2012-12-12 10:40:30
Непрочитанное сообщение
maximos » 2012-12-13 12:26:12
ReZooR писал(а):На просторах сети нашел такую инфу
как правильно настроить squid 3.2 transparent
надобыло собратиь с префиксом поддержки netfiltr а конфиге сквида в место транспарент указать intercept
Может не париться и откатиться на 2.7 )
Вы ищите проблему в сквиде, не решив проблему с фаерволом. Настройте сначала правильно фаервол, потом будете сквид "ломать".
maximos
-
maximos
- рядовой
- Сообщения: 20
- Зарегистрирован: 2012-12-12 10:40:30
maximos
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-13 14:49:56
Спасибо за статейку, а как из портов сквид с этой опцией поставить ?
./configure --with-pthreads
ReZooR
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-14 12:47:46
Обнаружилась такая ошибка, нид хелп.
Код: Выделить всё
pfctl -s state | grep 80
all tcp 127.0.0.1:3128 (192.168.111.201:80) <- 192.168.111.24:52671 CLOSED:SYN_SENT
ReZooR
-
ReZooR
- рядовой
- Сообщения: 28
- Зарегистрирован: 2011-05-23 17:14:39
Непрочитанное сообщение
ReZooR » 2012-12-17 9:52:39
Прошу прощения у всех кому действовал на нервы с нубайскими вопросами (на самом деле не все так плохо), сгорел хард а весь бред написанный выше последнее дыхание погорельца.
ReZooR
-
Abaza
- проходил мимо
Непрочитанное сообщение
Abaza » 2013-06-22 10:54:13
Решение вопроса.
Проверено для связки:
FreeBSD 9.1-RELEASE-p4 amd64+pf as NAT+squid-3.3.5 with pf transparent.
Что нужно сделать.
1. Убедиться что squid собран с опцией --enable-pf-transparent:
Код: Выделить всё
cd /usr/ports/www/squid33/
make config
[x] TP_PF Enable transparent proxying with PF
2. В squid.conf ключевое слово transparent уже не используется (по крайней мере, в версии 3.3.5). Вместо него теперь
intercept:
3. В пакетном фильтре правило редиректа должно идти до правил NAT-а и выглядеть примерно так:
Код: Выделить всё
rdr on $int_if inet proto tcp from <your_local_net> to any port 80 -> 127.0.0.1 port 3128
4. Подсказка, которую взял отсюда: http://ультратонкиеклиенты.рф/in/freebsd/squid/transparent_pf
Необходимо добавить в: /etc/devfs.conf:
Код: Выделить всё
# Allow Squid read acess to /dev/pf
own pf root:squid
perm pf 0640
и сказать
либо просто перезагрузить машину.
5. Наслаждаться жизнью
Abaza