Перейти до

squid+nat


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

Привіт.

 

Раніше всіх пускав через сквід (бо обмежував по швидкості деяких юзерів). Працював непогано, але одна проблема - сквід дає тільки веб серфінг, тобто всякі донкі, емуле, thebat не працюють.

 

Потім підняв нат, все почало працювати (emule, thebat....). Але знов проблема - коли юзери забирають настройки проксі сервера, то вони валять на всій швидкості.

 

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

 

Підкажіть як обєднати нат і сквід.

 

Дякую.

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

Вот пример

IP сервера 192,168,0,1

Реальный IP от провайдера 202.45.23.78

IP- юзера 192,168,0,2

тогда для коннекта юзера нужен такой скрипт

iptables -A FORWARD -s 192,168,0,2 -j ACCEPT

iptables -A FORWARD -d 192,168,0,2 -j ACCEPT

iptables -t nat -I POSTROUTING 1 -s 192,168,0,2 -j SNAT --to-source 202,45,23,78

iptables -t nat -I INPUT 1 -s 192,168,0,2 -d ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192,168,0,1:3128

 

для дисконнекта

iptables -D FORWARD -s 192,168,0,2 -j ACCEPT

iptables -D FORWARD -d 192,168,0,2 -j ACCEPT

iptables -t nat -D POSTROUTING 1 -s 192,168,0,2 -j SNAT --to-source 202,45,23,78

iptables -t nat -D INPUT 1 -s 192,168,0,2 -d ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192,168,0,1:3128

 

но в фаерволе нужно прописать

iptables -F

iptables -t nat -F

iptables -t mangle -F

 

iptables -P FORWARD DROP

iptables -t mangle -A PREROUTING -d 192.168.0.1 -p tcp --dport 3128 -j DROP

/sbin/iptables -F; iptables -t nat -F; iptables -t mangle -F

/sbin/iptables -t filter -P FORWARD DROP

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

тогда для коннекта юзера нужен такой скрипт

iptables -A FORWARD -s 192,168,0,2 -j ACCEPT

iptables -A FORWARD -d 192,168,0,2 -j ACCEPT

iptables -t nat -I POSTROUTING 1 -s 192,168,0,2 -j SNAT --to-source 202,45,23,78

iptables -t nat -I INPUT 1 -s 192,168,0,2 -d ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192,168,0,1:3128

В таблиці NAT нема chain INPUT.

Там тільки PREROUTING, OUTPUT, POSTROUTING.

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

тогда для коннекта юзера нужен такой скрипт

iptables -A FORWARD -s 192,168,0,2 -j ACCEPT

iptables -A FORWARD -d 192,168,0,2 -j ACCEPT

iptables -t nat -I POSTROUTING 1 -s 192,168,0,2 -j SNAT --to-source 202,45,23,78

iptables -t nat -I INPUT 1 -s 192,168,0,2 -d ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192,168,0,1:3128

В таблиці NAT нема chain INPUT.

Там тільки PREROUTING, OUTPUT, POSTROUTING.

Пакеты идут через шлюз двумя путями

1- через цепочку FORWARD - ТРАНЗИТНЫЕ

2- через локальные приложения в том числе и Squid цепочка INPUT

т.е. для того чтобы обединить NAT и Squid нужно учитывать что трафик будет протекать по двум ветвям по одной - это FORWARD по другой это INPUT - входящие пакеты в Squid. если написать так

iptables -t nat -I PREROUTING 1 -s 192,168,0,2 -d ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192,168,0,1:3128

ТО ВЫЛАЗИТ СТРАННЫЙ ГЛЮК - при выполнение дисконнекта остаются незавершенные связи с чем я уже сталкивался. Например идет закачка с помощью FlashGat, выполняется дисконнект но закачка продолжается. на сайт вылезтия нельзя аска не работает, но FlashGat, еслия не обрывается связь докачивает файл до конца или до первого обрыва. поэтому лучше использовать

iptables -t nat -I INPUT 1 -s 192,168,0,2 -d ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192,168,0,1:3128

что сразу же перестает пускать пакеты с Squid.

см доку. http://www.opennet.ru/docs/RUS/iptables/index.html

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

/etc/rc.conf

====

firewall_enable="YES"

firewall_logging="YES"

firewall_quiet="YES"

firewall_script="/usr/local/etc/ipfw/ipfw.conf"

natd_enable="YES"

natd_flags="-f /usr/local/etc/natd.conf -a <внешний ip адрес> -p 8668"

====

/usr/local/etc/natd.conf

====

use_sockets yes

same_ports yes

====

/usr/local/etc/ipfw/ipfw.conf

====

#!/bin/sh

# Firewall rulese

fwcmd="/sbin/ipfw"

$fwcmd -f flush

 

$fwcmd add 100 divert 8668 ip from 192.168.222.0/24 to any via <внешний ip адрес>

$fwcmd add 200 divert 8668 ip from 192.168.227.0/24 to any via <внешний ip адрес>

$fwcmd add 210 divert 8668 ip from 172.16.16.0/24 to any via <внешний ip адрес>

$fwcmd add 300 divert 8668 ip from any to <внешний ip адрес> in recv <внешний ip адрес>

 

дальше правила по вкусу

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

забыл про сквид

вот для сквида

$fwcmd add fwd <ip адрес squid>,3128 tcp from 192.168.222.0/24 to any 80 recv rl0 in

$fwcmd add fwd <ip адрес squid>,3128 tcp from 192.168.225.0/24 to any 80 recv ed0 in

$fwcmd add fwd <ip адрес squid>,2121 tcp from 192.168.222.0/24 to any 21 recv rl0 in

$fwcmd add fwd <ip адрес squid>,2121 tcp from 192.168.225.0/24 to any 21 recv ed0 in

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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...