Расставьте приоритеты трафика с компьютеров локальной сети

Я использую торрент-клиент на моем безголовом сервере Ubuntu. Также к этому серверу подключено несколько компьютеров, которые используются в качестве интернет-шлюза / маршрутизатора. Вопрос в том, можно ли настроить iptables для определения приоритетности трафика из eth1 (lan if) над локальным трафиком, генерируемым сервером? Что-то вроде QOS ..

7
задан 10 January 2014 в 00:51

3 ответа

Есть несколько альтернатив для достижения того, что вы ищете. Но в первую очередь, да, это возможно. Хотя многие возможности довольно сложны.

Одним из самых простых вариантов может быть запуск демона torrent под собственным пользователем \ группой. Затем используйте iptables, чтобы пометить весь трафик от этого пользователя \ группы флагом. Затем позвольте фильтру tc установить этот флаг и поместить его в очередь с низким приоритетом. Посмотрите на нижнюю часть этой вики для идеи.

Для того, что вы спрашиваете, вам нужны только две очереди ( рис. 1. ), одна с низким приоритетом и одна с высоким. Хотя может быть лучше придерживаться чего-то ближе к этому примеру . Вы можете приспособить пример к вашим потребностям, просто отбросьте деталь с помощью nat и установите значение метки по умолчанию ниже значения, которое вы будете использовать для трафика, генерируемого демоном.

Так что для моего предложения вы можете использовать что-то вроде iptables -A OUTPUT -t mangle -m owner --uid-owner ZZZZ -j MARK --set-mark 6 ZZZZ - это идентификатор пользователя.

Альтернативой для установки флага может быть использование iptables -A OUTPUT -t mangle -m owner --uid-owner ZZZZ -j CLASSIFY --set-class X:Y, где X и Y - идентификатор класса, а ZZZZ - идентификатор пользователя.

Рис. 1:

+---------+
| root 1: |
+---------+
     |
+------------+
| class 1:1  |
+------------+
  |      |    
+----+ +----+ 
|1:10| |1:11| 
+----+ +----+

Лучше всего иметь лист для каждой метки fw. Но мой лучший совет - прочитайте и постарайтесь понять приведенный выше пример , чтобы адаптировать его к вашим потребностям. Если у вас есть какие-либо вопросы, добавьте их.

В примере, упомянутом выше , важно, чтобы вы понимали эту часть ( рис. 2. ), когда хотите написать правила iptables для маркировки или классификации трафика. Для краткого объяснения этого с немного отличающейся диаграммой взгляда посмотрите на это .

Рис. 2:

First you have to understand how packet traverse the filters with iptables:

        +------------+                +---------+               +-------------+
Packet -| PREROUTING |--- routing-----| FORWARD |-------+-------| POSTROUTING |- Packets
input   +------------+    decision    +---------+       |       +-------------+    out
                             |                          |
                        +-------+                    +--------+   
                        | INPUT |---- Local process -| OUTPUT |
                        +-------+                    +--------+

Это укажет вам правильное направление:

Правила, руководства и подходы

Linux Advanced Routing & amp; HOWTO по управлению трафиком: ограничение скорости одного хоста или сетевой маски

Путешествие по управлению трафиком: сценарии реального мира

Учебное пособие по Iptables 1.2.2 ]

0
ответ дан 10 January 2014 в 00:51

Качество обслуживания - довольно сложная тема - ссылка, размещенная @ anders-f-u-kiaer, возможно, является лучшим решением, но довольно сложным. Я совсем не эксперт в этом, поэтому я не буду комментировать.

Тем не менее, часто более простое решение может быть удобным. Если вы хотите просто ограничить пропускную способность для одной программы (например, торрент-клиента), гораздо более простое решение использует trickle (1).

Вы можете установить его с помощью

sudo apt-get install trickle 

, а затем запустить программу с

trickle -d 100 -u 50 program 

, и program будет иметь пропускную способность, превышающую 100 кбит / с для загрузки. и 50 кбит / с для загрузки. На этой странице на tuxradar можно найти намного больше опций и информации о trickle: управляйте своей пропускной способностью с помощью trickle .

(1) Это отличается от надлежащего QoS: полоса пропускания, используемая «урезанной» программой, будет уменьшаться каждый раз, а не только тогда, когда есть потребность в услугах с более высоким приоритетом, как это будет происходить с надлежащим QoS.

0
ответ дан 10 January 2014 в 00:51

Вы не делаете это с iptables. Вам нужно изменить метрики маршрутизации.

Установка метрик маршрутизации для сетевого интерфейса & mdash; Каталог приложений Ubuntu

Чтобы дать всем другим интерфейсам более высокий приоритет, чем у wlan0, просто запустите:

ifmetric wlan0 1

Для сброса метрик маршрутов, подключенных к wlan0, просто запустите:

 ifmetric wlan0 0

подробнее здесь: http://0pointer.de/lennart/projects/ifmetric/

0
ответ дан 10 January 2014 в 00:51

Другие вопросы по тегам:

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