Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Роутинг по хостам  (Прочитано 6437 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 2Casp

  • Новичок
  • *
  • Сообщений: 46
  • GNU/Linux
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #60 : 20 Марта 2015, 17:26:03 »
Можно скрывать лишь внешний ip. Внутренние при приведении схемы сети все равно ни кого не интересуют. В итоге и сами запутались, и нас уже запутали, давая разные данные. И получаем, операция, которая занимает в настройке два-три часа колдуется уже третьи сутки :)
Цена тебе - твое слово.

Оффлайн Vady

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #61 : 20 Марта 2015, 18:04:29 »
клиенту в такой схеме будет тяжело организовать прозрачный прокси. Я, лично даже с ходу не могу боевой вариант предложить.

Перенесите клиента на eth0 с предполагаемой там адресацией (10.0.0.0/24) и тестируйте в том виде, в котором будет эксплуатироваться. Иначе кажущиеся удачи могут стать большой проблемой.
Еще раз:
Схема такова:
шлюз интернета 192.168.1.255 (хорошо, пусть будет 192.168.1.3, если сильно принципиально)
  |        |
  |    клиент на 192.168.1.2
сервер (прокси-сервер) 192.168.1.1 на eth0
тот же сервер (прокси-сервер) 10.0.0.1 на p7p1
  |
Клиенты на 10.0.0.0/24
Всё, что на p7p1 - выкидываем из обсуждения, чтобы упростить разговор. Итог:
шлюз интернета 192.168.1.3
  |        |
  |    клиент на 192.168.1.2
сервер (прокси-сервер) 192.168.1.1 на eth0

Зачем обсуждать про eth0 и p7p1, если клиенты успешно заходят? Мне от Вас нужно только ОДНО - с прокси-сервера заходить через собственный прокси, а именно интерфейс lo.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13763
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #62 : 20 Марта 2015, 19:45:52 »
Зачем обсуждать про eth0 и p7p1, если клиенты успешно заходят? Мне от Вас нужно только ОДНО - с прокси-сервера заходить через собственный прокси, а именно интерфейс lo.
Вам уже ответили: добавляйте в acl локалхост, проверяйте, затем решайте вопрос принудительного использования прокси
« Последнее редактирование: 20 Марта 2015, 19:48:04 от fisher74 »

Оффлайн Vady

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #63 : 20 Марта 2015, 19:51:56 »
Зачем обсуждать про eth0 и p7p1, если клиенты успешно заходят? Мне от Вас нужно только ОДНО - с прокси-сервера заходить через собственный прокси, а именно интерфейс lo.
Вам уже ответили: добавляйте в acl локалхост, проверяйте, затем решайте вопрос принудительного использования прокси
Уже писал:
Цитировать
Как это реализовать? пробовал следующие варианты:
acl local src 127.0.0.0/8
потом менял на
acl local src 127.0.0.1
затем:
acl local src localhost
Ни один из вышеприведенных не помог.
Разумеется, про строчку http_access allow local не забыл.
http_port по-прежнему стоит 192.168.1.1:3128 transparent

Пользователь решил продолжить мысль 20 Марта 2015, 20:03:55:
А в логе squid вижу, что заблокировали вход с 192.168.1.1 (не локалхост, и не 127.*), зато с 192.168.1.2 свободно ходят.
acl myhost src 192.168.1.1
acl mynet src 192.168.1.0/24

http_access allow myhost
http_access allow mynet
acl myhost src 192.168.1.1 и http_access allow myhost - лишние строчки?
« Последнее редактирование: 20 Марта 2015, 20:03:55 от Vady »

Оффлайн 2Casp

  • Новичок
  • *
  • Сообщений: 46
  • GNU/Linux
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #64 : 20 Марта 2015, 21:25:50 »
Покажи diff твоего конф файла и оригинала.
Цена тебе - твое слово.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13763
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #65 : 20 Марта 2015, 23:38:09 »
зачем diff?
Надо смотреть сам конфиг
grep -v "^#\|^$" /etc/squid*/squid.conf

