Формирование трафика: фильтр tc присоединяется к классу HTB?

Ваши первые два правила поражают его в первый раз и затем выполняют дополнительный запрос (из-за 301), который поразит третий RewriteRule в возвращение. Попробуйте этого вместо этого: Я добавил исключение для Вашего пути "контроля":

# enable mod_rewrite
RewriteEngine on

# define the base url for accessing this folder
RewriteBase /

# Enforce http and https for certain pages
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/(en|fr)/(customer|checkout)(.*)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(en|fr)/(customer|checkout)(.*)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(en|fr)/(customer|checkout)(.*)$ [NC]
RewriteRule ^(.*)$ index.php?query=$1 [L,QSA]

Надежда, которая помогает!

4
задан 12 October 2011 в 02:31
2 ответа

Если возможно, мы используем:

/sbin/tc qdisc add dev $DEV root handle 1: htb default 1
/sbin/tc class add dev $DEV parent 1: classid 1:3 htb rate $RATE burst $BURST
/sbin/tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 match ip src $IP flowid 1:3

Третья строка присоединяет фильтр к классу, определенному во второй строке ( classid 1: 3 и flowid 1: 3 ).

2
ответ дан 3 December 2019 в 03:47

Возможно. Я считаю, что tc (8) man не является исчерпывающим.

Цитирование из man7.org/tc (8) :

tc filters
Если к классу прикреплены tc-фильтры, с ними консультируются сначала для получения соответствующих инструкций. Фильтры могут соответствовать всем поля заголовка пакета, а также на отметке межсетевого экрана применяется ipchains или iptables.

Только что проверил на моем ноутбуке Linux 5.0.3-zen1-2-zen, и он работает.

lang-bash
sudo tc qdisc add dev enp3s0 root handle 1: htb default 10
# inner class
sudo tc class add dev enp3s0 parent 1: classid 1:1 htb rate 100kbps
# leaf classes
sudo tc class add dev enp3s0 parent 1:1 classid 1:10 htb rate 100kbps
sudo tc class add dev enp3s0 parent 1:1 classid 1:20 htb rate 100kbps
sudo tc class add dev enp3s0 parent 1:1 classid 1:30 htb rate 100kbps

sudo tc filter add dev enp3s0 parent 1: protocol ip matchall flowid 1:1
sudo tc filter add dev enp3s0 parent 1:1 u32 match ip dst 192.168.1.6 flowid 1:30

ping -c1 192.168.1.6
ping -c2 192.168.1.1
sudo tc -s -g class show dev enp3s0 
sudo tc -s filter show dev enp3s0 parent 1:
sudo tc -s filter show dev enp3s0 parent 1:1

Родителем первого фильтра является qdisc, и он устанавливает для flowid внутренний класс 1: 1 . Родителем второго фильтра является внутренний класс 1: 1 , и он выносит окончательный вердикт по выбору конечного класса 1:30

Вывод последних 3 команд:

$ sudo tc -s -g class show dev enp3s0 
+---(1:1) htb rate 800Kbit ceil 800Kbit burst 1600b cburst 1600b 
     |    Sent 294 bytes 3 pkt (dropped 0, overlimits 0 requeues 0) 
     |    backlog 0b 0p requeues 0
     |
     +---(1:10) htb prio 0 rate 800Kbit ceil 800Kbit burst 1600b cburst 1600b 
     |          Sent 196 bytes 2 pkt (dropped 0, overlimits 0 requeues 0) 
     |          backlog 0b 0p requeues 0
     |     
     +---(1:20) htb prio 0 rate 800Kbit ceil 800Kbit burst 1600b cburst 1600b 
     |          Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
     |          backlog 0b 0p requeues 0
     |     
     +---(1:30) htb prio 0 rate 800Kbit ceil 800Kbit burst 1600b cburst 1600b 
                Sent 98 bytes 1 pkt (dropped 0, overlimits 0 requeues 0) 
                backlog 0b 0p requeues 0


$ sudo tc -s filter show dev enp3s0 parent 1:
filter protocol ip pref 49152 matchall chain 0 
filter protocol ip pref 49152 matchall chain 0 handle 0x1 flowid 1:1 
  not_in_hw
$ sudo tc -s filter show dev enp3s0 parent 1:1
filter protocol all pref 49152 u32 chain 0 
filter protocol all pref 49152 u32 chain 0 fh 800: ht divisor 1 
filter protocol all pref 49152 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:30 not_in_hw  (rule hit 3 success 1)
  match c0a80106/ffffffff at 16 (success 1 ) 

See: resulting qdisc represented as graph

Примечание: Для создания фильтров порожденный при работе внутреннего класса, на внутренний класс следует ссылаться (с classid или flowid ) фильтрами из внутреннего класса верхнего уровня или qdisc, т.е. сохранить цепочку qdisc --filter- -> внутренний класс --filter -> листовой класс .

Также убедитесь, что для htb по умолчанию задан конечный класс.

1
ответ дан 3 December 2019 в 03:47

Теги

Похожие вопросы