Перейти к содержанию

Заворачивание http-трафика Iptables->squid


slaven

Рекомендуемые сообщения

Добрый день...

поставили передо мной такую банальную задачу организации интернета:

1. любые приложения не ходящие по http должны коннектица прозрачно(без маппинга портов и соксификации через прокси)

2. рулить доступом пользователей http, и считать трафик по каждому

В распоряжении имелось:

1. ADLS-интернет

2. локальная сеть

3. интернет-маршрутизатор на базе AltLinux 4 Desctop с 2мя сетевыми интерфейсами

eth0 - в ADSL, и eth1 - в сеть

Решил сделать так:

для прозрачного доступа пользователей в интернет NATить адреса в IPTables, и поднять PPPoE для коннекта пользователей. Для контролирования HTTP - заворачивать в IPTables запросы с 80 порта на прозрачный прокси-сервер Squid.

Поднял NAT+PPPoE, поднял squid...по отдельности все работает, но как только я делаю squid прозрачным и заворачиваю запросы с 80 порта на squid - http работать отказывается...

скрипт для Iptables

-------------------------------------

#!/bin/sh

function get_addr()

{

IFCONFIG='/sbin/ifconfig';

HEAD='head -2';

TAIL='tail -1';

CUT='cut -d: -f2';

IP=`$IFCONFIG $1 | $HEAD | $TAIL | awk '{print $2}' | $CUT`;

echo $IP;

}

### Внешний интерфейс

EXTDEV="eth0"

### внутренний интерфейс

PPPOEDEV="eth1"

### сеть для PPPOE клиентов.

INETWORKIP="192.168.100.0/255.255.255.0"

EXTERNALIP=`get_addr $EXTDEV`

ENETWORKIP=$EXTERNALIP+"/255.255.255.255"

INTERNALIP=`get_addr $INTDEV`

LOOPBACK="127.0.0.1"

ANYWHERE="0.0.0.0/0"

PORTS="1024:65535"

INTDEV="ppp+"

/sbin/depmod -a

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_tables

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_nat

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_limit

/sbin/modprobe ipt_MASQUERADE

/sbin/modprobe ipt_owner

/sbin/modprobe ipt_REJECT

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_nat_irc

echo 1 > /proc/sys/net/ipv4/ip_forward

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

for file in /proc/sys/net/ipv4/conf/*/rp_filter; do

echo 1 > $file

done

for file in /proc/sys/net/ipv4/conf/*/accept_redirects; do

echo 0 > $file

done

for file in /proc/sys/net/ipv4/conf/*/accept_source_route; do

echo 0 > $file

done

/sbin/iptables -F

/sbin/iptables -F -t nat

/sbin/iptables -N ALLOW_ICMP

/sbin/iptables -N ALLOW_PORTS

/sbin/iptables -N CHECK_FLAGS

/sbin/iptables -N DENY_PORTS

/sbin/iptables -N DST_EGRESS

/sbin/iptables -N KEEP_STATE

/sbin/iptables -N SRC_EGRESS

# По умолчанию все входящие пакеты сбрасываем

/sbin/iptables -P INPUT DROP

/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

/sbin/iptables -A INPUT -j ACCEPT -s $EXTERNALIP -d $ANYWHERE

/sbin/iptables -A INPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -i $INTDEV

/sbin/iptables -A INPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -i lo

/sbin/iptables -A INPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -i $EXTDEV -m state --state RELATED,ESTABLISHED

/sbin/iptables -A INPUT -j ACCEPT -p icmp -s $ANYWHERE -d $ANYWHERE

/sbin/iptables -A INPUT -j ACCEPT -p udp -s $INETWORKIP --sport 53 -d $ANYWHERE

# По умолчанию все исходящие пакеты сбрасываем

/sbin/iptables -P OUTPUT DROP

/sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -o $INTDEV

/sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $EXTERNALIP

/sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -o lo

/sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -o $EXTDEV -m state --state RELATED,ESTABLISHED

/sbin/iptables -A OUTPUT -j ACCEPT -p udp -s $EXTERNALIP -d $ANYWHERE --dport 53

/sbin/iptables -A OUTPUT -j ACCEPT -p icmp -s $ANYWHERE -d $ANYWHERE

/sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -o $EXTDEV -m state --state RELATED,ESTABLISHED

/sbin/iptables -P FORWARD ACCEPT

/sbin/iptables -A FORWARD -j ACCEPT -s $ANYWHERE -d $ANYWHERE -i $INTDEV

/sbin/iptables -A FORWARD -j ACCEPT -p icmp -s $ANYWHERE -d $ANYWHERE -i $INTDEV

### редирект HTTP запросов на прокси сервер Squid.

/sbin/iptables -t nat -A PREROUTING -i $INTDEV -p tcp --dport 80 -j REDIRECT --to-port 3128

## Маскарадинг клиентов

/sbin/iptables -t nat -A POSTROUTING -j SNAT -s $INETWORKIP -d $ANYWHERE -o $EXTDEV --to $EXTERNALIP

/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE -s $INETWORKIP -d $ANYWHERE -o $EXTDEV

## Запуск PPPOE-SERVER

killall -w -9 pppoe-server

/usr/sbin/pppoe-server -I $PPPOEDEV -L $INTERNALIP

-----------------------------------------

squid.conf

---------------------------

http_port 3128 transparent

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?

no_cache deny QUERY

cache_mem 20 MB

maximum_object_size 16192 KB

cache_dir ufs /home/slaven/squid/cache 1000 16 256

emulate_httpd_log on

access_log /home/slaven/squid/logs/access.log squid

cache_log /dev/null

cache_store_log none

acl office src 192.168.100.0/255.255.255.0

acl all src 0.0.0.0/0.0.0.0

acl localhost src 127.0.0.1/255.255.255.255

acl CONNECT method CONNECT

http_access deny all !office

icp_access allow all

---------------------------

Браузер по таймауту говорит, что невозможно отобразить страницу.

а access.log сквидовский ловит подобное:

-----------------------------------------

1198840773.503 179912 192.168.100.1 TCP_MISS/504 1461 GET http://www.google.ru/complete/search? - DIRECT/216.239.59.104 text/html

------------------------------------------

Если делаю squid непрозрачным, то он валит в браузер сообщение о неправильно переданном запросе, и аналогичную запись делает в access.log.

На момент написания поста перерыл просторы инета в поисках решения, но поа безрезультатно. Буду признателен за любую помощь

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...