Оффлайн Vady

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #66 : 20 Марта 2015, 23:42:18 »
зачем diff?
Надо смотреть сам конфиг
grep -v "^#\|^$" /etc/squid*/squid.conf
Конфиг весит больше 250кб. Оригинал изобилован комментариями. Выложу в понедельник.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13763
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #67 : 21 Марта 2015, 10:25:58 »
Если выложите результаты команды, которую я дал, то конфиг уменьшиться в разы. При этом не потеряв информативности. И его можно будет спокойно скопипастить под спойлер. Поверьте.

Оффлайн Vady

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #68 : 24 Марта 2015, 09:20:34 »
root@TERMINALSERVER:/var/log/squid3# grep -v "^#\|^$" /etc/squid*/squid.conf.orig
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 deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern . 0 20% 4320
Вопрос: что делают в оригинальном конфиг-файле следующие строчки, если к ним нет acl-правил?
http_access allow localhost manager
http_access deny manager
http_access allow localhost
Их можно убрать?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13763
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #69 : 24 Марта 2015, 11:31:19 »
Вот уж не знаю, почему их у Вас нет в оригинальном. У меня везде так
ВНИМАНИЕ на каммент
~$ grep "acl manager" -B1 -A2 /etc/squid3/squid.conf
#Recommended minimum configuration:
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32


Оффлайн Vady

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #70 : 24 Марта 2015, 12:55:04 »
Привел конфиг к такому виду:
root@TERMINALSERVER:/home/vady# grep -v "^#\|^$" /etc/squid*/squid.conf
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 deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
http_access allow localhost manager
http_access deny manager
http_access allow localhost
acl media   urlpath_regex -i \.mp3$ \.asf$ \.wma \.flv$
acl whiteList dstdomain .vk.com .yandex.ru .yandex.net .yastatic.net .squid-cache.org .ok.ru .mycdn.me .vkontakte.ru
acl mynet src 192.168.1.0/24
http_access allow mynet
http_access deny mynet media
http_access deny all
http_port 3128 transparent
 cache_mem 1024 MB
 maximum_object_size_in_memory 512 KB
cache_dir ufs /var/spool/squid3 2048 16 256
 maximum_object_size 4 MB
 access_log daemon:/var/log/squid3/access.log squid
logfile_rotate 31
coredump_dir /var/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern . 0 20% 4320
после рестарта кальмара получаю следующее:
root@TERMINALSERVER:/var/log/squid3# squid3 -NCd1
2015/03/24 12:40:08| aclParseAclLine: ACL 'manager' already exists with different type.
FATAL: Bungled /etc/squid3/squid.conf line 1040: acl manager proto cache_object
Squid Cache (Version 3.3.8): Terminated abnormally.
CPU Usage: 0.015 seconds = 0.015 user + 0.000 sys
Maximum Resident Size: 21472 KB
Page faults with physical i/o: 0
судя по ответу, правило manager повторяется дважды, но в конфиге не вижу дубликата. Предустановленный в систему? Строчку убрать? Аналогичную проблему встретил в ветке: https://forum.ubuntu.ru/index.php?topic=243300.0 - ответа нет.
Из http://www.squid-cache.org/mail-archive/squid-users/201109/0340.html цитирую:
Just remove
acl localhost src 127.0.0.1/8 0.0.0.0/32
and
acl manager proto cache_object
And squid should start
Это как понимать? Убрать Ваше предложение:
#Recommended minimum configuration:
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
и строчки:
http_access allow localhost manager
http_access deny manager
http_access allow localhost
?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13763
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #71 : 24 Марта 2015, 13:54:24 »
по поводу встроенности не могу сказать. У меня версия кальмара 3.0, у Вас 3.3.8. Возможно сделали встроенным.
Но на localhost ведь не ругается

