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


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

Автор Тема: Кэширующий прокси на базе ubuntu 12.04, Squid.  (Прочитано 60299 раз)

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

Оффлайн robin777

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Добрый день всем!
Решил в организации развернуть Прокси для раздачи интернета на базе Linuxа, так как старый на винде совсем не тянет.
При установке сконфигурировал LVM, система встала без вопросов.
Для первоначальной настройки и тестов сначала просто воткнул его в свою локальную сеть.
Имеем:
х.х.х.250- Gateway
х.х.х.220- DNS
х.х.х.221- DNS2
Сконфигурировал /etc/network/interfaces следующим образом:
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address х.х.х.252
        netmask 255.255.255.0
        network х.х.х.0
        broadcast х.х.х.255
        gateway х.х.х.250
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers х.х.х.220 х.х.х.221
        dns-search domen.local

# The secondary network interface
auto eth1
iface eth1 inet static
        address 192.168.2.1
        netmask 255.255.255.0
        gateway 192.168.2.1
        #dns-options
        dns-nameservers 192.168.2.1

Выдает ошибку:
root@xxxxx:/home/user# /etc/init.d/networking restart
 * Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces
 * Reconfiguring network interfaces...                                                                                             RTNETLINK answers: File exists
Failed to bring up eth0.
ssh stop/waiting
ssh start/running, process 3106

ok, далее пытаемся тупо сделать пинг с этого сервера в локалке, пинги не проходят. хотя  с любой машины в сети проблемм с этим нет.

Подскажите в какую сторону сомтреть, вроде после настройки только интерфейса eth0 и пинги проходили и обновления встали. Сейчас же не проходят ни то, ни другое. Причина - не резолвит имена.

на всякий случай добавлю вывод route:

root@ProxySrv:/home/arist# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         x.x.x.250   0.0.0.0         UG    0      0        0 eth0
localnet        *               255.255.255.0   U     0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 eth1
« Последнее редактирование: 13 Ноября 2012, 15:00:37 от robin777 »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #1 : 13 Ноября 2012, 15:14:10 »
gateway 192.168.2.1
#dns-options
dns-nameservers 192.168.2.1
Wars ~.o

Оффлайн robin777

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #2 : 13 Ноября 2012, 16:00:00 »
victor00000,
Спасибо!
Сделал del, пинги проходят. Это отлично.

Теперь делаем минимальную настройку squid (который уже стоит):

cache_mem 256 MB
cache_dir ufs /swapsq 12516 16 256

acl LocalNet src 192.168.2.0/24

http_port 192.168.2.1:3128 transparent

http_access allow LocalNet
http_access deny all
Выставил настройки, перезапустил сервис squid.

Теперь необходимо настроить NAT, делал по аналогии с этой ссылкой https://help.ubuntu.ru/wiki/sharing_internet
root@xxxxx:/home/user# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
root@xxxxx:/home/user# route add -net 0.0.0.0 netmask 255.255.255.255 dev eth0
root@xxxxx:/home/user# route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1

Рабочую станцию (ноут), которую использую для тестов, подключил напрямую в сетевую eth1.
Выставил на нем вручную параметры ip:
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.168.2.1

Но это не помогло. Опять же имена не резолвятся, т.е. в этом случае так понимаю уже NAT не работает. Как с этим разобраться?

Таблица route теперь выглядит так:
root@xxxxx:/home/user# route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         *               255.255.255.255 UH    0      0        0 eth0
default         gw.domen.local 0.0.0.0         UG    100    0        0 eth0
localnet        *               255.255.255.0   U     0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 eth1
192.168.2.0     *               255.255.255.0   U     0      0        0 eth1

Пользователь решил продолжить мысль 13 Ноября 2012, 16:25:37:
проверяем работу nat
root@xxxxx:/home/user# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere
вроде так и должно быть, подскажите в какую сторону рыть?
« Последнее редактирование: 14 Ноября 2012, 09:19:59 от robin777 »

Оффлайн basik

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #3 : 13 Ноября 2012, 16:43:37 »
Цитировать
Теперь необходимо настроить NAT, делал по аналогии с этой ссылкой https://help.ubuntu.ru/wiki/sharing_internet

