Назад | Перейти на главную страницу

Отключить ALTQ для внутреннего сетевого трафика

В настоящее время в моей локальной сети установлен медиа-сервер FreeBSD 8.2, который я использую для потоковой передачи музыки.

У меня также есть логин SSH, который я использую для удаленной передачи файлов на этот сервер и с него. Я хотел бы настроить ALTQ (и заставить это работать), чтобы ограничить исходящую полосу пропускания с сервера для трафика SSH. Однако такая настройка ALTQ также ограничивает мой внутренний трафик (и, таким образом, мешает потоковой передаче музыки), поскольку я использую только один сетевой интерфейс.

Может ли кто-нибудь показать мне, как я бы использовал PF и ALTQ для ограничения исходящего трафика WAN, позволяя беспрепятственно проходить всему внутреннему трафику LAN?

ext_if="eth0"
int_if="eth0"

altq on eth0 cbq bandwidth 1Mb queue { std, ssh }

queue std bandwidth 80% cbq(default)
queue ssh bandwidth 20% cbq(ecn)

pass out on eth0 proto tcp to port 22 queue ssh

eth0 - это мой интерфейс LAN, моя общая пропускная способность WAN на моем кабельном соединении составляет 1 Мбит / с, а моя внутренняя сеть - 10/100.

Изменить: возможно, будет более понятно, если я проиллюстрирую свою сеть:

В моей сети всего четыре машины, все подключенные к стандартному беспроводному маршрутизатору (на нем еще нет dd-wrt или чего-либо еще): 1) XBMC-бокс, которому требуется доступ к Wi-Fi 2) Обычный настольный ПК с Windows 3) Ноутбук, который хочет беспроводной доступ к межсетевому экрану 4) Файловый сервер, на котором запущен freebsd с 1 сетевой картой, которую необходимо ограничить.

На файловом сервере есть одна сетевая карта. Все, что мне действительно нужно сделать, это ограничить общую исходящую полосу пропускания в WAN на моем файловом сервере до произвольного процента от моего общего широкополосного соединения без применения тех же ограничений для передачи файлов по локальной сети. Для этого мне действительно нужен PF, чтобы иметь возможность отличать пакеты, предназначенные для LAN, от пакетов, предназначенных для WAN.

Изменить: это то, с чем я работал в последнее время, но, похоже, он неправильно помещает вещи в очередь WAN:

my_net = 192.168.0.0/24

altq on eth0 cbq bandwidth 100Mb queue { wan, lan }

queue lan bandwidth 99500Kb cbq(default) 
queue wan bandwidth 500Kb cbq(ecn) 

pass out on eth0 from any to !$my_net queue lan

Ваши правила в основном разумны, но недостаточно конкретны - у вас есть один интерфейс (это не ваш брандмауэр, верно?), Поэтому вы хотите ограничить содержимое, которое вы назначаете очереди «SSH», по месту назначения. Например:

my_net=10.0.0.0/8
pass out on eth0 proto tcp from any to !$my_net port 22 queue ssh

Вы также можете рассмотреть две другие вещи:

  • Добавьте «заимствовать» в очередь «std», чтобы у вас было больше скорости для других вещей, когда SSH не отнимает пропускную способность
  • Если потоковая передача - действительно важная функция, вы можете изменить свою логику
    (создайте «музыкальную» очередь, которая резервирует полосу пропускания, необходимую для обеспечения надежной потоковой передачи, а все остальное пусть борется за остаток.)