LINUX.ORG.RU

Сообщения Mirraz

 

Проблема с шейпером HTB в Centos 6

Пытаюсь настроить шейперы в Centos 6.9.

Есть отдельно шлюз, сервер и клиент. Клиент качает с сервера через шлюз, и подключен к интерфейсу eth0.

На шлюзе такие настройки:

dev=eth0
tc qdisc add dev $dev root handle 1: htb
tc class add dev $dev parent 1: classid 1:1 htb rate 500Mbit
tc class add dev $dev parent 1:1 classid 1:10 htb rate 64kbit ceil 64kbit
tc qdisc add dev $dev parent 1:10 handle 100: sfq perturb 10
tc filter add dev $dev protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.100.101 flowid 1:10

Начинаю качать файл с сервера на клиент 192.168.100.101. Через некоторое время останавливаю закачку на 192.168.100.101, переподключаюсь и начинаю новую закачку файла. Закачка файла начинается только спустя около 10 секунд.

Как я понял, на шлюзе (с шейпером HTB) есть некий буфер, он в процессе работы наполняется, а когда клиент закрывает соединение, весь трафик от сервера, накопленный в этом буфере, продолжает понемногу (согласно rate) идти клиенту, вместо того чтобы сразу сбросить этот буфер. Причём похоже, что размер буфера одинаковый для всех rate. Это ожидаемое поведение HTB? При переподключении же пакет SYN-ACK от сервера не может пробиться к клиенту через этот мусорный трафик. Но если применить SFQ, который перемешивает пакеты от разных потоков, эффект «затыка» немного нивелируется (без SFQ ждать приходится несколько минут).

Нашёл https://serverfault.com/questions/629838/linux-traffic-controller-linux-tc-hi... Там чувак говорит, что дело в параметре txqueue интерфейса. Но я пробовал его менять - безрезультатно.

Конфигурация шлюза: Centos 6.9, kernel: 2.6.32

 , ,

Mirraz
()

Фильтрация X-клиентов

Как запретить всем юзерам, кроме нескольких определённых, коннектиться к X-серверу?

 

Mirraz
()

2 интерфейса, iptables & ip route

В системе есть 2 интерфейса. Пытаюсь настроить iptables & ip route так, чтобы основной трафик (от локальных приложений) ходил через один интерфейс, а трафик некого класса (пусть пока ICMP) — через другой с помощью этого скрипта:

IF_INET1="interface 1"
IP_INET1="ip address 1"
IF_INET2="interface 2"		# default

# iptables clean
iptables -F
iptables -F -t nat
iptables -F -t raw
iptables -F -t mangle
iptables -F -t filter
iptables -X

# create ip route table T1 (if it's not created yet)
RT_TABLES=/etc/iproute2/rt_tables
if ! cat $RT_TABLES | grep '101 T1' 1>/dev/null 2>&1; then
	echo 101 T1 >> $RT_TABLES
fi

# ip route clean
ip route flush table T1
while ip rule list | grep 'lookup T1' 1>/dev/null 2>&1; do
	ip rule del table T1
done

# iptables
iptables -t mangle -A OUTPUT -p icmp -j MARK --set-mark 10
iptables -t nat -A POSTROUTING -o $IF_INET1 -j SNAT --to-source $IP_INET1

# ip route
ip route add default dev $IF_INET1 table T1
ip rule add fwmark 10 table T1
ip route add default dev $IF_INET2
ip route flush cache

Запускаю пинг. Пинги не идут. Сниффер показывает нормальный обмен пинг-запросами и пинг-ответами. Пинг-ответы не доходят до локальных приложений, они дропаются между таблицами mangle и nat в PREROUTING. Возможно SNAT не хочет нормально работать, но почему? Или проблема в чём-то ещё?

Mirraz
()

OpenVPN, tap и ARP

Настраиваю клиента OpenVPN. Как виртуальное сетевое устройство используется tap (переделать с tun нельзя). Настраиваю default route на tap-интерфейс. Немного посидев в сети, вижу: таблица ARP переполнена записями о различных IP-шниках с одинаковыми MAC-ами (этот MAC - серверный конец туннеля tap-tap).
Вопрос: как усмирить ARP?
Решение увеличить размер ARP-таблицы не устраивает, ибо какой смысл заполнять таблицу ненужными записями с одинаковыми MAC-ами. Может поколдовать с NAT-ом или с IFB-интерфейсом?

Mirraz
()

Запуск приложения при выходе из системы

Как сделать, чтобы некоторое приложение запускалось при выходе пользователя из системы. Для запуска приложений при входе вроде есть файл ~/.profile , а как запустить при выходе - непонятно.

Mirraz
()

Виртуальный CD/DVD-RW привод

Есть ли под linux программа для эмуляции CD/DVD-RW привода с возможностью записи.
Т.е. я создаю на диске пустой файл, который в роли виртуального компакт-диска как бы вставляю в виртуальный CD/DVD-RW привод, пишу в этот виртуальный привод, а на самом деле информация сбрасывается в файл (но не просто iso-файл, а полный побайтовый слепок, ибо в iso, например, не запихнуть AudioCD).
Под Windows у меня была софтина VirtualCD, полностью меня устраивавшая. Под linux уже пол дня не могу найти. Пробовал cdemu - вроде в него нельзя писать.
На вопросы, зачем мне это надо, отвечать принципиально не буду. Есть определённая проблема, прошу подсказать путь её решения.

Mirraz
()

google не грузится через pptp

Решил перейти с Network-Manager на pptp (ибо NM не хочет переподключаться при обрыве). Но тут возникла непонятная проблема: всё грузится... кроме google! Почему-то теряются TCP-пакеты.
Например, мной принимается пакет с Sequence_number=1, Next_sequence_number=1366, а потом сразу пакет с Sequence_number=4232, Next_sequence_number=5098, после этого мой интерфейс спокойно повторно высылает пакет с Acknowledgement_number=1366, но ответа вообще никакого не приходит. Либо вообще всё стопарится после моего «GET / HTTP...» и серверского TCP-ACK (к этому через минуту приходит пакет опять из середины).
Но самое странное: это происходит только с гугловскими адресами 74.125.232.* и с pptp (через NM всё отлично работает, настройки pptp такие же, как и у NM, таблица маршрутизации такая же, как при использовании NM; через любую проксю всё тоже отлично работает).
Кто может ответить на вопрос: Что за фигня!

PS: а ещё не грузятся файлы с dropbox (dl.dropbox.com)
PPS: хоть и не в этом дело, но всё же приведу настройки pptp:
# cat /etc/ppp/peers/VPN
pty «/usr/sbin/pptp --loglevel 1 10.8.5.254 --nolaunchpppd»
kdebug 0
lock
noauth
refuse-pap
defaultroute
replacedefaultroute
usepeerdns
persist
name «@@@@»
remotename VPN
linkname VPN
ipparam VPN

Mirraz
()

RSS подписка на новые темы