ещё раз пройти по указанной вами ссылке и посмотреть у себя на сервере наличие dnsmasq и net.ipv4.ip_forward=1 в файле /etc/sysctl.conf

хотя для дома имхо удобнее пользоваться штатными средствами Ubuntu. например UFW.

"Лучшим каждому кажется то, к чему он имеет охоту."
                                      (Козьма прутков)

Оффлайн robin777

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #4 : 13 Ноября 2012, 16:59:49 »
ещё раз пройти по указанной вами ссылке и посмотреть у себя на сервере наличие dnsmasq и net.ipv4.ip_forward=1 в файле /etc/sysctl.conf
dnsmasq не ставил так как в локалке есть DNS-сервер. Ipforward включен.

Оффлайн basik

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #5 : 13 Ноября 2012, 17:15:13 »
Цитировать
Рабочую станцию (ноут), которую использую для тестов, подключил напрямую в сетевую eth1.

если подключаться напрямую в сетевую eth1, то как же добраться до dns сервера, который в локальной сети? понимаете в чём суть?
так что либо ноут через свитч, или на сервере один из пакетов bind или dnsmasq.
"Лучшим каждому кажется то, к чему он имеет охоту."
                                      (Козьма прутков)

Оффлайн kobaltd

  • Активист
  • *
  • Сообщений: 273
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #6 : 13 Ноября 2012, 18:03:47 »
Суть очень проста - думать что делаешь, а не бездумно занимать копипастом и немного почитать про сети
Ты данными правалами вообще ЗАКРЫЛ ДОСТУП В ИНЕТ С СЕРВЕРА
root@xxxxx:/home/user# route add -net 0.0.0.0 netmask 255.255.255.255 dev eth0
Данное правило - говорит что все IP не принадлежашие твоей сети (тоеть весь инет ) виден на инретфейсе eth0 и их не надо отправлять на default gateway - данное правило имеет смысл только если используеться КОМУТИРУМОЕ СОЕДИНЕЕ В ИНТЕРНЕТ и то pptpd или l2ptd сами пропишут более коректное правило для себя
root@xxxxx:/home/user# route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1
а данное правило вообще бесмысленно - оно уже у тебя есть

и вообще если не знаешь - делай все по порядку
1) настроить выход в инет с серва - прямой - убедись что работает
2) настроить выход в инет из локалки через нат - убедиться что работает
3) поднять НЕ ПРОЗРАЧНЫЙ прокси - убедиться что работает
4) перевсети прокси в режим прозрачности.




Оффлайн robin777

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #7 : 13 Ноября 2012, 18:39:51 »
kobaltd,
Спасибо, сейчас как раз сидел разбирался с ipconfig'ми. Знаю, что знаний пока не достаточно, поэтому пользовался чужими выкладками. Будем исправлять!

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #8 : 13 Ноября 2012, 20:46:33 »
Ты данными правалами вообще ЗАКРЫЛ ДОСТУП В ИНЕТ С СЕРВЕРА
root@xxxxx:/home/user# route add -net 0.0.0.0 netmask 255.255.255.255 dev eth0
Данное правило - говорит что все IP не принадлежашие твоей сети (тоеть весь инет ) виден на инретфейсе eth0 и их не надо отправлять на default gateway - данное правило имеет смысл только если используеться КОМУТИРУМОЕ СОЕДИНЕЕ В ИНТЕРНЕТ и то pptpd
Я может и не прав, но Вы уверены, что маршруты корректно называть ПРАВИЛАМИ?
Да и Ваша интерпретация маршрута 0.0.0.0 mask 255.255.255.255 dev eth0 в корне неверная. Данный маршрут показывает, что данный интерфейс имеет IP-адреc 0.0.0.0 и никак не связана со всем интерентом. Правда адрес, конечно некорректен.
Хотя то, что такие маршруты принадлежат обычно соединениям ppp вынужден согласиться.
Кроме того на дефолтный маршрут озвученный маршрут никак не влияет

robin777, для исключения влияния DNS на тестирование сети на данном этапе - пингуйте по IP-адресам. Например излюбенные гуглоднсы (8.8.8.8, 8.8.4.4). Кстит их можно временно и вручную на клиенте прописать для полной проверки работы шлюза.
« Последнее редактирование: 13 Ноября 2012, 20:50:45 от fisher74 »

