Как правило, флаг "Minimum Delay" устанавливается в пакетах для telnetи ftp-control, а в пакетах ftp-data– "maximum throughput". Делается это следующим образом:
# iptables –A PREROUTING –t mangle –p tcp –sport telnet \
-j TOS –set-tos Minimize-Delay
# iptables –A PREROUTING –t mangle –p tcp –sport ftp \
-j TOS –set-tos Minimize-Delay
# iptables –A PREROUTING –t mangle –p tcp –sport ftp-data \
-j TOS –set-tos Maximize-Throughput
Эти правила прописываются на удаленном хосте и воздействуют на входящие, по отношению к вашему компьютеру, пакеты. Для пакетов, отправляемых в обратном направлении, эти флаги (вроде бы) устанавливаются автоматически. Если это не так, можете на своей системе прописать следующие правила:
# iptables –A OUTPUT –t mangle –p tcp –dport telnet \
-j TOS –set-tos Minimize-Delay
# iptables –A OUTPUT –t mangle –p tcp –dport ftp \
-j TOS –set-tos Minimize-Delay
# iptables –A OUTPUT –t mangle –p tcp –dport ftp-data \
-j TOS –set-tos Maximize-Throughput
15.5. Прозрачное проксирование с помощью netfilter, iproute2, ipchains и squid.
Этот раздел написал Рэм Нарул (Ram Narula), из "Internet for Education" (Таиланд).
Прозрачное проксирование — это обычное перенаправление серверу squidтрафика, отправляемого на порт 80 (web).
Существует 3 общеизвестных способа такого перенаправления:
Шлюз.
Вы можете настроить шлюз таким образом, что он будет перенапрвлять все пакеты, адресованные на порт 80, сереверу squid
НО
Это увеличит нагрузку на шлюз. Кроме того, некоторые коммерческие роутеры не поддерживают такую возможность.
Layer 4 switch
Свичи выполняют такое перенаправление без особых проблем.
НО
Стоимость этого оборудования очень высока и может быть сопоставима с ценой связки "обычный роутер" + "Linux-сервер"
Использовать кэш-сервер в качестве шлюза.
Вы можете отправить ВЕСЬ трафик через кэш-сервер.
НО
Это довольно рисковано, поскольку squidдовольно значительно нагружает CPU, что может привести к снижению производительности сети. Кроме того, squidможет "рухнуть" и тогда никто из сети не сможет выйти в Интернет.
Мы предлагаем 4-й вариант:
Linux+NetFilter.
Эта методика предполагает установку меток на пакеты, с портом назначения равным числу 80, и дальнейшая маршрутизация помеченных пакетов, с помощью iproute2, на squid.
|----------------|
| Реализация |
|----------------|
Используемые адреса
10.0.0.1 naret (NetFilter)
10.0.0.2 silom (Squid)
10.0.0.3 donmuang (Router, соединенный с Интернет)
10.0.0.4 kaosarn (некий сервер в сети)
10.0.0.5 RAS
10.0.0.0/24 main network
10.0.0.0/19 total network
|---------------|
|Структура сети |
|---------------|
Internet
|
donmuang
|
------------hub/switch----------
| | | |
naret silom kaosarn RAS etc.
Прежде всего — весь трафик должен идти через naret , для этого на всех компьютерах пропишем его в качестве шлюза по-умолчанию. Исключение составляет silom , для которого шлюз по-умолчанию — donmuang (в противном случае web-трафик зациклится).
(на всех компьютерах в моей сети был прописан шлюз по-умолчанию – 10.0.0.1, который ранее принадлежал donmuang , поэтому я изменил IP-адрес у donmuang на 10.0.0.3, а серверу naret присвоил адрес 10.0.0.1)
Silom — настройка squid и ipchains
Настройте прокси-сервер squidна silom . Убедитесь, что он поддерживает прозрачное проксирование. Обычно прокси-серверу, для приема запросов от пользователей, назначают порт 3128, поэтому весь трафик, отправляемый на порт 80 будет перенаправлен на порт 3128. С помощью ipchainsэто делают следующие правила:
silom# ipchains –N allow1
silom# ipchains –A allow1 –p TCP –s 10.0.0.0/19 –d 0/0 80 –j REDIRECT 3128
silom# ipchains –I input –j allow1
iptables:
silom# iptables –t nat –A PREROUTING –i eth0 –p tcp –dport 80 –j REDIRECT –to-port 3128
За информацией по настройке сервера squid, обращайтесь на http://squid.nlanr.net/.
Убедитесь, что на этом сервере разрешен форвардинг, и заданный по умолчанию шлюз для него — donmuang (НЕ naret !).
Naret — настройка iptables и iproute2; запрет ICMP-сообщений о перенаправлении (если необходимо)
1. Пометить пакеты, с портом назначения 80, числовой меткой 2.
naret# iptables –A PREROUTING –i eth0 –t mangle –p tcp –dport 80 \
–j MARK –set-mark 2
2. Настроить маршрутизацию так, чтобы помеченные пакеты отправлялись на silom.
naret# echo 202 www.out >> /etc/iproute2/rt_tables
naret# ip rule add fwmark 2 table www.out
Читать дальше