Оффлайн Vady

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #72 : 25 Марта 2015, 15:37:30 »
(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль [time]25 Март 2015, 14:38:44[/time]:
Проблему с локальным входом в кальмар уже решил немного. Для этого:
root@TERMINALSERVER:/home/vady# grep -v "^#\|^$" /etc/squid*/squid.conf
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
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 deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl media   urlpath_regex -i \.mp3$ \.asf$ \.wma \.flv$
acl whiteList dstdomain .vk.com .yandex.ru .yandex.net .yastatic.net .squid-cache.org .ok.ru .mycdn.me .vkontakte.ru
http_access allow localnet whiteList
http_access allow localhost whiteList
http_access deny localnet media
http_access deny localhost media
http_access deny all
http_port 192.168.1.1:3128 intercept
http_port 10.0.0.1:3128 intercept
http_port 127.0.0.1:3128
 cache_mem 1024 MB
 maximum_object_size_in_memory 512 KB
cache_dir ufs /var/tmp/spool/squid3 2048 16 256
 maximum_object_size 4 MB
 access_log daemon:/var/log/squid3/access.log squid
logfile_rotate 31
coredump_dir /var/tmp/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern . 0 20% 4320
Ярлык браузера:
chromium-browser --proxy-server=127.0.0.1:3128Дело в параметре intercept, который не позволил входить через локальный прокси. Поэтому я сменил в ярлыке ip с 192.168.1.1 на 127.0.0.1 и добавил еще одно правило http_port - для локального без intercept:
http_port 192.168.1.1:3128 intercept
http_port 127.0.0.1:3128
Недостаток у этого подхода в том, что любому пользователю достаточно убрать  --proxy-server=127.0.0.1:3128, тогда можно получить неограниченный интернет.
Еще команда apt-get update выдает ошибку 403.
По логам вижу, что apt-get пытается зайти через 192.168.1.1, который на intercept.
Конфиг iptables:
root@TERMINALSERVER:/home/vady# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 74 packets, 6091 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eth0   *       192.168.1.1          0.0.0.0/0            multiport dports 80,8080 to:127.0.0.1:3128
    1    48 DNAT       tcp  --  eth0   *       192.168.1.0/24       0.0.0.0/0            multiport dports 80,8080 to:192.168.1.1:3128
    0     0 DNAT       tcp  --  p7p1   *       10.0.0.0/24          0.0.0.0/0            multiport dports 80,8080 to:10.0.0.1:3128
    0     0 REDIRECT   tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 3128

Chain INPUT (policy ACCEPT 1 packets, 48 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 139 packets, 8998 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 36 packets, 2154 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  120  7914 MASQUERADE  all  --  *      eth0    192.168.1.0/24        0.0.0.0/0           
В начале правила прописал перенаправление с ip прокси сервера на локальный ip
Потом - со всех подсетей на ip прокси.
Но это для локального хоста не срабатывает. С подсети 192.* нормально ходим через кальмар (имею ввиду с клиентских компьютеров).
С подсети 10.* что-то не очень хорошо - если набрать ip-адрес, который находится за корпоративным шлюзом, то вижу, что доступ запрещен, а если набрать yandex.ru или ip-адрес яндекса, что за шлюзом интернета, то нет никакого ответа. Смотрю лог кальмара. Вижу ошибку 403 на адрес интрасети (условно говоря, 172.1.1.1) с клиента 10.0.0.2, а про попытки подключения к яндексу с 10.0.0.2 ни слова. Почему они "мимо кассы", если шлюз по умолчанию у клиента - 10.0.0.1?

Пользователь решил продолжить мысль [time]26 Март 2015, 14:37:44[/time]:
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface

auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.3

auto p7p1
iface p7p1 inet static
address 10.0.0.1
netmask 255.255.255.0
up route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.0.0.254 p7p1
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.0.0.254 p7p1

post-up /etc/nat

Иллюстрированная схема во вложении.
« Последнее редактирование: 26 Марта 2015, 13:38:36 от Vady »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13763
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #73 : 26 Марта 2015, 13:53:56 »
sudo iptables -t nat -A OUTPUT -o p7p1 -p tcp --dport 80 ! -uid-owner $ID_PROXY -j REDIRECT --to-ports 3128

Оффлайн Vady

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
    • Просмотр профиля
Re: Роутинг по хостам
« Ответ #74 : 26 Марта 2015, 13:54:37 »
Прописал системные настройки прокси в /etc/environment
http_proxy="http://127.0.0.1:3128/"
https_proxy="https://127.0.0.1:3128/"
ftp_proxy="ftp://127.0.0.1:3128/"
Перезагрузил компьютер, после браузер со стандартными настройками попадал только на разрешенные сайты.
Проверил apt-get update - пустил только по "белому списку сайтов", остальные выдал 403.
Еще одна проблема решена!

Пользователь решил продолжить мысль [time]26 Март 2015, 15:04:29[/time]:
sudo iptables -t nat -A OUTPUT -o p7p1 -p tcp --dport 80 ! -uid-owner $ID_PROXY -j REDIRECT --to-ports 3128
id proxy
uid=13(proxy) gid=13(proxy) группы=13(proxy)
То есть, прописывать нужно так:
sudo iptables -t nat -A OUTPUT -o p7p1 -p tcp --dport 80 ! -uid-owner 13 -j REDIRECT --to-ports 3128Правильный $ID_PROXY определил?

Еще вот что:
root@TERMINALSERVER:/home/vady# iptables -t nat -A OUTPUT -o p7p1 -p tcp --dport 80 ! -uid-owner 13 -j REDIRECT --to-ports 3128
iptables v1.4.21: unknown option ""
Try `iptables -h' or 'iptables --help' for more information.
где эти "кавычки"?

Пользователь решил продолжить мысль 26 Марта 2015, 14:10:17:
root@TERMINALSERVER:/home/vady# iptables -h
iptables v1.4.21

Usage: iptables -[ACD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)

Commands:
Either long or short options are allowed.
  --append  -A chain Append to chain
  --check   -C chain Check for the existence of a rule
  --delete  -D chain Delete matching rule from chain
  --delete  -D chain rulenum
Delete rule rulenum (1 = first) from chain
  --insert  -I chain [rulenum]
Insert in chain as rulenum (default 1=first)
  --replace -R chain rulenum
Replace rule rulenum (1 = first) in chain
  --list    -L [chain [rulenum]]
List the rules in a chain or all chains
  --list-rules -S [chain [rulenum]]
Print the rules in a chain or all chains
  --flush   -F [chain] Delete all rules in  chain or all chains
  --zero    -Z [chain [rulenum]]
Zero counters in chain or all chains
  --new     -N chain Create a new user-defined chain
  --delete-chain
            -X [chain] Delete a user-defined chain
  --policy  -P chain target
Change policy on chain to target
  --rename-chain
            -E old-chain new-chain
Change chain name, (moving any references)
Options:
    --ipv4 -4 Nothing (line is ignored by ip6tables-restore)
    --ipv6 -6 Error (line is ignored by iptables-restore)
[!] --protocol -p proto protocol: by number or name, eg. `tcp'
[!] --source -s address[/mask][...]
source specification
[!] --destination -d address[/mask][...]
destination specification
[!] --in-interface -i input name[+]
network interface name ([+] for wildcard)
 --jump -j target
target for rule (may load target extension)
  --goto      -g chain
                              jump to chain with no return
  --match -m match
extended match (may load extension)
  --numeric -n numeric output of addresses and ports
[!] --out-interface -o output name[+]
network interface name ([+] for wildcard)
  --table -t table table to manipulate (default: `filter')
  --verbose -v verbose mode
  --wait -w wait for the xtables lock
  --line-numbers print line numbers when listing
  --exact -x expand numbers (display exact values)
[!] --fragment -f match second or further fragments only
  --modprobe=<command> try to insert modules using this command
  --set-counters PKTS BYTES set the counter during insert/append
[!] --version -V print package version.
что-то -uid-owner не вижу
« Последнее редактирование: 26 Марта 2015, 14:10:17 от Vady »

 

Страница сгенерирована за 0.036 секунд. Запросов: 25.