Оффлайн robin777

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #9 : 13 Ноября 2012, 21:00:13 »
fisher74
Хорошо постараюсь учесть Ваше замечание. Я думал, что DNS запросы которые попадают на сервер с squid  транслируются вышестоящему dns-серверру именно самим сквидом. И я до сих, пор думаю, не обязательно устанавливать на прокси-сервере собственный dns-сервер. Хотя, когда искал материал по теме, то большинство администраторов говорят что это ускорит работы самого сервера. Для нормальной обработки dns-запросов достаточно прокинуть 53 порт с указанием вышестоящего сервера. Ан нет..

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #10 : 14 Ноября 2012, 11:47:01 »
Вы опять перевернули с ног на голову.
Squid запрашивает DNS-запросы согласно настройкам системы на которой он работает или с тех, что указаны в настройках.
Но...
Если Вы настраиваете прозрачный прокси, то клиент даже не подозревает о его существовании, потому все запросы на DNS осуществляет сам.
Если же клиента жёстко направить на прокси, то все взаимоотношения с DNS-серверами кладутся на плечи прокси-сервера.

Оффлайн robin777

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Кэширующий прокси на базе ubuntu 12.04, Squid.
« Ответ #11 : 14 Ноября 2012, 11:57:30 »
fisher74,
Я так и сказал, что раньше думал, что так происходит.

Что сегодня. разобрался с iptables http://www.opennet.ru/docs/RUS/iptables/
Сделал три простых правила:
1. Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
2. Временно сделал доступ из наружной сети внутрь
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
3. ну и включаем нат
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

ИТОГ:
1. пинги с ноута проходят на ура (на ноуте выставил в роли DNS 8.8.8.8)
2. браузер (настроен на прокси, с указанием ip:port) выдает ошибку
ERROR The request URL not be retrived
Доступ запрещен

PS1
Небольшое примечание скорее для себя. Выключил сервис сквида, инет на ноуте тут же появился. значит проблема в настройке самого сквида. КЭП  :coolsmiley:
(Нажмите, чтобы показать/скрыть)

PS2
в конфиге сквиад убрал лишнюю трочку http_access deny allоставив только одну в самом конце, на ноуте после настройки браузера на прокси инет появился, значится теперь вэб идет через сквид. Что осталось сделать самого необходимого.
1. Закрыть "лишний" доступ извне на прокси-сервер.
2. Сделать прокси прозрачным. Для этого завернуть входящие подключения по 80 и 8080 портам на сквид.

Пользователь решил продолжить мысль 14 Ноября 2012, 15:33:45:
Переводим прокси в режим прозрачности:
1.root@Proxy:/home/user# iptables -t nat -A PREROUTING -i eth1 -s 192.168.2.0/24 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128
2. в squid.conf меняем на http_port ip:port transparent

Осталось придумать как лучше прописать правила для входящих соединений.

Пользователь решил продолжить мысль 15 Ноября 2012, 10:33:19:
Сегодня создал такой файлик в котором описал все правила для работы сквида и дополнительно проброс порта внутрь.
Кому не сложно проверьте пожалуйста на наличие ошибок. Я понимаю, что сервак на них должен ругать, но сейчас нет возможности это проверить.

#!/bin/sh

# Enable routing
echo 1 > /proc/sys/net/ipv4/ip_forward

# Очищаем таблицы
iptables -F
iptables -X

# Задаем значения по умолчанию
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Досутп к серверу из локальной сети
iptables -A INPUT -s 192.168.2.0/24 -j ACCEPT

# Доступ к серверу из интернета
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#Разрешаем транзит
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -0 eth1 -j ACCEPT

#Для "прозрачности" переводим порты 80 и 8080
iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24 -p udp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

# Поднимаем NAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# Пробрасываем SSH на один у внутренних серверов
iptables -A INPUT -d m.y.i.p:51757
iptables -t nat -A PREROUTING -i eth0 --dport 51757 -j DNAT --to-destinarion 192.168.2.201:22

exit 0
« Последнее редактирование: 15 Ноября 2012, 10:46:24 от robin777 »

 

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