LINUX.ORG.RU
решено ФорумAdmin

squid + ipтаблица

 , ,


0

2

Доброе времени суток. Помогите разобраться в моей загвоздке. Решил стать «добрым-малым» и решил дать сети чюток и-нета. С вчерашнего утра начал изучать squid+iptables, до этого понятия не имел что это за звери, и вроде настроил всё с помощью мана, гугла и форумов, но есть некоторое «НО», кое-что не устраивает и на энтое не надыбал ответа. Есть Lin-машина на которой 2 сетевые (eth0[192.168.1.249] и eth1[192.168.0.249]). eth0 смотрит в и-нет, eth1 смотрит на сеть через wifi роутер к которому подключается через wifi Ноут и Дроид телефон + некоя сеть с 10-ти M$ машин. Наглядно: (Droid и Книга по wifi) (Сеть через шнурок) <=> Роутер <=> eth1 squid+iptables eth0 <=> I-Net. Squid3 конфиг (собирал по частям):

http_port 8080 transparent dns_nameservers 192.168.11.1 192.168.10.1 visible_hostname proxy hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 32 MB negative_ttl 1 seconds access_log /var/log/squid3/access.log error_directory /usr/share/squid3/errors/Russian-koi8-r acl user src «/etc/squid3/acl/user» #простой народ acl premium src «/etc/squid3/acl/premium» #больше скорости delay_pools 2 delay_class 1 1 delay_parameters 1 -1/-1 delay_access 1 allow premium delay_access 1 deny all delay_class 2 2 delay_parameters 2 -1/-1 20000/32000 delay_access 2 allow user delay_access 2 deny all http_access allow user http_access allow premium acl FTP proto FTP acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 5190 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 1025-65535 acl CONNECT method CONNECT always_direct allow FTP always_direct allow SSL_Ports http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access allow CONNECT !SSL_ports http_access allow localhost http_access deny all

Делее таблицы: (подозреваю что все кроется тут) #================================================ iptables -F iptables -t nat -F iptables -t nat -A PREROUTING -s 192.168.0.249 -p tcp --dport 80 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.249:8080 iptables -t nat -A POSTROUTING -j MASQUERADE

Пингую с M$-Ноута 4.2.2.2 — нет пинга + открывается 2-4 сайта (Википедия, и Лор не открывается тож. С Рамблером и с Гуглом нет проблем, но с тормозом) :(

Пишу в /etc/sysctl.conf следующее: net.ipv4.ip_forward=1

Получаю пинг, но из сайтов большинство не открывается (в том числе и выше перечисленные, появляется скорость ко всем сайтам без тормозом) :(

На ноуте лезу Пуск→Панель управления→ Свойства обозревателя, и в вкладке «Подключения» в «Настройке сети» указываю свой прокси 192.168.0.249 c портом 8080.

Всё работает чудесно, но меня это не удовлетворяет.

Как можно это обойти. Подозреваю что ип-таблицы, но тут я слабо (прошу злостно не ругаться в ответах).



Последнее исправление: maxcom (всего исправлений: 1)

Прочитай вот это, а то в нынешней простыне ничего неясно.

shell-script ★★★★★
()

Зачем ты делаешь это:

На ноуте лезу Пуск→Панель управления→ Свойства обозревателя, и в вкладке «Подключения» в «Настройке сети» указываю свой прокси 192.168.0.249 c портом 8080.

если у тебя в конфиге первой же строчкой стоит:

http_port 8080 transparent
PS: Простыня знатная вышла, почитай тут о разметке, т.к. боюсь что вопрос в том виде, что он сейчас - никто не будет даже читать.

BOOBLIK ★★★★
()

указываю свой прокси 192.168.0.249 c портом 8080.
Всё работает чудесно, но меня это не удовлетворяет.

А как остальные машины в сети 192.168.0.0/24 узнают, что .249 - это шлюз?

anonymous
()

Так же мне не понятно, что вы пытаетесь сделать тут:

iptables -F iptables -t nat -F iptables -t nat -A PREROUTING -s 192.168.0.249 -p tcp --dport 80 -j ACCEPT

Давайте уж весь свой iptables -L, squid.conf, и cat /proc/sys/net/ipv4/ip_forward

BOOBLIK ★★★★
()
Ответ на: комментарий от uspen

С разметкой лажанулся, виноват. Давно не посещал ЛОР, и про правила не был в курсе. Сорь.
Начну с нуля:
Squid:
==================
http_port 8080 transparent
dns_nameservers 192.168.11.1 192.168.10.1
visible_hostname proxy
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 32 MB
negative_ttl 1 seconds
access_log /var/log/squid3/access.log
error_directory /usr/share/squid3/errors/Russian-koi8-r

acl user src «/etc/squid3/acl/user»
acl premium src «/etc/squid3/acl/premium»
delay_pools 2

delay_class 1 1
delay_parameters 1 -1/-1
delay_access 1 allow premium
delay_access 1 deny all

delay_class 2 2
delay_parameters 2 -1/-1 20000/32000
delay_access 2 allow user
delay_access 2 deny all

http_access allow user
http_access allow premium
acl FTP proto FTP
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 5190
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 1025-65535
acl CONNECT method CONNECT
always_direct allow FTP
always_direct allow SSL_Ports

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access allow CONNECT !SSL_ports
http_access allow localhost
http_access deny all

ipтаблица в «/etc/rc.local»
==============================================================
iptables -F
iptables -t nat -F
iptables -t nat -A PREROUTING -s 192.168.0.249 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination
192.168.0.249:8080
iptables -t nat -A POSTROUTING -j MASQUERADE

если у тебя в конфиге первой же строчкой стоит: .....

Простой сайт допустим kernel.org не открывается без этого. Вот Вас и хочу спросить в чем проблема. Толи конфиг кривой, толь squid не пашет толком, толь руки у меня из ...

А как остальные машины в сети 192.168.0.0/24 узнают, что .249 - это шлюз?

Простите, все раздаю через DHCP.

Давайте уж весь свой iptables -L, squid.conf, и cat /proc/sys/net/ipv4/ip_forward

dark:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
dark:~#

dark:~# cat /proc/sys/net/ipv4/ip_forward]
1
dark:~#

shamcor
() автор топика
Ответ на: комментарий от shamcor

Простой сайт допустим kernel.org не открывается без этого.

Сделай в этот момент tail -f -n 100 /var/log/squid3/access.log

BOOBLIK ★★★★
()
Ответ на: комментарий от shamcor

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.249:8080

Вот тут надо указать, с какого интерфейса пакеты натиться должны, а то путаница быть может. И лучше для этого правила не не DNAT, а REDIRECT использовать.

Ну и как уже правильно заметили, что в логах сквида?

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Почти закрываю эту тему. Вернулся пересмотреть конфиги и оказалось что с dhcp накосячил не мало - dns сервер не верно указал, вот и не открывалось. Всем спасибо за советы! Но хотелось бы ещё узнать: если в iptables заворачивать обращения на прокси, то собственный веб сервер, как я понял, тоже будет через проксю? :( И можно ли свой веб сервер вынуть из прокси, веть PREROUTING с самого начала цепей.

shamcor
() автор топика
Ответ на: комментарий от shamcor

А, всё. -d ! 192.168.0.249 помог. Всем спасибо!!

shamcor
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.